Spectral Angle Mapper (SAM) is a physically-based spectral classification that uses an n-D angle to match pixels to reference spectra. The algorithm determines the spectral similarity between two spectra by calculating the angle between the spectra and treating them as vectors in a space with dimensionality equal to the number of bands. This technique, when used on calibrated reflectance data, is relatively insensitive to illumination and albedo effects. Endmember spectra can be directly extracted directly from an image as region of interest (ROI) mean spectra. SAM compares the angle between the endmember spectrum vector and each pixel vector in n-D space. Smaller angles represent closer matches to the reference spectrum. Pixels further away than the specified maximum angle threshold in radians are not classified.

SAM classification assumes reflectance data. However, if you use radiance data, the error is generally not significant because the origin is still near zero.

Reference: Kruse, F. A., A. B. Lefkoff, J. B. Boardman, K. B. Heidebrecht, A. T. Shapiro, P. J. Barloon, and A. F. H. Goetz. "The Spectral Image Processing System (SIPS) - Interactive Visualization and Analysis of Imaging spectrometer Data." Remote Sensing of Environment 44 (1993): 145-163.

You can also write a script to perform Spectral Angle Mapper classification using the SpectralAngleMapperClassification task.

  1. From the Toolbox, select Classification > Supervised Classification > Spectral Angle Mapper Classification. The Spectral Angle Mapper Classification dialog appears.
  2. Select an Input Raster and perform optional spatial and spectral subsetting, and/or masking.
  3. Select the Input ROIs file that represents the classes. Statistics from the ROIs are used as input to the Spectral Angle Mapper calculation.
  4. Specify a single Threshold Angle to use for all classes. This value should be in radians. It represents the maximum acceptable angle between the endmember spectrum vector and the pixel vector (in # of bands dimensional space). ENVI does not classify pixels with an angle larger than this value.
  5. Specify a filename and location for the Output Rule Raster. A rule raster is a greyscale image that shows intermediate classification results, where each band represents a rule raster for each class. With SAM classification, pixel values of the rule raster represent the spectral angle in radians from the reference spectrum for each class. Lower spectral angles represent better matches to the endmember spectra. Areas that satisfied the selected radian threshold criteria are carried over as classified areas into the classified image.
  6. Enable the Display result check box to display the output in the view when processing is complete. Otherwise, if the check box is disabled, the result can be loaded from the Data Manager.
  7. Specify a filename and location for the Output Raster (the classification raster).
  8. Enable the Display result check box to display the output in the view when processing is complete. Otherwise, if the check box is disabled, the result can be loaded from the Data Manager.
  9. Enable the Preview check box to see a preview of the settings before you click OK to process the data. The preview is calculated only on the area in the view and uses the resolution level at which you are viewing the image. See Preview for details on the results. To preview a different area in your image, pan and zoom to the area of interest and re-enable the Preview option.
  10. To see a model-based version of this tool that shows how the tool is constructed from individual tasks, click Open in Modeler.

  11. To reuse these task settings in future ENVI sessions, save them to a file. Click the down arrow and select Save Parameter Values, then specify the location and filename to save to. Note that some parameter types, such as rasters, vectors, and ROIs, will not be saved with the file. To apply the saved task settings, click the down arrow and select Restore Parameter Values, then select the file where you previously stored your settings.

  12. To run the process in the background, click the down arrow and select Run Task in the Background. If an ENVI Server has been set up on the network, the Run Task on remote ENVI Server name is also available. The ENVI Server Job Console will show the progress of the job and will provide a link to display the result when processing is complete. See ENVI Servers for more information.

  13. Click OK.