Optimized Cross-Correlation Spectral Matching

Posted by Ed Leaver on
The Optimized Spectral Matching project is an excercise intended to explore various methods that match remote sensing hyperspectral images against the spectra of composite endmembers. A "hyperspectral" image is one for which each pixel is sampled at many wavelengths. For example, JPL's AVIRIS (Airborne Visible Infrared Imaging Spectrometer) samples at 224 wavelengths between the visible (370nm) and near-thermal infrared (2500nm). SpecTIR's HST sensor provides 219. These allow some interesting surface reflectance spectroscopy.

Ruby Mountain and Mine as seen looking east from Enterprise Peak. East Red in background, upper right
(August 2008)

My first goal was to reproduce the image matching results obtained by David Coulter as described in his 2006 Ph.D. thesis from the Colorado School of Mines. Coulter conducted both ground and several airborne surveys over the Gizzly Peak Caldera, located in Colorado's Mineral Belt roughly 15 miles southeast of Aspen. His study was funded by the Colorado Geological Survey and sought airborne methods to distinguish acidic mine drainage from naturally occuring acid seeps -- a problem significant both to ecologists and to mining engineers. Within the Grizzly Peak Caldera are located many of these natural seeps, some well above timberline and ready targets for airborne sensors. The caldera hosts several now-abandoned silver mines as well, the most productive of which was the Ruby Mine located on the western flank of Ruby Mountain in the southwest portion of the caldera, toward the upper end of Lincoln Gulch. Ruby Mountain takes its name from the bright red iron oxides that crown its summit. Coulter called Ruby Mountain "West Red" in distinction from a similarly-capped peak further to the east ("East Red"). Coulter used a reasonable Cross-Correlation merit function optimized within the framework of the Exelis ENVI program. Not having ENVI access, I chose to write an image processing program of my own. This was done in the popular C++ programming language.