diff --git a/algorithm_catalog/vito/parcel_delineation/images/header.png b/algorithm_catalog/vito/parcel_delineation/images/header.png new file mode 100644 index 0000000..9984795 Binary files /dev/null and b/algorithm_catalog/vito/parcel_delineation/images/header.png differ diff --git a/algorithm_catalog/vito/parcel_delineation/images/preview_1.jpg b/algorithm_catalog/vito/parcel_delineation/images/preview_1.jpg new file mode 100644 index 0000000..1a60850 Binary files /dev/null and b/algorithm_catalog/vito/parcel_delineation/images/preview_1.jpg differ diff --git a/algorithm_catalog/vito/parcel_delineation/images/preview_2.jpg b/algorithm_catalog/vito/parcel_delineation/images/preview_2.jpg new file mode 100644 index 0000000..cfdee46 Binary files /dev/null and b/algorithm_catalog/vito/parcel_delineation/images/preview_2.jpg differ diff --git a/algorithm_catalog/vito/parcel_delineation/openeo_udp/README.md b/algorithm_catalog/vito/parcel_delineation/openeo_udp/README.md index 579b0a7..d901548 100644 --- a/algorithm_catalog/vito/parcel_delineation/openeo_udp/README.md +++ b/algorithm_catalog/vito/parcel_delineation/openeo_udp/README.md @@ -1,4 +1,20 @@ -# Parcel delineation -This is an [openEO](https://openeo.org/) example for delineating agricultural parcels based on a neural network, using Sentinel-2 input data. +# Parcel Delineation +Parcel delineation refers to the identification and marking of agricultural boundaries. +This process is *essential* for tasks such as crop yield estimation and land management. +Accurate delineation also aids in classifying crop types and managing farmland more effectively. + +## Algorithm for Parcel Delineation Using Sentinel-2 Data -[VITO Remote Sensing](https://remotesensing.vito.be) +This algorithm performs parcel delineation using Sentinel-2 data and a pre-trained`U-Net machine learning model. The process involves the following steps: +1. **Pre-processing Sentinel-2 Data:** + 1. Filter data to ensure a maximum of 10% cloud coverage. + 2. Apply a cloud mask based on the SCL layer. +2. **Compute NDVI:** + 1. The Normalized Difference Vegetation Index (NDVI) is calculated from the pre-processed data. + 2. The NDVI serves as input to the U-Net model. +3. **Predict Delineation:** + 1. The U-Net model predicts parcel delineation boundaries. +4. **Optimization and Labeling:** + 1. Apply a Sobel filter to enhance edge detection. + 2. Use Felzenszwalb's algorithm for segmentation and labeling of delineated parcels. + \ No newline at end of file diff --git a/algorithm_catalog/vito/parcel_delineation/openeo_udp/generate.py b/algorithm_catalog/vito/parcel_delineation/openeo_udp/generate.py index e6d3cf3..2eaf783 100644 --- a/algorithm_catalog/vito/parcel_delineation/openeo_udp/generate.py +++ b/algorithm_catalog/vito/parcel_delineation/openeo_udp/generate.py @@ -85,7 +85,7 @@ def generate() -> dict: process_graph=sobel_felzenszwalb, process_id="parcel_delineation", summary="Parcel delineation using Sentinel-2 data retrieved from the CDSE and processed on openEO.", - description="Parcel delineation using Sentinel-2", + description= (Path(__file__).parent / "README.md").read_text(), parameters=[spatial_extent, temporal_extent], default_job_options=job_options, ) diff --git a/algorithm_catalog/vito/parcel_delineation/openeo_udp/parcel_delineation.json b/algorithm_catalog/vito/parcel_delineation/openeo_udp/parcel_delineation.json index 3338e28..75249db 100644 --- a/algorithm_catalog/vito/parcel_delineation/openeo_udp/parcel_delineation.json +++ b/algorithm_catalog/vito/parcel_delineation/openeo_udp/parcel_delineation.json @@ -207,7 +207,7 @@ }, "id": "parcel_delineation", "summary": "Parcel delineation using Sentinel-2 data retrieved from the CDSE and processed on openEO.", - "description": "Parcel delineation using Sentinel-2", + "description": "# Parcel Delineation\nParcel delineation refers to the identification and marking of agricultural boundaries. \nThis process is *essential* for tasks such as crop yield estimation and land management. \nAccurate delineation also aids in classifying crop types and managing farmland more effectively.\n \n## Algorithm for Parcel Delineation Using Sentinel-2 Data \n\nThis algorithm performs parcel delineation using Sentinel-2 data and a pre-trained`U-Net machine learning model. The process involves the following steps:\n1. **Pre-processing Sentinel-2 Data:**\n 1. Filter data to ensure a maximum of 10% cloud coverage. \n 2. Apply a cloud mask based on the SCL layer. \n2. **Compute NDVI:**\n 1. The Normalized Difference Vegetation Index (NDVI) is calculated from the pre-processed data.\n 2. The NDVI serves as input to the U-Net model. \n3. **Predict Delineation:**\n 1. The U-Net model predicts parcel delineation boundaries. \n4. **Optimization and Labeling:**\n 1. Apply a Sobel filter to enhance edge detection. \n 2. Use Felzenszwalb's algorithm for segmentation and labeling of delineated parcels.\n ", "default_job_options": { "udf-dependency-archives": [ "https://artifactory.vgt.vito.be/auxdata-public/openeo/onnx_dependencies.zip#onnx_deps", diff --git a/algorithm_catalog/vito/parcel_delineation/records/parcel_delineation.json b/algorithm_catalog/vito/parcel_delineation/records/parcel_delineation.json index 97c3371..423a195 100644 --- a/algorithm_catalog/vito/parcel_delineation/records/parcel_delineation.json +++ b/algorithm_catalog/vito/parcel_delineation/records/parcel_delineation.json @@ -2,15 +2,15 @@ "id": "parcel_delineation", "type": "Feature", "conformsTo": [ - "http://www.opengis.net/spec/ogcapi-records-1/1.0/req/record-core", - "https://apex.esa.int/core/openeo-udp" + "http://www.opengis.net/spec/ogcapi-records-1/1.0/req/record-core", + "https://apex.esa.int/core/openeo-udp" ], "geometry": null, "properties": { "created": "2025-06-02T00:00:00Z", "updated": "2025-06-02T00:00:00Z", "type": "service", - "title": "Parcel Delination based on ML using Sentinal-2", + "title": "Parcel Delineation based on ML using Sentinel-2", "description": "An openEO process example for delineating agricultural parcels based on ML using Sentinel-2 data.", "cost_estimate": 0.11, "cost_unit": "platform credits per km²", @@ -91,7 +91,7 @@ "rel": "application", "type": "application/vnd.openeo+json;type=process", "title": "openEO Process Definition", - "href": "https://raw.githubusercontent.com/ESA-APEx/apex_algorithms/4edc975de279d2800e5d5367032340090d554761/algorithm_catalog/vito/parcel_delineation/openeo_udp/parcel_delineation.json" + "href": "https://raw.githubusercontent.com/ESA-APEx/apex_algorithms/4edc975de279d2800e5d5367032340090d554761/algorithm_catalog/vito/parcel_delineation/openeo_udp/parcel_delineation.json" }, { "rel": "code", @@ -110,6 +110,24 @@ "type": "text/html", "title": "OpenEO Web Editor", "href": "https://editor.openeo.org/?wizard=UDP&wizard~process=parceldelination&wizard~processUrl=https://raw.githubusercontent.com/ESA-APEx/apex_algorithms/4edc975de279d2800e5d5367032340090d554761/algorithm_catalog/vito/parcel_delineation/openeo_udp/parcel_delineation.json&server=https://openeo.dataspace.copernicus.eu" + }, + { + "rel": "thumbnail", + "type": "image/png", + "title": "Thumbnail image", + "href": "https://raw.githubusercontent.com/ESA-APEx/apex_algorithms/refs/heads/main/algorithm_catalog/vito/parcel_delineation/images/header.png" + }, + { + "rel": "preview", + "type": "image/jpeg", + "title": "Parcel Delineation", + "href": "https://raw.githubusercontent.com/ESA-APEx/apex_algorithms/refs/heads/main/algorithm_catalog/vito/parcel_delineation/images/preview_1.jpg" + }, + { + "rel": "preview", + "type": "image/jpeg", + "title": "Parcel Delineation - Filtered", + "href": "https://raw.githubusercontent.com/ESA-APEx/apex_algorithms/refs/heads/main/algorithm_catalog/vito/parcel_delineation/images/preview_2.jpg" } ] -} +} \ No newline at end of file