Scale Buttons MLx Home | MLx menu | MLx buttons | Widgets | Index | What's New
(These scale commands change the scaled copy of the image for display. To make a 'permanently scaled' copy of an image for further processing, use the scale pixel operations.
There are two scale buttons. The one in the images collumn can work on some or all of the displayed images. The one in the Top Image collumn will work on the front image window. Scaling operations affect only the a copy of the array that is used for display. The original image array is not affected. This means that any scaling operation can be 'undone' by scaling differently.
There is one exception: if the Use Orig 8-bit parameter is Yes, then the scaled array and the original array for 8 bit images are one and the same. This saves memory when working on large 8 bit images.
The scaled arrays are used for the gray level image display, color overlays, Concentration Histogram Images, and histograms. All of these are therefore affected (or controled by) the scaling operations.
Linear scaling: Limits are asked for. The defaults are the last limits used, unless the control key is held down. In that case the defaults are always the limits of the image array, (that is the original data).
(I plan to add a mouse scaling function). Typing in the limits is particularly useful for fixing the scaling so that a CHI will have the desired axis limits.
Clipping: Values equal to or less than the specified minimum are set to zero. Values equal to or greater than the specified maximum are set to 255. Values in between are scaled linearly.
Scaling is done primarily for display or for histogramming and scatter plots (CHI's).
These scaling options need a histogram to work. Due to a certain programmer's laziness (me), these work only on fixnums or positive integers. Therefore, they won't work for ratio images, images with negative values (many difference images), etc. This is because the integer images have natural bins (the value of the pixels), whereas the other images have to have bins made for ranges of values.
Rather than doing that, I've included the prescale option, which in effect does the same thing: an array is scaled to integer values, and then this array can be scaled for display. (See the note about the prescale menu item, below.)
Clip | top
This is the same as linear scaling, except that the limits are chosen so that the specified percentage of outlying pixels are clipped.
This function is fast for integer pixels (fixnum images - unsigned byte 8, for example) and slow for real valued images. This is because a histogram is calculated and used for the integer images, but the entire image is sorted for the real valued images. Making a histogram for the real valued images requires histograms variable bin size, which is more complicated than what I have time to do right now. DSB
Histogram equalization flattens the intensity distribution histogram. The pixel intentensities are shifted while still maintaining their monotonic relationship such that equal numbers of pixels are assigned to each gray level. (The limited number of gray levels causes the 'flattened' histogram to not be really flat, but to have spikes or a comb shaped appearance.) The result is that detail appears in the image background or in features that cover a large area of the image, while small objects become all black or white, and tend to loose their detail. (Roughly, small objects have few pixels, thus few gray levels.) See the example in the tutorial article. Also see Russ 1990, pp. 34, 35
This is NOT linear scaling. Axes are not implemented for histograms or CHI's for this type of scaling. For a group of images, each image is equalized by itself - a group or cumulative histogram is not used (I don't know why you would want it).
Manually input what values in the image will be black (0) and white (255). For a group of images, the global limits of the selected group is presented as the default. All of the images in the group will be scaled to these limits.