- 98 Views
- Uploaded on
- Presentation posted in: General

สจพ

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

สจพ

2.3 Histogram-based Operations

- What's a histogram?
- The Histogram shows the total tonal distribution in the image – global quality.
- It's a bar-chart of the count of pixels of every tone of gray that occurs in the image.
- It helps us analyze, and more importantly, correct the contrast of the image.

DI&SP

MTCT

#pixel

7 6 5 4 3 2 1 0

0 1 2 3 4 5

intensity

- Histogram
- A simple bar graph that stands for pixel intensities.
- The pixel intensities are plotted along the x-axis and the number of occurrences for each intensity are plotted along the y-axis.
- Provide information about contrast and overall intensity distribution of an image

- A simple bar graph that stands for pixel intensities.

สจพ

Dark image

Normal image

Bright image

DI&SP

MTCT

สจพ

High Contrast image

Low Contrast image

DI&SP

MTCT

Original Image

Original Image - 40

Original Image + 40

Original Image

Original Image * 1.2

Original Image / 1.2

- Histogram in Color Image

RGB

สจพ

hi = histogram of gray level i

DI&SP

MTCT

- The histogram barchart shows at a glance the relative image tone distribution over the entire range.
- In this image, we have a very high count of pixels that are near, but not at, the white end.

- We also have many that are near, but not at, the black end.
- Our image does not totally fill the possible range from darkest to lightest tones.
- Our image could have more contrast.

- Histogram Equalization
- (Goal) to obtain a uniform histogram for the output image
- Mapping of gray level r into gray level s s.t. the distribution of gray level s is uniform.
- Spreading: the peaks and valleys will be shifted (due to approximation in digitized space)

- (Goal) to obtain a uniform histogram for the output image

- Histogram Equalization Steps
- Compute histogram.
- Calculate normalized sum of histogram
- Transform input image to output image

- Image of 16-level intensity values

Its corresponding histogram

Its corresponding histogram

Fig. 2.8 (a) Original image; (b) histogram of original image; (c) histogram equalized image; (d) histogram of equalized image.

- The effects of H.E.
- H.E. stretches contrast (expand the range of gray levels) for gray levels near histogram maxima
- Compresses contrast in areas with gray levels near histogram minima.
- Contrast is expanded for the most of the image pixels => H.E. usually improves the detectability of many image features.

- The effects of H.E.
- The resulting histogram is not flat
- nothing in the discrete approximation of the continuous result previously derived says that it should be flat.

- Similar effect of enhancement could be achieved by manual contrast stretching approach
- But, the advantage of H.E is fully automatic.

- The resulting histogram is not flat

// histogram

for( idx = 0; idx < IpixelValue.length; idx++ ) { r = ( IpixelValue[idx] & 0x00FF0000 ) >> 16; g = ( IpixelValue[idx] & 0x0000FF00 ) >> 8; b = ( IpixelValue[idx] & 0x000000FF ); red_pixel_value[r]++; green_pixel_value[g]++; blue_pixel_value[b]++;}

- Calculate normalized sum of histogram// rednormalized sum.double scale_factor = 255.0 / IpixelValue.length;for( idx=0; idx < 256; idx++) { sum += red_pixel_value[idx]; red_Nsum[idx] = (int)((sum * scale_factor) + 0.5);}
- 1 * (7/16) = 0.43
- 3 * (7/16) = 1.31
- . . .

- Transform input image to output image// LUT inputfor( idx = 0; idx < imageBuffer.getWidth() * imageBuffer.getHeight(); idx++) OpixelValue[idx] = 0xFF000000 | (red_Nsum[r[idx]] << 16) | (green_Nsum[g[idx]] << 8) | (blue_Nsum[b[idx]]);

Original Image

Histogram Equalize

Image

Equalization

(256 Level)

Equalized Image

Original Image

Original Image

Equalized Image

Saturation adjustment function

Saturation image

Saturation histogram

Input / Output

Image

Histogram equalized intensity

Original image

Each R, G, B image is histogram equalized

Histogram equalized intensity

- /********************************************************
- * Func: histogram_equalize
- * Desc: histogram equalize an input image and write it out Params: buffer - pointer to image in memory * number_of_pixels - total number of pixels in image ********************************************************/
- void histogram_equalize(image_ptr buffer, unsigned long number_of_pixels)
- {
- unsigned long histogram[256]; /* image histogram */
- unsigned long sum_hist[256]; /* sum of histogram elements */

- float scale_factor; /* normalized scale factor */
- unsigned long i; /* index variable */
- unsigned long sum; /* variable used to increment sum of hist */
- /* clear histogram to 0 */
- for(i=0; i<256; i++)
- histogram[i]=0;
- /* calculate histogram */
- for(i=0; i<number_of_pixels; i++)
- histogram[buffer[i]]++;

- /* calculate normalized sum of hist */
- sum = 0;
- scale_factor = 255.0 / number_of_pixels;
- for(i=0; i<256; i++)
- {
- sum += histogram[i];
- sum_hist[i] = (sum * scale_factor) + 0.5;
- }
- /* transform image using new sum_hist as a LUT */
- for(i=0; i<number_of_pixels; i++)
- buffer[i] = sum_hist[buffer[i]];
- }