Use independent components (IC) analysis on multispectral or hyperspectral datasets to transform a set of mixed, random signals into components that are mutually independent.

You can write scripts to perform IC analysis using the ForwardICATransform task.

See the following sections:

Background


IC transformation serves as a tool for blind source separation, where no prior information on the mixing is available. The transform is based on the non-Gaussian assumption of the independent sources, and uses higher-order statistics to reveal interesting features in typically non-Gaussian hyperspectral datasets. IC transformation can distinguish features of interest even when they occupy only a small portion of the pixels in the image.

The applications of IC transformation in remote sensing include dimension reduction, extracting characteristics of the image, anomaly and target detection, feature separation, classification, endmember extraction, noise reduction, and mapping.

Compared with Principal Component (PC) analysis, IC analysis provides some unique advantages:

  • PC analysis is orthogonal decomposition. It is based on covariance matrix analysis, which is based on the Gaussian assumption. IC analysis is based on non-Gaussian assumption of the independent sources.
  • PC analysis uses only second order statistics. IC analysis uses higher order statistics. Higher order statistics is a stronger statistical assumption, revealing interesting features in the usually non-Gaussian hyperspectral datasets.
  • If the feature of interest (such as anomaly) only occupies a small portion of all pixels, it makes insignificant contribution to covariance matrix. In PC analysis, the feature of interest will be buried in the noisy bands. In IC analysis, the features are distinguished from the noisy bands.

With IC analysis, you can calculate forward IC rotations and inverse IC rotations.

  1. The IC forward calculation is a linear transformation for which ENVI does the following:
  2. Centers and whitens the sample data using the mean, eigenvectors, and eigenvalues of the sample data, and applies PC rotation for data whitening.
  3. If you changed the number of output bands, ENVI reduces the dimension of the data by subsetting the whitened sample data. Dimension reduction is not recommended for anomaly or target detection, as those signals occupy only a small portion in the image and could be buried in the noisy bands of PC rotation during data whitening.
  4. Performs negentropy maximization using the whitened sample to estimate the IC transform matrix.
  5. Transforms the input file using the forward IC transform matrix.
  6. If you selected to sort the IC bands by 2D spatial coherence, ENVI sorts the bands in descending order. Components generated by the IC rotation are not prioritized in the original transform, which could mean a noisy band appears as the first IC band. When you use 2D spatial coherence sorting, IC bands that contain spatial structure and most of the information appear first, and IC bands that contain little spatial structure and more noise appear last.

    A 2D spatial coherence measure is the average of two correlation coefficients. One correlation coefficient is calculated between each spectral band and a version of itself, offset by one line. The other correlation coefficient is calculated between each spectral band and a version of itself, offset by one sample.

You have the option to reduce the dimensions of IC bands based on eigenvalues during data whitening.

One application of using the inverse IC transform is to remove noise from the data. You could:

  1. Perform a forward transform on all of the bands.
  2. Determine which bands contain the coherent images by examining the output images.
  3. Run the inverse IC transform using a spectral subset that contains only the good bands.

References:

Hyvarinen, A., and E. Oja, Independent component analysis: algorithms and applications, Neural Networks, vol. 13, no. 4-5, pp. 411-430, 2000.

Hyvarinen, A., Fast and robust fixed-point algorithms for independent component analysis, IEEE Trans. Neural Networks, vol. 10, no. 3, pp. 626-634, 1999.

Forward IC Rotations


You can calculate forward transforms by calculating new statistics, by using a previously calculated statistics file, or by using an existing transform. You also have the option to reduce the dimension of IC bands, and to generate output of only the IC bands that you need.

Compute New Statistics and Rotate

