Data dimensionality indicates the number of intrinsic endmembers that the dataset contains, since each linearly independent component adds another dimension to a spectral dataset through mixing. You can determine the data dimensionality in the MNF Eigenvalues plot by finding where the slope of the eigenvalue curve breaks and the values fall to 1.

Or, you can let the Wizard estimate data dimensionality using a spatial coherence measure that is based on MNF-transformed images. The lower MNF bands are expected to have spatial structure and contain most of the information, while higher MNF bands are expected to have little spatial structure and contain most of the noise. By retaining only the coherent MNF bands (those with variance above unity) and discarding those that are indistinguishable from the noise (those with variance at or below unity), the dataset is reduced to its inherent dimensionality. This should improve spectral processing results.

A spatial coherence calculation consists of a correlation coefficient calculation between each spectral band and a version of itself offset by one line. Noise, by definition, should have a zero or very low correlation, while an image with a spatial structure bigger than the pixel size has a much higher correlation.

If higher MNF images are correlated to their line-shifted versions, it means there is a vertical structure in the noisy images (such as stripes), which may resemble a signal in the higher MNF bands. Vertical striping noise could be caused by an area-array instrument.

Perform the following steps to calculate data dimensionality using a spatial coherence measure:

  1. Click Calculate Dimensionality. A processing status dialog appears, followed by a Spatial Coherence Threshold plot, which shows the Wizard's best guess for the number of non-noise MNF bands.
  2. While the Wizard is designed to give a reasonable default calculation of data dimensionality, this process is often difficult and scene-dependent. You must often resort to using a generous estimate of data dimensionality, by using all of the MNF bands that have any reasonable image quality of eigenvalues well above unity. Overestimating the dimensionality and including a few extra MNF bands is much better than underestimating the dimensionality and potentially discarding everything. If all of your MNF bands have decent image quality and above-unity eigenvalues, then your data are not spectrally over-determined and thus are not technically hyperspectral.

    ENVI calculates the spatial coherence threshold based on the bands with spatial coherence values greater than a given floor value, not greater than or equal to a given floor value. If the threshold is set to 0, bands that score 0 will not be included. For example, if you input 50 bands into the MNF transformation and calculate the spatial coherence, it might return 36 out of 50 bands even though the threshold value is set to 0. This is because 14 of the bands have a spatial coherence value of 0. Presumably, you should use a threshold greater than 0, or manually select the number of bands.

    Additionally, the threshold is not a count of all the bands above or below a given value. Selecting the number of bands is accomplished by finding the first band that drops below the threshold and including all the bands to the right of this threshold as “no good.” The spatial coherence curve (as applied to MNF data) theoretically should become less and less as you move to higher MNF bands, since the bands get noisier and noisier. So, ENVI looks for the first band that dropped below the threshold and discards the rest.

  3. If you are satisfied with the dimensionality calculation, click OK in the Spatial Coherence Threshold plot, then click Next in the Wizard. The Derive or Select Endmembers panel appears.
  4. Otherwise, manually change the threshold level by clicking and dragging the horizontal red threshold line on the Spatial Coherence Threshold plot to a new level. Click OK. You can also click Cancel in the Spatial Coherence Threshold plot and enter a new Data Dimensionality value in the Determine Data Dimensionality panel. Click Calculate Dimensionality and repeat the steps above.