User's Guide

HINDU

Unsupervised classification based upon an image's multidimensional histogram

Function:

HINDU classifies a multiband image based upon its multidimensional histogram. Regions in the histogram with high density are regarded as pattern clusters. The final number of clusters must lie within a user-specified acceptable range and is determined largely by the user-defined number of gray levels per histogram bin. Output is a single-band BYTE image the values of which correspond to pattern classes. A summary of class populations, significance, and centroids is also produced.

Parameters:

IN
Input image to be classified. It may be a single or multiband image; however, in order to best utilize the capabilities of HINDU, a multiband image should be given. The data type must be BYTE.

OUT
Output image. It is a single band BYTE image whose values represent class assignments.

MINMAXCL(5,20)
Minimum and maximum number of clusters (classes) that the user would like in the output image. After initially processing the input data, if the final number of clusters is outside the specified range, then the program will repeat using a lower/higher value for NLEVBIN as appropriate. If the resulting number is too small, the program will abort. If the resulting number is too large, then the number will be reduced to the maximum acceptable by deleting clusters of low significance.

NLEVBIN(20,10,30)
Number of grey levels to place in each histogram bin.

NLEVBIN(1) = initial value
NLEVBIN(2) = minimum acceptable
NLEVBIN(3) = maximum acceptable
The choice of NLEVBIN is critical to the success of HINDU. Typically NLEVBIN should be large, especially where the number of bands is large. The histogram is first calculated using NLEVBIN(1). If the available storage space is exceeded at this stage (this is unlikely) then the histogram is recalculated using the maximum acceptable value (NLEVBIN(3)). If too few or too many clusters are found then the histogram is again re-calculated using the min/max for NLEVBIN as appropriate, unless this value is already being used.

PRINT(LP)
Output destination. Destination for class populations, significance, and centroids, and number of members in each class. If PRINT = LP, the information is printed on the line printer.

  = --      :  No Report
  = TERM    :  Terminal
  = LP      :  Line printer.
  = filename:  User supplied
               file name

Examples:

  1. LAS> hindu in=test out=test.hin

    In this example, the user wishes to classify an image named TEST. Default values of parameters are used.

  2. LAS> hindu in="tm.gdf(l,l,5l2,5l2)" out=tm.hin minmaxcl=(l0,20) print=term

    In this example, the user wishes to classify a 5l2 x 5l2 window of a multiband TM scene named TM.GDF. Results are output to TM.HIN. The user specifies that at least l0 and not more than 20 clusters are to be found. The summary will be printed to the terminal.

Description/Algorithm:

The user specifies an acceptable range of classes and an initial, maximum, and minimum number of gray levels per histogram bin. If too narrow a gray level range is selected, it is possible that there will be insufficient storage space for the histogram. Should this occur, the user is informed and the histogram is rebuilt by using the maximum number of gray levels specified per bin. This is unlikely to occur in normal usage of the program.

The multidimensional histogram is first examined for neighbors that have a higher density. These low-density entries are then reassigned in proportion to their higher density neighbors. This stage is carried out from the lowest to the highest density cell, recalculating the density at each stage. The histogram is then searched for entries that are of greater-than-average density. These entries are considered as possible clusters, and a significance number is assigned to them. If there are too many clusters (depending on user specification), the entire process is repeated using the maximum/minimum gray value range as specified. At this point, if there are too few clusters, the program aborts; if there are too many, those with lowest significance are deleted to obtain the correct number. Each pixel is then assigned to the cluster that forms its nearest neighbor, producing the output-classified image.

Note that HINDU is suitable primarily for Landsat data, and careful choice of parameters is required. Choice of too small a value for NLEVBIN can greatly increase execution time; too large a value can result in meaningless clusters.

Nonfatal Error Messages:

  1. [hindu-hspace] Need more histogram space at line # pixel #

    Too narrow a gray level range was specified, which resulted in insufficient storage space for the histogram. The program will recalculate the histogram using the maximum number of gray levels specified.

  2. [hindu-maxclus] # clusters found; exceeds the maximum specified

    The number of clusters should fall within a user specified range. The program will recalculate the histogram with a different number of gray levels per histogram bin. The recalculation is done only once.

  3. [hindu-reduce] Reducing number of clusters to maximum #

    After the histogram was recalculated with a different number of gray levels per bin, the number of clusters found still exceeded the user specified maximum. The clusters with the lowest significance will not be considered in the further processing.

  4. [hindu-compmax] Recalculating histogram with maximum value for NLEVBIN

    The number of clusters found exceeded the user specified maximum. The histogram will be recalculated with the maximum number of gray levels per bin.

  5. [hindu-minclus] # clusters found; less than the minimum specified

    The number of clusters should fall within a user specified range. The program will recalculate the histogram with a different number of gray levels per histogram bin. The recalculation is done only once.

  6. [hindu-compmin] Recalculating histogram with minimum value for NLEVBIN.

    The number of clusters found was below the user specified minimum. The histogram will be recalculated with the minimum number of gray levels per histogram bin.

Fatal Error Messages:

  1. [hindu-dtype] Type of the input image must be BYTE

    Input images must be BYTE data. See programs SCALE or COPY to change the image data type.

  2. [hindu-grange] Minimum gray level value exceeds maximum gray level value

    Restart the program with correct values for NLEVBIN.

  3. [hindu-mhist] Restart and choose a wider range of values for NLEVBIN

    Too narrow a gray level range was specified, which resulted in insufficient storage space for the histogram. The program recalculated the histogram by using the maximum number of gray levels specified per bin, but there was still insufficient space.

  4. [hindu-cluster] Restart with new values for NLEVBIN and MINMAXCL

    The number of clusters is smaller than the specified minimum cluster. The program recalculated the histogram by using the minimum number of gray levels specified per line, but still could not obtain the minimum number of clusters.

User's Notes:

  1. If the final number of clusters is outside the range specified, the program will repeat using a lower or higher value for NLEVBIN, as appropriate.

  2. A scratch data file is created to store temporary class assignments. This file is deleted after program execution.