Methods for Digital Image Processing Digital Image Processing Digital Image Characteristics Spatial Gray-level Spectral Histogram DFT DCT Pre-Processing Enhancement Point Processing Masking Restoration Filtering Degradation Models Inverse Filtering Compression Information Theory Lossless Lossy LZW (gif) Transform-based (jpeg) Segmentation Edge Detection Description Shape Descriptors Texture Morphology Wiener Filtering Basic ideas of Image Transforms Spatial Frequency or Fourier Transform Jean Baptiste Joseph Fourier Why are Spatial Frequencies important? • Efficient data representation • Provides a means for modeling and removing noise • Physical processes are often best described in “frequency domain” • Provides a powerful means of image analysis What is spatial frequency? • Instead of describing a function (i.e., a shape) by a series of positions • It is described by a series of cosines What is spatial frequency? g(x) = A cos(x) g(x) 2 A x What is spatial frequency? g(x) Period (L) Wavelength () A cos(x 2/L) g(x) = A cos(x 2/) A cos(x 2f) Frequency f=(1/ ) Amplitude (A) Magnitude (A) x What is spatial frequency? g(x) = A cos(x 2f) g(x) A x (1/f) period But what if cosine is shifted in phase? g(x) = A cos(x 2f + ) g(x) x What is spatial frequency? Let us take arbitrary g(x) g(x) = A cos(x 2f + ) A=2 m f = 0.5 m-1 = 0.25 = 45 g(x) = 2 cos(x 2(0.5) + 0.25) 2 cos(x + 0.25) x 0.00 0.25 0.50 0.75 1.00 1.25 1.50 1.75 2.00 We substitute values of A, f and g(x) 2 cos(0.25) = 0.707106... 2 cos(0.50) = 0.0 2 cos(0.75) = -0.707106... 2 cos(1.00) = -1.0 2 cos(1.25) = -0.707106… 2 cos(1.50) = 0 2 cos(1.75) = 0.707106... 2 cos(2.00) = 1.0 2 cos(2.25) = 0.707106... We calculate discrete values of g(x) for various values of x What is spatial frequency? g(x) = A cos(x 2f + ) g(x) We calculate discrete values of g(x) for various values of x x Now we take discrete values of Ai , fi and i gi(x) = Ai cos(x 2fi + i), i = 0,1,2,3,... x Now we substitute fi = i/N gi(x) = Ai cos(x 2fi + i), i = 0,1,2,3,... gi(x) = Ai cos(x 2i/N + i), i = 0,1,2,3,…,N-1 f=i/N N = time interval 0 N Values for various values of i gi(x) = Ai cos(x 2i/N + i), i = 0,1,2,3,…,N-1 f=i/N We calculate values of function for various values of i 0 N Substituting various values of i to the formula we get various cosinusoides gi(x) = Ai cos(x 2i/N + i), i = 0,1,2,3,…,N-1 A2 A1 A0 i=0 i=1 i=2 Changing N to N/2 gi(x) = Ai cos(x 2i/N + i), i = 0,1,2,3,…,N/2 - 1 If N equals the number of pixel in a line, then... i=0 Lowest frequency i=N/2 - 1 Highest frequency What is spatial frequency? gi(x) = Ai cos(x 2i/N + i), i = 0,1,2,3,…,N/2-1 If N equals the number of pixels in a line, then... i=0 Lowest frequency i=N/2-1 Highest frequency What will happen if we take N/2? gi(x) = Ai cos(x 2i/N + i), i = 0,1,2,3,…,N/2-1 If N equals the number of pixel in a line, then... i=0 Lowest frequency i=N/2 Too high Redundant frequency What is spatial frequency? g(x) = A cos(x 2f + ) gi(x) = Ai cos(x 2i/N + i), i = 0,1,2,3,…,N/2-1 g ( x) i N / 2 1 i N / 2 1 g x A cosx 2 i / N i 0 i i 0 i i We try to approximate a periodic function with standard trivial (orthogonal, base) functions Low frequency Medium frequency + = High frequency + We add values from component functions point by point + = + g(x) i=1 i=2 i=3 i=4 i=5 i=63 Example of periodic function created by summing standard trivial functions x 0 127 g(x) i=1 i=2 i=3 i=4 i=5 i=10 x 0 Example of periodic function created by summing standard trivial functions 127 64 terms g(x) 10 terms g(x) Example of periodic function created by summing standard trivial functions Fourier Decomposition of a step function (64 terms) g(x) i=1 i=2 i=3 i=4 i=5 Example of periodic function created byi=63 summing standard trivial functions x 0 127 Fourier Decomposition of a step function (11 terms) g(x) i=1 i=2 i=3 i=5 Example of periodic function created by summing standard trivial functions i=10 x i=4 0 63 Main concept – summation of base functions Any function of x (any shape) that can be represented by g(x) can also be represented by the summation of cosine functions g ( x) i N / 2 1 A cosx 2 i / N i 0 i i Observe two numbers for every i Information is not lost when we change the domain Spatial Domain gi(x) = 1.3, 2.1, 1.4, 5.7, …., i=0,1,2…N-1 N pieces of information Frequency Domain g i ( x) i N / 2 1 A cosx 2 i / N i 0 i i N pieces of information N/2 amplitudes (Ai, i=0,1,…,N/2-1) and N/2 phases (i, i=0,1,…,N/2-1) and Information is not lost when we What is spatial frequency? change the domain i N / 2 1 gi(x) and A cosx 2 i / N i 0 i i Are equivalent They contain the same amount of information The sequence of amplitudes squared is the SPECTRUM EXAMPLE Substitute values A cos(x2i/N) frequency (f) = i/N wavelength (p) = N/I i 0 1 16 256 N=512 f 0 1/512 1/32 1/2 p infinite 512 32 2 Assuming N we get this table which relates frequency and wavelength of component functions More examples to give you some intuition…. Fourier Transform Notation • g(x) denotes an spatial domain function of real numbers – (1.2, 0.0), (2.1, 0.0), (3.1,0.0), … • G() denotes the Fourier transform • G() is a symmetric complex function (-3.1,0.0), (4.1, -2.1), (-3.1, 2.1), …(1.2,0.0) …, (-3.1,-2.1), (4.1, 2.1), (-3.1,0.0) • G[g(x)] = G(f) is the Fourier transform of g(x) • G-1() denotes the inverse Fourier transform • G-1(G(f)) = g(x) Power Spectrum and Phase Spectrum complex Complex conjugate • |G(f)|2 = G(f)G(f)* is the power spectrum of G(f) – (-3.1,0.0), (4.1, -2.1), (-3.1, 2.1), … (1.2,0.0),…, (-3.1,-2.1), (4.1, 2.1) – 9.61, 21.22, 14.02, …, 1.44,…, 14.02, 21.22 • tan-1[Im(G(f))/Re(G(f))] is the phase spectrum of G(f) – 0.0, -27.12, 145.89, …, 0.0, -145.89, 27.12 1-D DFT and IDFT Equal time intervals • Discrete Domains – Discrete Time: – Discrete Frequency: k = 0, 1, 2, 3, …………, N-1 n = 0, 1, 2, 3, …………, N-1 Equal frequency intervals • Discrete Fourier Transform X[n ] • Inverse DFT x[k ] 2 nk j N 1 x[k ] e N ; k 0 n = 0, 1, 2,….., N-1 2 nk j 1 N 1 X[n ] e N ; k = 0, 1, 2,….., N-1 N n 0 Fourier 2D Image Transform Another formula for Two-Dimensional Fourier Image is function of x and y A cos(x2i/N) B cos(y2j/M) fx = u = i/N, fy = v =j/M Now we need two cosinusoids for each point, one for x and one for y Lines in the figure correspond to real value 1 Now we have waves in two directions and they have frequencies and amplitudes Fourier Transform of a spot Original image Fourier Transform Transform Results image transform spectrum Two Dimensional Fast Fourier in Matlab Filtering in Frequency Domain … will be covered in a separate lecture on spectral approaches….. •H(u,v) for various values of u and v •These are standard trivial functions to compose the image from < < image ..and its spectrum Image and its spectrum Image and its spectrum Image and its spectrum Convolution Theorem Let g(u,v) be the kernel Let h(u,v) be the image G(k,l) = DFT[g(u,v)] H(k,l) = DFT[h(u,v)] Then This is a very important result DFT1 G H g h where means multiplication and means convolution. This means that an image can be filtered in the Spatial Domain or the Frequency Domain. Convolution Theorem Let g(u,v) be the kernel Let h(u,v) be the image G(k,l) = DFT[g(u,v)] H(k,l) = DFT[h(u,v)] Instead of doing convolution in spatial domain we can do multiplication In frequency domain Then Multiplication in spectral domain Convolution in spatial domain DFT1 G H g h where means multiplication and means convolution. v Image u Spectrum Noise and its spectrum Noise filtering Image v u Spectrum Spectrum log(X(k,l)) Image x(u,v) l v u k Image of cow with noise Spectrum log(X(k,l)) Image x(u,v) l v u k white noise white noise spectrum kernel spectrum (low pass filter) red noise red noise spectrum Filtering is done in spectral domain. Can be very complicated Image Transforms • Fast Fourier – 2-D Discrete Fourier Transform • Fast Cosine – 2-D Discrete Cosine Transform • • • • • • Radon Transform Slant Walsh, Hadamard, Paley, Karczmarz Haar Chrestenson Reed-Muller Discrete Cosine Transform (DCT) •Used in JPEG and MPEG •Another Frequency Transform, with Different Set of Basis Functions Discrete Cosine Transform in Matlab “Statistical” Filters •Median Filter also eliminates noise •preserves edges better than blurring •Sorts values in a region and finds the median •region size and shape •how define the median for color values? “Statistical” Filters Continued •Minimum Filter (Thinning) •Maximum Filter (Growing) •“Pixellate” Functions Now we can do this quickly in spectral domain •Thinning •Growing Pixellate Examples DCT Features Fringe Pattern Can be used for face recognition, tell my story from Japan. DCT Coefficients DCT Zonal Mask 1 1 Artificial Neural Network (1,1) (1,2) Feature (2,1) Vector (2,2) . . . 2 3 4 5 2 3 4 5 Noise Removal Transforms for Noise Removal Image with Noise Transform Image reconstructed Image Segmentation Recall: Edge Detection f(x,y) Gradient Mask -1 -2 -1 0 0 0 1 2 1 fe(x,y) -1 0 1 -2 0 2 -1 0 1 Now we do this in spectral domain!! Image Moments 2-D continuous function f(x,y), the moment of order (p+q) is: m pq x p y q f ( x, y ) dx dy p, q 0, 1, 2.... Central moment of order (p+q) is: pq ( x x) p ( y y ) q f ( x, y ) dx dy where m10 m01 x ; y m00 m00 Image Moments (contd.) Normalized central moment of order (p+q) is: pq pq 00 ; where pq 1; 2 for p, q 2, 3,..... A set of seven invariant moments can be derived from pq Now we do this in spectral domain!! Image Textures Grass Sand Brick wall Now we do this in spectral domain!! The USC-SIPI Image Database http://sipi.usc.edu/ Problems • There is a lot of Fourier and Cosine Transform software on the web, find one and apply it to remove some kind of noise from robot images from FAB building. • Read about Walsh transform and think what kind of advantages it may have over Fourier • Read about Haar and Reed-Muller transform and implement them. Experiment Sources • Howard Schultz, Umass • Herculano De Biasi • Shreekanth Mandayam • ECE Department, Rowan University • http://engineering.rowan.edu/~shreek/fall01/dip/ http://engineering.rowan.edu/~shreek/fall01/dip/lab4.html Image Compression Please visit the website http://www.cs.sfu.ca/CourseCentral/365/li/material/notes/Chap4/Chap4.html