Notes on Optimized Spectral Unmixing Software
This section highlights some development features of a linear/nonlinear endmember unmixing program for hyperspectral airborne images such as collected by AVIRIS and SpecTIR HST airborne, and ASTER satellite.
I call this Parallel Optimized Cross-Correlation Spectral Matching, POCCM. It’s purpose is to investigate various optimization methods for hyperspectral image endmember unmixing. The program is thus far standalone, and requires pre-orthorectfication and atmospheric correction of the input image.
The code is mostly C++ that links GDAL image IO and various Netlib Fortran library routines. I looked briefly into IDL, a very concise language for writing vector algorithms, but didn’t have a license and at the time the GDL alternative was... rather limited. POCCM parallelization is implemented via Intel’s Threading Building Blocks. Endmembers may be selected from the USGS and JPL spectral libraries. I use the GRASS GIS for mapping and image overlays.
POCCM (Parallel Optimized Cross-Correlation Spectral Matching) comprises a small collection of programs that implement a select class of Optimized Cross-Correlogram Spectral Matching (OCCM) algorithms inspired by David Coulter’s Ph.D. dissertation: Remote Sensing Analysis of Alteration Mineralogy Associated With Natural Acid Drainage in the Grizzly Peak Caldera, Sawatch Range, Colorado by David W. Coulter, Colorado School of Mines, 2006.
Apart from some of the non-linear unmixing algorithms, this is all basic functionality found in commercial remote-sensing packages such as Exelis’ ENVI. Writing it gave some feel for that part of spectral-matching data flow from the corrected orthorectified sensor image through to linear (or nonlinear, should the case arise) endmember matching. This includes convolving high-resolution laboratory spectra down to sensor-resolution for use with the matching algorithm. It does not include analysis such as Maximum Likelihood or Segmentation classifications, Principal Component Transformation, or Minimal Noise Fraction: these are provided both by ENVI and by the freely available GRASS GIS.
- POCCM: This is the main image-processing program that reads a corrected sensor image,
currently from NASA Airborne Visible/Infrared Imagining Spectrometer (Aviris) or
HyperSpecTIR (HST), such as acquired by Coulter’s team from the Grizzly Peak Caldera.
Inputs:- Select the Unmixing Algorithm: Non-linear Conjugate Gradient, Non-linear Genetic Algorithm, or linear Constrained Single Value Decomposition (SVD).
- As the purpose of Coulter’s study was to delineate states of exposed iron oxides (Hematite, Geothite, Jarosite) in an alpine environment, optionally set a maximum Normalized Difference Vegetation Index (NDVI) value above which pixels are assumed to be predominantly vegetative, and not to be processed.
- Sensor type (currently Aviris or HST)
- Set of one or more wavelength intervals over which to perform the matching e.g. ”450:1100, 2000:2400” excludes the 1100 - 2000 nm water band.
- The corrected orthorectified Aviris or HST sensor image file to be analysed.
- Two or more endmember spectral files to be matched pixel-by-pixel with the sensor image. Endmember spectra may be selected from the ground-truth field samples or, after filtering (described below) appropriate to the given sensor, from the USGS or JPL spectral libraries. Coulter used three iron-oxide (Hematite, Geothite, Jarosite) endmembers in his study; POCCM is able to reproduce his final false-color relative abundance images. (I have alternatively used up to seven clay endmembers to analyse kaolintic regions in the sensor image.)
- boundary coordinates (meters, NAD27 in this case) of the sub-image to be analysed.
Output:
- A single OccmResult data file containing the relative abundance of each endmember at each sensor sub-image pixel beneath the NDVI threshold,
The following group of utility programs are used to (1) convolve high-resolution laboratory endmember spectra with sensor wavelengths and fwhm, to obtain lower sensor (Aviris1996, Aviris2002, HST) resolution endmember spectra suitable for matching to acquired sensor images, (2) run OCCM unmixing algorithms on a single pixel against a set of endmembers and compare the original Unknown pixel spectra with matched spectra, and (3) Convert OccmResult output image data files, which may contain more than three endmembers, to a three-or-fewer image file in an
ENVI image format suitable for display by GRASS:
- OccmPlot : Reads a single Unknown spectrum file (e.g. from a single multi-band pixel) and 2 or more Endmember files, runs the OCCM algorithm and produces a gnuplot file that compares the Unknown spectrum with the spectrum of the optimal mixture. All input files must be in Envi Ascii format, with the same wavelengths. The Unknown spectrum may be extracted from an image by ExtractPixel.
- ExtractPixel : extract a single pixel (or small group of pixels) from an image given the pixel’s coordinates in meters.
- EndPlot : Write one or more ENVI ascii-format Endmember spectra to an output gnuplot datafile, and a gnuplot command file, to enable viewing of a single endmember spectrum.
- Occm2img : Converts the Cross-Correlation unmixing data from an OccmResult file produced by POCCM to false-color image data suitable for display in GRASS, where it may overlay the original sensor image and Digital Elevation Map (DEM).
- PrintSpec : print compiled Sensor wavelength and bandwidth data output to USGS SpecLib ascii format, a format used by JPL’s ASTER library as well.
- ConvolveSensor : convolve high-resolution USGS SpecLib or JPL endmember spectra with Sensor resolution. Outputs reflectance vs wavelength in ENVI ascii format.
- sp2ascii : C translation of SpecLib’s sptoascii function. Reads speclib “spectrum” data files, and lets us customize the file format on output.
Intended future work will investigate the correlation (if any) between Optimized Cross-Correlation Spectral Matching and the Constrained Energy Minimization (CEM) and Mixture Tuned Match Filtering (MTMF(tm)) techniques.