Image harmonization with MODIS (BRDF correction)
From Open Foris Wiki
This example illustrates BRDF-correction of Landsat imagery using BRDF-Adjusted Reflectance MODIS product.
The Modis bands corresponding with the LS ones as follows:
|Modis, nm||Landsat, nm|
|B1: 620 - 670||B3: 630 - 690|
|B2: 841 - 876||B4: 760 - 900|
|B3: 459 - 479||B1: 450 - 520|
|B4: 545 - 565||B2: 520 - 600|
|B5: 1230 - 1250||None|
|B6: 1628 - 1652||B5: 1550 - 1750|
|B7: 2105 - 2155||B7: 2080 - 2350|
To go through this exercise, please follow the following steps:
- Select a atmospherically corrected LEDAPS output of your Landsat image (hdf file). Then download a BRDF adjusted MODIS for the same location choosing an acquisition date which is as close as possible to the acquisition date of your Landsat image. You'll find MODIS images from e.g. GloVis. These MODIS images are named MCD43A4 in the Collection/Modis combined.
- Note, that you need MODIS cover for your whole Landsat scene. Therefore, you may need to download several of them and merge them into a MODIS mosaic with MODIS Re-projection tool or gdal_merge.py.
- Run script stack_modis_ls_brdf.bash to produce a 12 band input image for the oft-gapfill. This script also produces two NDVI images and three masks. The idea of the masks is to reject unqualified pixels from the brdf-correction models. Accepted pixels are such, where the Modis image and Landsat image correspond as well as possible. It is assumed, that in such areas, there should be no change. Thus, pixels with high NDVI in both images are used. Also, the larger these areas, the more likely it is that both images describe the same landscape element. The masks are 1) one with Landsat clouds, shadows etc (from Ledaps QA), 2) one using the produced NDVI bands and the given threshold (here 0.3) in addition to the basic mask criteria (1), and, 3) one where only such pixels are accepted where the Landsat NDVI has small variation within the 500 x 500 m MODIS pixels.
stack_modis_ls_brdf.bash landsat.hdf modis.hdf 0.3For example, for a folder LT51700662009194JSA00 containing the LEDAPS corrected files, the following 12-band image and masks are produced:
- mask500m_lndsr.L5169066_06620090706_ndvi_threshold.img, See excerpts of there masks at the bottom of the page.
- Both of the two NDVI masks can be used to guide the oft-gapfill, but we recommend using the last one (named mask500m..).
- An example of the accepted and rejected pixels in using the 500-m mask is given in the next scatter-plot:
- Add more clouds and cloud shadows to the mask when needed from self-digitized shapefile(s) with oft-combine-masks.bash :
oft-combine-masks.bash mask500m_lndsr.L5169066_06620090706_ndvi_threshold.img clouds.shp 2
- Use program oft-gapfill to perform the brdf correction:
oft-gapfill -la 4 -nolocal -pm -da -sd 5 -smooth -um combined_mask.img modis_ls_stack.img brdf_out.img
- Repeat the same process to a neighbouring image
- Evaluate the outputs visually in QGIS (atmospherically corrected imagery vs. brdf-corrected imagery) or by using script oft-compare_overlap.bash
An example with images LT51690662009187JSA00 and LT51700662009194JSA00 is illustrated below. All images are a compositing of two (ca 500 x 500 pix) adjacent images. If you focus a bit left from the centreline of the images, you will see slight illumination differences between the left and right portions of the images. In the "original" the effect is relatively strong, but in the "Surface reflectance" and "BRDF corrected" images it is barely visible. The values under the images present correlation of the images' pixel values in the overlapping area for each of the images.
|Base mask from Ledaps||NDVI thresholded||Homogeneous areas under modis pixels required|