Statistical Operations Gray-level transformation Histogram equalization Multi-image operations 240-373 Image Processing
Histogram If the number of pixels at each gray level in an image is counted (may use the following code fragment) for (row=0; row<rowmax; roww++) for (col=0; col=colmax; col++) { count[image[row,col]]++; } 240-373 Image Processing
Histogram The array “count” can be plotted to represent a “histogram” of the image as the number of pixels at particular gray level The histogram can yield useful information about the nature of the image. An image may be too bright or too dark. 240-373 Image Processing
Histogram Illustration 10 9 1 2 3 2 3 2 0 0 1 2 1 4 4 4 2 1 2 1 1 2 1 2 1 2 5 4 2 1 4 0 8 7 6 5 4 3 2 1 1 2 3 4 5 240-373 Image Processing
Global Attenuation in Brightness To alter the brightness of an image by adding or subtracting all pixel values with a constant for (row=0; row<rowmax; roww++) for (col=0; col=colmax; col++) { image[row,col] += constant; } 240-373 Image Processing
240-373 Image Processing
240-373 Image Processing
240-373 Image Processing
240-373 Image Processing
Thresholding Use: Operation: To remove the gray level trends in an image To make gray level more discrete To segment or split an image into distinct parts Operation: setting all gray levels below a certain level to “zero”, and above a certain level to a maximum brightness 240-373 Image Processing
Code for Thresholding for (row=0; row<rowmax; roww++) for (col=0; col=colmax; col++) { if (image[row,col] > threshold) image[row,col] = MAX; else image[row,col] = MIN; } 240-373 Image Processing
240-373 Image Processing
Thresholding Errors Rarely is it possible to identify a perfect gray level break, what we want to be background pixels become foreground or vice versa Type 1: not all pixels caught that should be included Type 2: some pixels caught should not be included in the group 240-373 Image Processing
An image before and after thresholding 240-373 Image Processing
Bunching (Quantizing) Use: to reduce the number of different gray level in an image to segment an image to remove unwanted gray level degradation Operation: Close gray levels are combined, thus removing unwanted variations in data 240-373 Image Processing
Bunching (Quantizing) Method 1: inspecting histogram and combining close group into single gray level Method 2: identifying a set of gray levels allowed in the final image, then changing the gray level in every pixel to its nearest allowed value 240-373 Image Processing
Bunching Example 0 **** 0 ****** 1 ** 1 2 ***** 2 3 ********* 0 **** 1 ** 2 ***** 3 ********* 4 ***** 5 ***** 6 ***** 7 ***** 8 ********* 9 *** 0 ****** 1 2 3 ******************* 4 5 6 *************** 7 8 9 ************ 240-373 Image Processing
Bunching Code for (row=0; row<rowmax; row++) for (col=0; col<colmax; col++) { image[row,col] = bunchsize*((int)image[row,col]/bunchsize); } bunchsize = number of levels to be grouped into one 240-373 Image Processing
Splittings Use: Operation: to increase the different two groups of gray levels so that the contrast between segments compose of one group of the other is enhanced Operation: rounding the gray levels up if they are in the range and down if they are in another 240-373 Image Processing
Splitting Example The characters on a car number-plate are at gray level 98 The background of the characters is at gray level 99 Pushing 98 down to 80 and pushing 99 up to 120 will give the picture a better contrast around the number plate Question: How to find a good splitting level? 240-373 Image Processing
Automatic Selection of Splitting Level Use: to find the best gray level for splitting--usually for thresholding to black and white Operation: Let 240-373 Image Processing
Automatic Selection of Splitting Level Let P=NxM = the number of pixels under consideration Let m(g) = mean gray level for only those pixels containing gray level between zero and g, i.e. If the maximum number of gray level is G (G=0,…,G-1) then evaluate the following equation (T = splitting threshold) A B 240-373 Image Processing
Example Histogram f(g) t(g) g.f(g) Sg.f(g) m(g) A B A*B 0 **** 4 4 0 0 0 0.08 23.04 0.18 1 ** 2 6 2 2 0.3 0.13 20.25 2.83 2 ***** 5 11 10 12 1.1 0.27 13.69 3.70 3 ********* 9 20 27 39 2 0.63 7.84 4.94 4 ***** 5 25 20 59 2.4 0.93 5.76 5.36 5 ***** 5 30 25 84 2.8 1.36 4.00 5.44 6 ***** 5 35 30 114 3.3 2.06 2.25 4.64 7 ***** 5 40 35 149 3.7 3.33 1.21 4.03 8 ********* 9 49 72 221 4.5 16.33 0.09 1.47 9 *** 3 52 27 248 4.8 -INF- T = max(A*B) - 1 = 4 240-373 Image Processing