In its current form, MAPMAKER allows the following types of image enhancements and stretches:
LINEAR STRETCH (AUTO)
This stretch finds the minimum and maximum dn values of an image. It then scales this
range linearly so that it fills the entire range of possible output dn values (ex. 0 - 255 for 8
bit data). Outlying dn values cause a problem for this type of stretch by skewing the
histogram. To compensate, the linear stretch can be given a saturation percentage. It
then maps that percentage of the total pixels to both the high and low saturation points,
effectively bypassing outliers, and stretches the rest of the image. MAPMAKER, as used
by the Web page, has this saturation percentage hard-coded to 0.5%. MAPMAKER
defaults to the linear stretch. This occurs if “auto” is designated, or if MAPMAKER is
unable to decipher the input to the stretch field.
GAUSSIAN STRETCH (GAUSS)
Like the linear stretch, this stretch finds the minimum and maximum dn values and
stretches the image between them. In the Gaussian stretch, the image is stretched to
match a Gaussian, or Normal, curve. Because of the non-linear properties of the
Gaussian stretch it is tolerant of outliers, but it accepts a saturation percentage to allow
enhancement of median dn values. MAPMAKER, as used by the Web page, has this
saturation percentage hard coded to 0%. Due to the analog nature of a Gaussian curve,
digital representations naturally incur error. This error was placed in the spacing between
the two median dn values.
HISTOGRAM EQUALIZATION (EQU)
This option stretches the image so that the output has a uniform histogram. The
minimum and maximum dn values are stretched to the saturation points in the process.
HISTOGRAM MATCHING (MATCH)
This option builds upon the histogram equalization. First, the image is equalized. Then,
an equalized histogram of the image to be matched is consulted. The program matches
the first histogram to the second. The user must supply the second equalized. Currently
in MAPMAKER the image will be matched to a Gaussian curve (which, sadly, performs
better than the Gaussian stretch).
NO_STRETCH (NO_STRETCH)
MAPMAKER will leave an image untouched if “no_stretch” is entered into the stretch
field.
ACKNOWLEDGMENTS:
This code was written by Rob Waltz at the Flagstaff U.S.G.S.. Special thanks to
Randolph Kirk, Flagstaff U.S.G.S., whose FORTRAN histogram equalization and
matching code was borrowed from extensively. Also thanks to the Website
http://lib.stat.cmu.edu/griffiths-hill/66
for their statistical area function used in the Gaussian stretch.
PDS Imaging Node Homepage
Web Page Curator: Patty Garcia.