1 / 41

# สจพ - PowerPoint PPT Presentation

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

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about ' สจพ' - laird

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

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

Dark image

Normal image

Bright image

DI&SP

MTCT

High Contrast image

Low Contrast image

DI&SP

MTCT

Original Image - 40

Original Image + 40

Original Image * 1.2

Original Image / 1.2

• Histogram in Color Image

RGB

hi = histogram of gray level i

DI&SP

MTCT

2.3.1 Histogram Equalization tone distribution over the entire range.

• 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 tone distribution over the entire range.

• Histogram Equalization Steps

• Compute histogram.

• Calculate normalized sum of histogram

• Transform input image to output image

Ex. HE tone distribution over the entire range.

• Image of 16-level intensity values

Its corresponding histogram

1) Compute histogram tone distribution over the entire range.

2) Accum. tone distribution over the entire range. histogram

2) Accum. histogram tone distribution over the entire range.

3) Transform input image to output image tone distribution over the entire range.

Result intensity values tone distribution over the entire range.

Its corresponding histogram

Histogram Equalization tone distribution over the entire range.

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

Histogram Equalization tone distribution over the entire range.

• 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 tone distribution over the entire range.

• 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 tone distribution over the entire range.

// 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 tone distribution over the entire range.

• 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 tone distribution over the entire range.

• 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 tone distribution over the entire range.

Histogram Equalize

Image

Equalization

(256 Level)

Histogram Equalization tone distribution over the entire range.

Histogram Equalization tone distribution over the entire range.

Equalized Image

Original Image

Original Image tone distribution over the entire range.

Equalized Image

Histogram Equalization

Saturation adjustment function tone distribution over the entire range.

Saturation image

Saturation histogram

Input / Output

Histogram Equalization

Image tone distribution over the entire range.

Histogram equalized intensity

Histogram Equalization

Original image tone distribution over the entire range.

Each R, G, B image is histogram equalized

Histogram equalized intensity

Histogram Equalization

• /******************************************************** tone distribution over the entire range.

• * 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 */ tone distribution over the entire range.

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

• /* tone distribution over the entire range. 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]];

• }