Application Tips for ENVI 5 – Using FLAASH for atmospheric correction of airborne hyperspectral data

This is part of a series on tips for getting the most out of your geospatial applications. Check back regularly or follow HySpeed Computing to see the latest examples and demonstrations.

Objective: Utilize the FLAASH Atmospheric Correction tool in ENVI for correction of airborne hyperspectral data.

About FLAASH (from ENVI documentation): “FLAASH [Fast Line-of-sight Atmospheric Analysis of Hypercubes] is a first-principles atmospheric correction tool that corrects wavelengths in the visible through near-infrared and shortwave infrared regions, up to 3 µm. FLAASH works with most hyperspectral and multispectral sensors.”

Puerto_Rico_AISA_RGB

RGB composite of AISA Eagle data for coastal region in southwest Puerto Rico

Scenario: This tip demonstrates the steps used to perform atmospheric correction using FLAASH for airborne data acquired in southwest Puerto Rico using an AISA Eagle VNIR II Hyperspectral Imaging Sensor. Data covers the spectral range 400-970 nm, with 128 spectral bands at ~5 nm spectral resolution, and with a 2 m ground sampling distance.

The Tip: Below are steps used to implement FLAASH for the example AISA data:

  • Note that the settings used below were selected to work best for this example, and different values may be more appropriate for your particular application. For more details on running FLAASH, please refer to the ENVI documentation, which includes an excellent step-by-step overview of using FLAASH, as well as a tutorial using AVIRIS data that demonstrates FLAASH.
  • Prior to starting FLAASH, the first step is to perform radiometric calibration and make sure the data is in the appropriate format, specifically: radiance data; BIL or BIP; floating point, long integer or integer; and units of uW/(cm^2 * sr * nm). This can be easily achieved using the “Radiometric Calibration” tool and selecting the option to “Apply FLAASH Settings”.
  • The “Radiometric Calibration” tool requires data file have gains and offsets for each band. Additionally, the tool expects input units of W/(m^2 * sr * um), so depending on the units of your data you may need to manually edit the gain and offset information in your header data. For instance, the uncorrected AISA data in our example has units of 1000*mW/(cm^2 * sr *um), which is equivalent to 100*W/(m^2 * sr * um). This means the gain for each band is 0.01 (i.e., 1/100) and the offset is 0.0.
  • If you suspect the gains and offsets are not correct for your data, then be sure to check the output data from FLAASH to confirm reflectance values fall within acceptable limits. For instance, if we incorrectly set the gain equal to 0.1 in our example the resulting reflectance values are substantially higher than feasible (e.g., greater than 100% reflectance for bright targets), and if we set the gain equal to 0.001 the reflectance values are substantially lower (e.g., producing negative values for most targets).
  • To start the “Radiometric Calibration” tool, select “Radiometric Correction > Radiometric Calibration” in the Toolbox and choose the appropriate input file. In the dialog window that appears, select “Apply FLAASH Settings”, assign an output filename, and then hit “Ok” to run the correction. Once the process is completed, your data is now ready for input to FLAASH.

ENVI_radiometric_calibration

  • To start FLAASH, select “Radiometric Correction > Atmospheric Correction Module > FLAASH Atmospheric Correction” from the Toolbox. This will launch the main dialog window for entering FLAASH parameters.
  • Begin by selecting the appropriate Input Radiance File (i.e., the output from the radiometric correction). At this point a dialog window will open for selecting the “Radiance Scale Factors”. If you used the “Radiometric Calibration” tool for preparing your data, as above, then simply select “Use single scale factor for all bands” and leave the “Single scale factor” equal to 1.0.

FLAASH_radiometric_scale_factors

  • The next step is to assign a filename for the “Output Reflectance File” (the main output file), a directory for the “Output Directory for FLAASH Files” (the directory for all ancillary output files), and a name for the “Rootname for FLAASH Files” (used for naming the ancillary files).
  • Now enter all of the relevant sensor and scene specific information: date and time of acquisition, altitude of sensor, ground elevation, center latitude and longitude, and pixel size.
  • The next step is to select options for the atmospheric model, water retrieval, aerosol model, aerosol retrieval, visibility, spectral polishing and wavelength recalibration. Details for all of these options are provided in the FLAASH documentation. In our example, we use the Tropical atmospheric and Maritime aerosol models (both appropriate for coastal Puerto Rico), the 820 nm water absorption feature for water retrieval, no aerosol retrieval (this data doesn’t have the necessary wavelength bands to run these calculations), 40 km initial visibility, spectral polishing with a width of 3 bands, and no wavelength recalibration.

FLAASH_input

  • In the Advanced settings we leave most parameters set to the default values, with the exception of “Use Tiled Processing”, which we set to “No”. See FLAASH documentation for more details on these various parameters. Note here that the default units for the output data is surface reflectance scaled by 10000, but this can be changed if desired.

FLAASH_advanced

  • Before running FLAASH, you can “Save…” the input parameters to a file for use in future runs, or alternatively, in the “Advanced Settings” there is an option to “Automatically Save Template File”, which can also be used to save the input parameters to a file.
  • When you are ready, execute FLAASH by clicking “Apply”.
  • Note that errors will sometimes occur, causing FLAASH to cancel the correction process. This can result from incompatibilities between the selected processing options and certain data characteristics. For example, the above data produces an error when using image tiling, but runs fine when tiling is disabled; whereas tiling works perfectly well for other datasets. So if this happens, try adjusting the FLAASH settings and re-running the correction.
  • Once FLAASH has completed, be sure to examine your output data for acceptability, and ideally, if available, utilize measured field data to validate the atmospheric correction output.

Acknowledgement: Data was collected for the University of Puerto Rico at Mayaguez by the Galileo Group Inc. in 2013 for a NASA EPSCoR sponsored research project on the biodiversity of coastal and terrestrial ecosystems.

Advertisements