## Description

# Filtering using Frequency-Domain Analysis

For the procedures below, you can use the following MATLAB functions:

*F*= fft2(*f,M,N*): Compute the*M*×*N*DFT (FFT) of*M*×*N*image*f*(*x,y*) to give*M*×*N*DFT*F*(*u,v*). •*f*= ifft2(*F,M,N*): Compute*M*×*N*DFT^{−1 }(IFFT) of*M*×*N*DFT*F*(*u,v*) to give*M*×*N*image*f*(*x,y*).

When suitable *P *and *Q *are used, both fft2 and ifft2 are useful for zero-padded quantities.

*H*= lpfilter(*TY PE,M,N,sig*) (from Gonzalez, Woods, and Eddins’s MATLAB-based book): defines an*M*×*N*lowpass filter*H*(*u,v*) of the given TYPE (‘ideal’ or ‘gaussian’) and cutoff frequency*sig*. The MATLAB .m file for this function is given on CANVAS along with the supplemental .m file for function dftuv(*M,N*). Finally, file “mainproj3.m” demonstrates many of the ideas used below.

*Basic DFT-based Frequency Analysis:*Let*f*be the*N*×*N*“checker” image.- Give figures for |
*F*(*u,v*)| and log(1 + |*F*(*u,v*)|). Next, modulate*f*(*x,y*) by (−1)^{x}^{+y }to give an image*f*(_{m}*x,y*), and give figures for |*F*(_{m}*u,v*)| and log(1+|*F*(_{m}*u,v*)|). Finally, set*F*(0*,*0) to zero and compute the inverse DFT to give a new image*g*(*x,y*). Give observations on all images. In particular: i) What do the log and modulation operations do? ii) What is the the observable and analytical difference between*g*and the original*f*? - Using only
*N*×*N*operations (i.e., you do NOT zero pad anything!), apply a Gaussian lowpass filter*H*(*u,v*) with*sig*= 15 to*f*and denote*g*(*x,y*) as the lowpass-filtered output image.- Use the MATLAB function mesh in an appropriate way to make a 3-D plot of |
*H*(*u,v*)|. - Give figures for |
*G*(*u,v*)| and*g*(*x,y*).

- Use the MATLAB function mesh in an appropriate way to make a 3-D plot of |

- Give figures for |

To display the Fourier-transform magnitude figures above, be sure to use appropriate modulation (i.e., multiply *g*(*x,y*) by (−1)^{x}^{+y}) and scaling (i.e., plot log(1 + |*G*(*u,v*)|) for |*G*(*u,v*)|).

- Repeat part (b), but now use appropriate zero padding and compute
*P*×*Q* - For the results of parts (b-c), what impact does a filter have on the output image? Do you observe wraparound error? Discuss the nature of the zero-padded results.

*Filtering a Corrupted Image:*Let*f*(*x,y*) be the “lenna” image and create the corrupted image*c*(*x,y*):

Clearly, *c*(*x,y*) will have pixels (*x,y*) having values outside the 8-bit [0,255] range. So, you must perform all processing with sufficient precision!

- Design a suitable notch filter
*H*(*u,v*) that when applied to*c*(*x,y*) gives an image*g*(*x,y*) that nearly resembles the original image*f*(*x,y*). A notch filter rejects (i.e., sets to 0) a few specific frequencies while passing all others. You must describe how you designed your filter*H*by giving analysis to back

up your design. *Lecture notes L15-15 *→ *L15-18 are very helpful here! *(b) Give suitable pictures of:

*f*(*x,y*), |*F*(*u,v*)|,*c*(*x,y*), |*C*(*u,v*)| ii. |*H*(*u,v*)|,*g*(*x,y*), |*G*(*u,v*)| iii. The image and Fourier-transform magnitude of the difference image (*f*(*x,y*) −*g*(*x,y*)).

You, of course, will need to do appropriate modulation and scaling for plotting the DFT magnitudes. (c) Is it possible to completely recover *f *from *c*? Why or why not?