The ADAPT_HIST_EQUAL function performs adaptive histogram equalization, a form of automatic image contrast enhancement. The algorithm is described in Pizer et. al., “Adaptive Histogram Equalization and its Variations.”, Computer Vision, Graphics and Image Processing, 39:355-368. Adaptive histogram equalization involves applying contrast enhancement based on the local region surrounding each pixel. Each pixel is mapped to an intensity proportional to its rank within the surrounding neighborhood. This method of automatic contrast enhancement has proven to be broadly applicable to a wide range of images and to have demonstrated effectiveness.
This routine is written in the IDL language. Its source code can be found in the file adapt_hist_equal.pro in the lib subdirectory of the IDL distribution.
The following code snippet reads a data file in the examples/data subdirectory of the IDL distribution containing a cerebral angiogram, and then displays both the original image and the adaptive histogram equalized image:
OPENR, 1, FILEPATH('cereb.dat', $
a = BYTARR(512,512, /NOZERO)
READU, 1, a
a = CONGRID(a, 256,256)
TVSCL, a, 0
TV, ADAPT_HIST_EQUAL(a, TOP=!D.TABLE_SIZE-1), 1
Note: Also see “Working with Histograms” (Chapter 8, Image Processing in IDL in the help/pdf directory of your IDL installation).
Result = ADAPT_HIST_EQUAL (Image [, CLIP=value] [, FCN=vector] [, NREGIONS=nregions] [, TOP=value] )
The result of the function is a byte image with the same dimensions as the input image parameter.
A two-dimensional array representing the image for which adaptive histogram equalization is to be performed. This parameter is interpreted as unsigned 8-bit data, so be sure that the input values are properly scaled into the range of 0 to 255.
Set this keyword to a nonzero value to clip the histogram by limiting its slope to the given CLIP value, thereby limiting contrast. For example, if CLIP is set to 3, the slope of the histogram is limited to 3. By default, the slope and/or contrast is not limited. Noise over-enhancement in nearly homogeneous regions is reduced by setting this parameter to values larger than 1.0.
Set this keyword to the desired cumulative probability distribution function in the form of a 256 element vector. If omitted, a linear ramp, which yields equal probability bins results. This function is later normalized, so magnitude is inconsequential, though should increase monotonically.
Set this keyword to the size of the overlapped tiles, as a fraction of the largest dimensions of the image size. The default is 12, which makes each tile 1/12 the size of the largest image dimension.
Set this keyword to the maximum value of the scaled output array. The default is 255.
H_EQ_CT, H_EQ_INT, HIST_2D, HIST_EQUAL, HISTOGRAM