Satellite Image Processing, Feature Extraction using Python on level 2A Sentinel 2 satellite imagery to enhance water bodies.
This is an explortion of automatic feature detection in satellite imagery, using Python and the opensource remote sensing available in Python. Rasterio, Geospatial Data Abstraction Library, geopandas, shapely are some of the many such libraries which are used in the development of this model.
This is a detailed study in itself, with the overall objective of comparing the nature of water bodies and the surrounding areas using various water quality indices, and finally conclude the behaviour of each index.
Further, the sub-objectives are as listed below:
This is a partly inland water body located towards the North Eastern India, which is amongst world’s largest brackish lagoons. It also happens to be one of the most frequent hub for Cyanoblooms.
Famously known as Florida’s Inland Sea, this is the largest freshwater lake in Florida and is exceptionally shallow for its size. This site also happens to be one of the most frequent hubs for algal blooms world-wide, after the Utah lake.
For this study, level 2 images from Sentinel 2A were used. The Copernicus Mission is open-source and provides the latest captures for civil use on their Open Data Hub (Copernicus DHUS).
A python API for this platform is also available, which allows users to query the database and download products within the python script itself.
The feature extraction kernel for water body detection in the satelite imagery outputs a single band satellite image with hues from black through white, with the most probable pixels for water bodies with higher DN values, hence highlighting them as very bright features and the rest in a darker hue.
For this study, the Landsat 8 images for the same regions were used for which level 2 correction was to be performed. Following images for the NDWI indices for water content and leaf moisture content is calculated and generated:
Converted the TIFF file corrosponding to the interested intex into a gray scale image
Plotted the graph of number of pixels Vs. gray scale to find the value of the threshold
Generated the binary image with respect to the threshold obtained in the prevoius step
Algorithm for Spectral Modulation:
LS8_TM_swir_waterChilikha for Chilikha,Orissa
<img src=”misc/spectral_modulation_landsat8/LS8_TM_swir_waterChilikha.PNG” width=”400”>
LS8_TM_all_classesChilikha for Chilikha, Orissa
<img src=”misc/spectral_modulation_landsat8/LS8_TM_all_classesChilikha.PNG” width=”400”>
LS8_TM_swir_waterOkeechobe for Okeechobe,Florida US
<img src=”misc/spectral_modulation_landsat8/LS8_TM_swir_waterOkeechobe.PNG” width=”400”>
Sentinel2A_TM_swir_waterChilikha for Chilikha,Orissa
<img src=”misc/spectral_modulation_sentinel2A/Sentinel2A_TM_swir_waterChilikha_Sentinel.png” width=”400”>
Sentinel2A_TM_all_classesChilikha for Chilikha, Orissa
<img src=”misc/spectral_modulation_sentinel2A/Sentinel2A_TM_all_classesChilikha_Sentinel.png” width=”400”>
Sentinel2A_TM_swir_waterOkeechobe for Okeechobe,Florida US
<img src=”misc/spectral_modulation_sentinel2A/Sentinel2A_TM_swir_waterOkeechobe_Sentinel.png” width=”400”>
Sentinel2A_TM_all_classesOkeechobe for Okeechobe, Florida US
<img src=”misc/spectral_modulation_sentinel2A/Sentinel2A_TM_all_classesOkeechobe_Sentinel.png” width=”400”>
Please feel free to raise issues and fix any existing ones. Further details can be found in our code of conduct.
Bo-cai Gao, NDWI—A normalized difference water index for remote sensing of vegetation liquid water from space, Remote Sensing of Environment, Volume 58, Issue 3, 1996, Pages 257-266.
T J Malthus, A G Dekker, First Derivative Indices for the Remote Sensing of Inland Water Quality using High Spectral Resolution Reflectance, Environment International, Volume 22, Issue 2, 1995, Pages 221-232.
Also, a shoutout to Abdishakur and shakasom for great online references and tutorials on the opensource remote sensing libraries available in the Python community.