1 / 41

สจพ

สจพ. 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.

laird
Download Presentation

สจพ

An Image/Link below is provided (as is) to download presentation 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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. สจพ 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

  2. #pixel 7 6 5 4 3 2 1 0 0 1 2 3 4 5 intensity

  3. Histogram • 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

  4. สจพ Dark image Normal image Bright image DI&SP MTCT

  5. สจพ High Contrast image Low Contrast image DI&SP MTCT

  6. Histogram

  7. Original Image Original Image - 40 Original Image + 40

  8. Original Image Original Image * 1.2 Original Image / 1.2

  9. Histogram • Histogram in Color Image RGB

  10. สจพ hi = histogram of gray level i DI&SP MTCT

  11. 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.

  12. 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.

  13. 2.3.1 Histogram Equalization • 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)

  14. 2.3.1 Histogram Equalization • Histogram Equalization Steps • Compute histogram. • Calculate normalized sum of histogram • Transform input image to output image

  15. Ex. HE • Image of 16-level intensity values Its corresponding histogram

  16. 1) Compute histogram

  17. 2) Accum. histogram

  18. 2) Accum. histogram

  19. 3) Transform input image to output image

  20. Result intensity values Its corresponding histogram

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

  22. Histogram Equalization • 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.

  23. Histogram Equalization • 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.

  24. Histogram Equalization // 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]++;}

  25. Histogram Equalization • 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 • . . .

  26. Histogram Equalization • 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]]);

  27. Original Image Histogram Equalize Image Equalization (256 Level)

  28. Histogram Equalization

  29. Histogram Equalization Equalized Image Original Image

  30. Original Image Equalized Image Histogram Equalization

  31. Saturation adjustment function Saturation image Saturation histogram Input / Output Histogram Equalization

  32. Image Histogram equalized intensity Histogram Equalization

  33. Original image Each R, G, B image is histogram equalized Histogram equalized intensity Histogram Equalization

  34. /******************************************************** • * 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 */

  35. 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]]++;

  36. /* 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]]; • }

More Related