Point Processing • Basic Image Processing Operations • Arithmetic Operations • Histograms SCCS 476 1 Basic Image Processing Operations Image-Processing operations may be divided into 3 classes based on information required to perform the transformation. • Transforms – process entire image as one large block • Neighborhood processing – process the pixel in a small neighborhood of pixels around the given pixel. • Point operations – process according to the pixel’s value alone (single pixel). SCCS 476 2 Schema of Image Processing Image Transform Transformed Image Image-processing operation Output Image Inverse Transform SCCS 476 Processed Transformed Image 3 Arithmetic Operations • • • • • Addition Subtraction Multiplication Division Complement SCCS 476 4 Arithmetic Operations (cont) Let x is the old gray value, y is the new gray value, c is a positive constant. • • • • • Addition: y = x + c Subtraction: y = x - c Multiplication: y = cx Division: y = x/c Complement: y= 255 - x SCCS 476 5 Arithmetic Operations (cont) • • • • • Addition: y = x + c Subtraction: y = x - c Multiplication: y = cx Division: y = x/c Complement: y= 255 - x To ensure that the results are integers in the range [0, 255], the following operations should be performed • Rounding the result to obtain an integer • Clipping the result by setting • y = 255 if y > 255 • y = 0 if y < 0 SCCS 476 6 Arithmetic Operations (cont) • MATLAB functions – Addition: imadd(x,y) • Add two images or add constant to image – Subtraction: imsubstract(x,y) • Subtract two images or subtract constant to image – Multiplication: immultiply(x,y) • Multiply two images or multiply image by constant – Division: imdivide(x,y) • Divide two images or divide image by constant – Complement: imcomplement(x) SCCS 476 7 Addition & Subtraction • Lighten/darken the image • Some details may be lost • MATLAB: – commands: • x = imread(‘filename.ext’); • y = uint8(double(x) + c); or • y = uint8(double(x) - c); – function: • x = imread(‘filename.ext’); • y = imadd(x, c); or • y = imsubtract(x, c); SCCS 476 8 Ex: Addition & Subtraction Added by 128 Subtracted by 128 Draw graphs of the transformation functions !!! SCCS 476 9 Multiplication & Division • Lighten/darken the image • Some details may be lost (but less than addition/subtraction) • MATLAB: – commands: • x = imread(‘filename.ext’); • y = uint8(double(x)*c); or • y = uint8(double(x)/c); – functions: • x = imread(‘filename.ext’); • y = immultiply(x, c); or • y = imdivide(x, c); SCCS 476 10 Ex: Multiplication & Division Multiplied by 2 Divided by 2 Draw graphs of the transformation functions !!! SCCS 476 11 Comparison: Addition VS Multiplication SCCS 476 12 Comparison: Subtraction VS Division SCCS 476 13 Complement • Create the negative image • MATLAB: – commands: • x = imread(‘filename.ext’); • y = uint8(255 - double(x)); – function: • x = imread(‘filename.ext’); • y = imcomplement(x); SCCS 476 14 Ex: Complement Draw a graph of the transformation function !!! SCCS 476 15 Histogram • Graph showing the number of pixels for each intensity • Normalized histogram: histogram where the number of pixel is divided by the total number of pixel so the range is [0,1] • Cumulative histogram: histogram which shows the number of pixels whose intensity is less or equal to each intensity. SCCS 476 16 Histogram Example >> p = imread(‘pout.tif’) >> inshow(p) >> figure;imhist(p) SCCS 476 17 What Histogram Describes? • Brightness – dark image has gray levels (histogram) clutered at the lower end. – bright image has gray levels (histogram) clutered at the higher end. • Contrast – well contrasted image has gray levels (histogram) spread out over much of the range. – low contrasted image has gray levels (histogram) clutered in the center. SCCS 476 18 Contrast Enhancement by Spreading Out Histogram • Histogram Stretching (Contrast Stretching) • Histogram Equalization SCCS 476 19 1. Histogram Stretching #pixel #pixel Imin Imax I 0 SCCS 476 I max 20 Steps of Histogram/Contrast Stretching • Create the histogram of the image Gray level ( i ) No. of gray value ( ni ) 0……………………………………………. 15 1……………………………………………. . 0 2……………………………………………. . 0 3……………………………………………. .0 4……………………………………………. . 0 5……………………………………………. 70 6……………………………………………110 7……………………………………………. 45 8…………………………………………… 70 9……………………………………………. 35 10………………………………………..... . 0 11………………………………………….. 0 12…………………………………………... 0 13…………………………………………… 0 14…………………………………………… 0 15………………………………………….. 15 SCCS 476 Draw the histogram. 21 Steps of Histogram/Contrast Stretching (cont) • From the histogram, stretch out the gray levels in the center of the range by applying the piecewise linear function – Ex: [5,9] [2,14] – y = [(14 – 2)/(9 – 5)](x – 5) + 2, Draw a graph of transformation x y 5 6 7 8 9 2 5 8 11 14 • Gray levels outside this range are either left as original values or transforming according to the linear function at the ends of the graph. SCCS 476 22 Steps of Histogram/Contrast Stretching (cont) • Change the old gray values to the new gray values by using the piecewise linear function from the previous step as a mapping function. • Create the histogram from the new image SCCS 476 23 Histogram Stretching: Example original output SCCS 476 24 Histogram before/after Adjustment After Before SCCS 476 25 Histogram Mapping: Piecewise Linear #pixel Imin #pixel Ix1 Ix2 Imax I Imin Iy1 Iy2 Imax I Mapping function: I Ix1 or I Ix2 I; ( I Ix1) ( Iy2 Iy1) Iy1; Ix1 I Ix2 ( Ix2 Ix1) SCCS 476 26 MATLAB: Histogram/Contrast Stretching • Command: imadjust • Syntax: imadjust(x, [a,b], [c,d]); imadjust(x, [a,b], [c,d], ); – convert intensity x a to c – convert intensity x b to d – values of a,b,c,d must be between 0 and 1 – : positive constant (describe the shape of the function, < 1 concave downward, > 1 concave upward) SCCS 476 27 Transformation Function with Gamma (Power –Law Transformation) Brighten image Linear mapping Darken image input a output ( d c) c ba SCCS 476 28 Example of Adjusting by the PowerLaw Transformation Adjust by using Gamma = 0.5 Original SCCS 476 29 MATLAB: Piecewise Linear • A MATLAB function for applying a piecewise linear-stretching function (see Figure 4.15) • Command: find • Syntax: find(condition) • Ex pix = find(im >= a(i) & im < a(i+1)); pix holds the index for members in im having intensity between a(i) and a(i+1) include a(i). SCCS 476 30 2. Histogram Equalization • The trouble with the methods of histogram stretching is that they require user input. • Histogram equalization is an entirely automatic procedure. • Idea: Each gray level in the image occurs with the same frequency. • Give the output image with uniform intensity distribution. SCCS 476 31 Histogram Equalization (cont) • Mapping function: g output ( f input ) f input p(i), i 0 where p(i) is the PDF of the intensity level i, obtained from cumulative histogram. SCCS 476 32 Histogram Equalization: Procedure Example: Suppose a 4-bit grayscale image has the histogram associated with a table of the numbers ni of gray values. (page 78) SCCS 476 33 Histogram Equalization: Example BEFORE AFTER http://www.mathworks.com/access/helpdesk/help/toolbox/images/histeq.html SCCS 476 34 MATLAB: Histogram Equalization • Command: histeq • Syntax: histeq(image, target_hist) histeq(image, #bin) histeq(indexed_im, #bin, target_hist) histeq(indexed_im, map, #bin) • Default: #bin = 64 • Output: output_im, [output_im, transform], new_map, [new_map, transform] SCCS 476 35 Lookup Tables • Improve the performance of point processing • Why? – one intensity is always mapped to the same value – reduce the computing time • Lookup table: array Input intensity: index in the array Output intensity: value of the member SCCS 476 36 Ex: Lookup Table (1) • Function: output = input/2; • MATLAB >> T = uint8(floor(0:255)/2); >> output = T(input); SCCS 476 37 Ex: Lookup Table in MATLAB (2) • Function: 0.6667 input; input 96 output 2 input 128; 96 input 161 0.6632 input 85.8947;161 input • MATLAB >> T1 = 0.6667*[0:95]; >> T2 = 2*[96:160] – 128; >> T3 = 0.6632*[161:255] + 85.8947; >> T = uint8(floor([T1 T2 T3])); SCCS 476 38