สจพ
Sponsored Links
This presentation is the property of its rightful owner.
1 / 41

สจพ PowerPoint PPT Presentation


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

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

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

Presentation Transcript


สจพ

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

  • 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


สจพ

Dark image

Normal image

Bright image

DI&SP

MTCT


สจพ

High Contrast image

Low Contrast image

DI&SP

MTCT


Histogram


Original Image

Original Image - 40

Original Image + 40


Original Image

Original Image * 1.2

Original Image / 1.2


Histogram

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


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)


2.3.1 Histogram Equalization

  • Histogram Equalization Steps

    • Compute histogram.

    • Calculate normalized sum of histogram

    • Transform input image to output image


Ex. HE

  • Image of 16-level intensity values

Its corresponding histogram


1) Compute histogram


2) Accum. histogram


2) Accum. histogram


3) Transform input image to output image


Result intensity values

Its corresponding histogram


Histogram Equalization

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


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.


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.


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]++;}


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

  • . . .


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]]);


Original Image

Histogram Equalize

Image

Equalization

(256 Level)


Histogram Equalization


Histogram Equalization

Equalized Image

Original Image


Original Image

Equalized Image

Histogram Equalization


Saturation adjustment function

Saturation image

Saturation histogram

Input / Output

Histogram Equalization


Image

Histogram equalized intensity

Histogram Equalization


Original image

Each R, G, B image is histogram equalized

Histogram equalized intensity

Histogram Equalization


  • /********************************************************

  • * 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]];

  • }


  • Login