Linear Spectral Unmixing (Image Analyst)

Available with Image Analyst license.

Available with Spatial Analyst license.

Summary

Performs subpixel classification and calculates the fractional abundance of different land-cover types for individual pixels.

Linear Spectral Unmixing tool illustration

Usage

  • This tool calculates the fractional material for individual pixels that contain multiple materials. It generates a multiband raster in which each band corresponds to the fractional abundance of each land-cover class. For example, you can use it to perform land-cover classification on a multispectral image to identify photosynthetic vegetation, bare soil, and dead or nonphotosynthetic vegetation.

  • This tool supports several forms of spectral data input, such as Esri spectral library (.esl) or ENVI spectral library format (.sli).

  • The tool supports a legacy form of the JSON spectra input. The following is an example of a spectral file provided as a .json file:

    
    {
      "EsriEndmemberDefinitionFile" : 0,
      "FileVersion" : 1,
      "NumberOfEndmembers" : 3,
      "NumberOfBands" : 7,
      "Endmembers" : [	
        {
          "EndmemberID" : 1,
          "EndmemberName" : "urban",
          "SpectralProfile" : [
                88,
                42,
                48,
                38,
                86,
                115,
                59
              ]
        },
        {
          "EndmemberID" : 2,
          "EndmemberName" : "vegetation",
          "SpectralProfile" : [
                50,
                21,
                20,
                35,
                50,
                110,
                23
              ]
        },
        {
          "EndmemberID" : 3,
          "EndmemberName" : "water",
          "SpectralProfile" : [
                51,
                20,
                14,
                9,
                7,
                116,
                4
              ]
        }
      ]        
    }
  • Classifier definition files (.ecd) generated from the Train Maximum Likelihood Classifier tool are the only classifier output currently supported.

  • Polygon features require the following field names:

    • classname—A text field indicating the name of the class category
    • classvalue—A long integer field containing the integer value for each class category
  • When calculating the fractional abundance of each land-cover class, the solution may include negative coefficients or fractions. If this occurs, review the training samples in the input spectral profile to confirm that they accurately represent each class. If they appear correct, specify Non-negative for Output Value Option.

  • The number of bands in the input image and input spectral data must match if the spectral input is an .ecd file, a training sample feature class, or a .json file.

  • If the input spectra is from a spectral library file (.esl or .sli), spectral resampling will be applied using a band average method if the number of bands do not match. Optionally, you can resample spectra using the Resample Library Spectra tool.

  • If the spectral data is from a spectral library in which the reflectance values range between 0 and 1, such as the USGS spectral library, the input surface reflectance raster must also contain values between 0 and 1.

  • If the input image is not within 0-1, such as 8 bit or 16 bit, it is recommend that you collect the material's spectral signature from imagery using the Spectral Viewer tool . Optionally, check the Remove continuum check box to normalize the pixel values and the input spectra library data.

  • When the Remove continuum check box is checked, a convex hull is fitted over the top of a spectrum using straight-line segments that connect local spectra maxima. The continuum will be removed by dividing it into the actual spectrum for each pixel in the image and the input spectra. This allows comparison of absorption features from a common baseline.

Parameters

LabelExplanationData Type
Input Raster

The input surface reflectance raster dataset.

Raster Dataset; Mosaic Dataset; Mosaic Layer; Raster Layer; File; Image Service
Spectra File or Training Features

The spectral information for the different land-cover classes.

The file can be any of the following:

  • An Esri spectral library file (.esl) created from the Spectral Library browse pane or the Spectral Viewer tool
  • An ENVI spectral library file (.sli)
  • A polygon feature class generated from the Training Samples Manager pane
  • An Esri classifier definition file (.ecd) that was generated by the Train Maximum Likelihood Classifier tool
  • A .json file that contains spectral data

File; Feature Layer; String
Output Value Option
(Optional)

Specifies how the output pixel values will be defined.

  • Sum to oneClass values for each pixel will be provided in decimal format with the sum of all classes equal to 1. For example, Class1 = 0.16; Class2 = 0.24; Class3 = 0.60.
  • Non-negativeThere will be no negative output values.
String
Remove continuum
(Optional)