Follow these steps to calculate the forward IC rotation transform.

  1. From the Toolbox, select Transform > ICA Rotation > Forward ICA Rotation New Statistics & Rotate. The Independent Components Input File dialog appears.
  2. Select the input file and perform optional spatial and spectral subsetting, and/or masking, then click OK. The Forward IC Parameters dialog appears.
  3. Click Sample Spatial Subset to define the sample data based on a spatial subset or the area under an ROI. Defining a sample spatial subset smaller than the whole image can fit the IC sample into memory and increase computation speed, and helps concentrate the IC analysis on the features of interest in the spatial subset or ROI.
  4. If you did not apply masking at file input, enter the Sample X/Y Resize Factors in the appropriate fields to sub-sample the data when calculating the IC transform. Sub-sampling reduces the IC sample size to fit into memory and increases computation speed. This option is valid only on images with an x,y size greater than 64. A setting of 1 (the default) does not change the data. For example, on an image with an x,y greater than 64, a resize factor of 0.5 will use every other pixel in the statistics calculations and the IC sample. Beware that setting this value to a small number could lose features of interest, as those pixels may be discarded. The upper limit is 1.0. The lower limit limits x/y size after downsampling to 64.
  5. In the Output Stats Filename [.sta] field, enter a filename for the statistics output file. You can use this file for future IC calculations. See Rotate from Existing Statistics.
  6. Enter the Change Threshold for IC optimization. If the change of the independent component is less than this value, then the IC iteration stops. The default is 0.0001. The allowable range is 10-8 to 10-2. Increasing this value increases the speed of convergence, but may provide a less optimal solution.
  7. Enter the Maximum Iterations to perform for IC optimization using a fixed-point algorithm. The default is 100. The lower limit is 100. More iterations helps ENVI find more optimal components; however, each iteration adds to processing time, depending on the CPU and system load.
  8. Enter the Maximization Stabilization Iterations for IC optimization using a stabilized fixed-point algorithm. When estimating one independent component, the fixed-point algorithm runs first. If the algorithm does not converge after maximization iterations, the stabilized fixed-point algorithm runs to improve convergence. The default value is 100. The lower limit is 0 (no stabilization step). Enabling stabilization and increasing stabilization iterations helps ENVI find the optimal components; however, each iteration adds to processing time, depending on the CPU and system load.
  9. Select one of the following from the Contrast Function drop-down list.
    • LogCosh (default). If you select LogCosh, you must also enter a value in the Coefficient field. LogCosh is a good general-purpose contrast function. It is based on the following equation and first-order derivative:
    • Kurtosis: This contrast function is based on the following equation and first-order derivative:
    • Gaussian: This contrast function is based on the following equation and first-order derivative:

  10. If your Contrast Function value is LogCosh, enter the Coefficient. The default is 1.0. The range is 1.0 to 2.0.
  11. To use a subset from eigenvalues, use the Select Subset from Eigenvalues toggle button to select Yes or No.
  12. If you chose No to selecting a subset from eigenvalues, select the Number of Output IC Bands. The default is the number of input bands.
  13. Select output to File or Memory.
  14. If you applied a mask, enter a value for the output results in the Output Mask Value field. ENVI sets the masked areas of the output dataset to the entered mask value.
  15. Enable the Sort Output Bands by 2D Spatial Coherence check box if you want the output bands to be sorted by decreasing spatial coherence. Use this option if a noisy band could appear as the first IC.
  16. Enter the Output Transform Filename. You can use this file for future IC calculations on the same image, or on an image with similar features. See Rotate from an Existing Transform for details.
  17. Click OK.

    If you chose No to selecting a subset from eigenvalues, ENVI performs the transform and adds the output to the Layer Manager.

    If you chose Yes to selecting a subset from eigenvalues, the Select Number of Output Bands dialog appears. Each band is listed with its corresponding eigenvalue and the cumulative percentage of data variance contained in each PC whitened band. Do the following:

    1. Select the Number of Output IC Bands. If the value is less than the number of input bands, data dimension is reduced.
    2. Click OK. ENVI performs the transform and adds the output to the Layer Manager. The output IC rotation contains only the number of bands that you selected, or that met the eigenvalue subset criteria. For example, if you chose 4 as the number of output bands, only four IC bands appear in your output file.

Rotate from Existing Statistics

Follow these steps to calculate the forward IC rotation transform from an existing statistics file.

  1. From the Toolbox, select Transform > ICA Rotation > Forward ICA Rotation Existing Statistics. The Independent Components Input File dialog appears.
  2. Select the input file and perform optional spatial and spectral subsetting, and/or masking, then click OK. The Enter Statistics Filename dialog appears.
  3. Select the statistics file and click Open. The Forward IC Parameters dialog appears.
  4. Set the parameters in the Forward IC Parameters dialog. Refer to Step 3 and later for details.

Because you are working with an existing statistics file, you will not be prompted to enter a statistics filename (Step 5 above).

Rotate from an Existing Transform

Follow these steps to calculate the forward IC rotation transform from an existing transform.

  1. From the Toolbox, select Transform > ICA Rotation > Forward ICA Rotation Existing Transform. The Independent Components Input File dialog appears.
  2. Select the input file and perform optional spatial subsetting, and/or masking, then click OK. The Enter Transform Filename dialog appears.
  3. Select the transform file (.trans) and click Open. The Forward IC Parameters dialog appears.
  4. Select output to File or Memory.
  5. If you applied a mask, enter a value for the output results in the Output Mask Value field. The masked areas of the output dataset are set to the entered mask value.
  6. Enable the Sort Output Bands by 2D Spatial Coherence check box if you want the output bands to be sorted by decreasing spatial coherence. Use this option if a noisy band could appear as the first IC.
  7. If you enabled the Sort Output Bands by 2D Spatial Coherence check box, enter the Output Transform Filename. You can use this file for future IC calculations. See Rotate from an Existing Transform.
  8. Click OK.

Inverse IC Rotations


Follow these steps to transform independent components back into their original data space.

  1. From the Toolbox, select Transform > ICA Rotation> Inverse ICA Rotation. The Inverse Independent Components Input File dialog appears.
  2. Select the input file (the output file from the forward transform) and perform optional spatial and spectral subsetting, then click OK. The Enter Transform Filename dialog appears.
  3. Select the transform file (the output transform file from the forward transform) and click Open. The Inverse IC Parameters dialog appears.
  4. Select output to File or Memory.
  5. Select the Output Data Type from the drop-down list. You can save the output as byte, floating-point, integer, long integer, or double precision values.
  6. Click OK. ENVI adds the resulting output to the Layer Manager.