ICA – Independent Components Analysis

ICA with two inputs, and its argument dialog Independent Components Analysis (ICA) looks for statistical differences in multispectral data and separates the data into statistically independent sets. At times, this can reveal even more difficult-to-see text than PCA can, for example by separating underwriting from overtext or from the substrate.

ICA, PCA or MNF?

  • PCA orders its components by variance; low-contrast text may be in the higher-numbered bands.
  • MNF first whitens the data using a noise region; its bands tend to decrease in image quality.
  • ICA tries to unmix independent sources, and can sometimes isolate different writings or materials better than PCA or MNF.

Two inputs

ICA has two inputs, both from the same multiband image (with at least two bands):

  • roi_link: a region of interest. ICA computes the transform from this data, so read it with a “window” around the features you want to separate.
  • input_link: the image the transform is applied to, usually the whole image.

The two images must have the same number of bands, but they can be different sizes. The region of interest cannot be larger than the input image.

Choosing a region of interest

  • Pick a region that contains the features you hope to separate, for example underwriting and overtext.
  • A larger region and more bands can make the result more stable, but take longer to compute.
  • If the separation looks poor, try a slightly different region, or a different nonlinearity.

Arguments

Argument What it does Default
nonlinearity The contrast function ICA uses: logcosh, kurtosis or gaussian. They can give slightly different results that might reveal different characters logcosh
iterations The maximum number of iterations. ICA also stops early when the change to the transform falls below 0.00000001 200
bandsOut The number of output bands, M. Bands 0 to M-1 are output as many as the input

The larger the region of interest, the more bands, and the more iterations, the longer the computation takes.

Output

The output is floating point, with as many bands as the input unless you set bandsOut. The bands are ordered by decreasing spatial coherence: the average correlation of each pixel with its neighbors to the right and below. Since text has high spatial correlation, the lower-numbered bands tend to reveal text, both erased and visible. Higher-numbered bands often show finer texture or noise.

Hoku's ICA was implemented in Java from the 2018 MATLAB software written by Brian Moore, University of Michigan.