Specifies whether the spectra will be normalized from an image or reference data

  • Checked——The spectra will be normalized from an image or reference data.
  • Unchecked—The spectra will not be normalized from an image or reference data. This is the default.

Specifies whether the spectra will be normalized from an image or reference data

  • REMOVE_CONTINUUMThe spectra will be normalized from an image or reference data.
  • NO_REMOVE_CONTINUUMThe spectra will not be normalized from an image or reference data. This is the default.
Boolean

Return Value

LabelExplanationData Type
Output Raster

The output multiband raster dataset.

Raster

LinearSpectralUnmixing(in_raster, in_spectral_profile_file, {value_option}, {remove_continuum})
NameExplanationData Type
in_raster

The input surface reflectance raster dataset.

Raster Dataset; Mosaic Dataset; Mosaic Layer; Raster Layer; File; Image Service
in_spectral_profile_file

The spectral information for the different land-cover classes.

The file can be any of the following:

  • An Esri spectral library file (.esl) created from the Spectral Library browse pane or the Spectral Viewer tool
  • An ENVI spectral library file (.sli)
  • A polygon feature class generated from the Training Samples Manager pane
  • An Esri classifier definition file (.ecd) that was generated by the Train Maximum Likelihood Classifier tool
  • A .json file that contains spectral data

File; Feature Layer; String
value_option
[value_option,...]
(Optional)

Specifies how the output pixel values will be defined.

  • SUM_TO_ONEClass values for each pixel will be provided in decimal format with the sum of all classes equal to 1. For example, Class1 = 0.16; Class2 = 0.24; Class3 = 0.60.
  • NON_NEGATIVEThere will be no negative output values.
String
remove_continuum
(Optional)

Specifies whether the spectra will be normalized from an image or reference data

  • Checked——The spectra will be normalized from an image or reference data.
  • Unchecked—The spectra will not be normalized from an image or reference data. This is the default.

Specifies whether the spectra will be normalized from an image or reference data

  • REMOVE_CONTINUUMThe spectra will be normalized from an image or reference data.
  • NO_REMOVE_CONTINUUMThe spectra will not be normalized from an image or reference data. This is the default.
Boolean

Return Value

NameExplanationData Type
out_raster

The output multiband raster dataset.

Raster

Code sample

LinearSpectralUnmixing example 1 (Python window)

This example calculates the fractional abundance of classes from a classifier definition file (.ecd) and generates a multiband raster.

# Import system modules
import arcpy
from arcpy.ia import *

# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")

# Execute 
unmixing_outputs = LinearSpectralUnmixing("C:/data/landsat7_image.crf",
    "C:/data/train_maxi_likelihood_ecd_output.ecd", "SUM_TO_ONE;NON_NEGATIVE")
	
# Save output
unmixing_outputs.save("C:/data/unmixing_outputs.crf")
LinearSpectralUnmixing example 2 (stand-alone script)

This example calculates the fractional abundance of classes from a classifier definition file (.ecd) and generates a multiband raster.

# Import system modules
import arcpy
from arcpy.ia import *

# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")

# Define input parameters
inFile = "C:/data/landsat7_image.crf"
json_file = "C:/data/customized_endmembers.json"
options = "SUM_TO_ONE" 

# Execute 
unmixing_outputs = LinearSpectralUnmixing(inFile, json_file, options)
	
# Save output
unmixing_outputs.save("C:/data/unmixing_outputs_using_json.crf")
LinearSpectralUnmixing example 3 (stand-alone script)

This example calculates the fractional abundance of classes from a training sample feature class (.shp) and generates a multiband raster.

# Import system modules
import arcpy
from arcpy.ia import *

# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")

# Define input parameters
inFile = "C:/data/landsat7_image.crf"
training_features = "C:/data/training_features.shp"
options = "SUM_TO_ONE;NON_NEGATIVE" 

# Execute 
unmixing_outputs = LinearSpectralUnmixing(inFile, training_features, options)
	
# Save output
unmixing_outputs.save("C:/data/unmixing_outputs_using_training_features.crf")

Licensing information

  • Basic: Requires Image Analyst or Spatial Analyst
  • Standard: Requires Image Analyst or Spatial Analyst
  • Advanced: Requires Image Analyst or Spatial Analyst

Related topics