EASTERN MEDITERRANEAN UNIVERSITY Electrical and Electronic Engineering Department EE 583 (Digital Image Processing)
Home Work IV
PREPARED BY:
LEONARDO O. IHEME (106054)
SUBMITTED TO: Assoc. Prof. Dr. Hasan Demirel
th
27 March, 2011
Frequency Domain Filtering Frequency filtering is based on the Fourier Transform. The operator usually takes an image and a filter function in the Fourier domain. This image is then multiplied with the filter function in a pixel-by-pixel fashion:
( ) () ()( ( ) () is the input image in the Fourier domain, () the filter function and G(k,l) is the filtered image. To obtain the resulting image in the spatial domain, () has to be re-
where
transformed using the inverse Fourier Transform. Since the multiplication in the Fourier space is identical to convolution in the spatial domain, all frequency filters can in theory be implemented as a spatial filter. However, in practice, the Fourier domain filter function can only be approximated by the filtering kernel in spatial domain.
Frequency Domain Bandpass Filters A bandpass attenuates very low and very high frequencies, f requencies, but retains a middle range band of frequencies. Bandpass filtering can be used to enhance edges (suppressing low frequencies) while reducing the noise at the same time (attenuating high frequencies). We obtain the filter function of a bandpass by multiplying the filter functions of a low pass and of a high pass in the frequency domain, where the cut-off frequency of the low pass is higher than that of the high pass. Therefore in theory, one can derive a bandpass filter function if the low pass filter function is available. Bandpass filtering is attractive but there is always a trade-off between blurring and noise: low pass reduces noise but accentuates blurring, high pass reduces blurring but accentuates noise
Ideal Bandpass Filter The ideal bandpass filter passes only frequencies within the pass band and gives an output in the spatial domain that is in most cases blurred and/or ringed. It is the easiest bandpass filter to simulate but its vertical edges and sharp corners are not realizable in the physical world. An ideal bandpass filter with a frequency range of
is defined as follows:
( ) { () The following example demonstrates the effect of applying an ideal bandpass filter with cut off frequencies of 30 and 120 to a grey scale 256×256 image.
Figure 1a: Original Image
Figure 1b: Filtered Image
Figure 1c: Frequency Spectrum of Image
Figure 1d: Frequency domain filter function
As expected, the ideal filter has the effect of ringing and blurring on the original image. The associated Matlab code is given below: % Ideal Bandpass Filter clc clear all close all ima=imread('grass2.jpg' ima=imread('grass2.jpg'); ); ima = double(ima); figure subplot(221) imshow(ima,[]); title('Original title('Original image'); image'); imafft = fftshift(fft2(fftshift(ima))); % Fourier Spectrum of Image imafft2 = fft2(ima); imafft3 = fftshift(imafft2); s = size(ima); ma=max(max((imafft))); maxr = 0.5*sqrt(s(1)^2+s(2)^2 0.5*sqrt(s(1)^2+s(2)^2); ); cutoff1 = maxr*30; cutoff2 = maxr*120; c=1; for i = 1 : s(1) for j = 1 : s(2) r = sqrt((i-1-s(1)/2)^2+(j-1-s(2)/2)^2); if ( r < 30) z(i,j) = 0; else if ( r > 120) z(i,j) = 0; else z(i,j) =255; end end end end
% Plots subplot(222) imafft=imafft.*z/255; ima_out = fftshift(ifft2(fftshift(imafft))); ima_out =ima_out-ima; fftshow(ima_out,'abs' fftshow(ima_out, 'abs'); ); title('Filtered title('Filtered image (Ideal)'); (Ideal)'); subplot(223) fftshow(imafft3, 'log' 'log'); ); title('Fourier title('Fourier Spectrum of Image') Image') subplot(224) fftshow(z,'log' fftshow(z,'log'); ); title('Filtered' title('Filtered'); );
Butterworth Bandpass Filter This filter can be derived mathematically by multiplying the transfer functions of a a low and high pass filter. The low pass filter will have the higher cut off frequency.
() () )⁄
( ) () )⁄ ( ) ( ) ( ) are the cut frequencies of the low and high pass filters respectively; is the order of the filter and () is the distance from the origin.
where
The Butterworth filter has a “smooth” transfer function without any discontinuity or clear cut off frequency. The range of frequencies that the filter allows is largely dependent on the order of the filter. In the selection of
there has to be a compromise between the demands of the
frequency domain (sharp cutoff) and the spatial domain (rapid decay). The example presented in this section demonstrates the effect of applying a fourth order Butterworth filter with cut off frequencies 30 and 120 to a 256×256 grey scale image.
Figure 2a: Original Image
Figure 2b: Filtered Image
Figure 2c: Frequency domain filter function
The result shows that the ringing and blurring effect that was observed with the ideal banpass filter does not exist for the Butterworth filter. The Matlab code is presented below: % Bandpass Butterworth Filter clear all; close all; clc micro = imread('grass2.jpg'); micro = double(micro); [nx ny] = size(micro); nx ny u = micro; micro = uint8(u); imwrite(micro, 'grass5.jpg'); fftu = fft2(u,2*nx-1,2*ny-1); fftu = fftshift(fftu); subplot(2,2,1) imshow(micro,[]); subplot(2,2,2) fftshow(fftu,'log') % Initialize filter. filter1 = ones(2*nx-1,2*ny-1); filter2 = ones(2*nx-1,2*ny-1); filter3 = ones(2*nx-1,2*ny-1); n = 4; for i = 1:2*nx-1 for j =1:2*ny-1 dist = ((i-(nx+1))^2 + (j-(ny+1))^2)^.5; % Use Butterworth filter. filter1(i,j)= 1/(1 + (dist/120)^(2*n)); filter2(i,j) = 1/(1 + (dist/30)^(2*n)); filter3(i,j)= 1.0 - filter2(i,j); filter3(i,j) = filter1(i,j).*filter3(i,j); end end
% Update image with passed frequencies. fil_micro = fftu + filter3.*fftu; subplot(2,2,3) fftshow(filter3,'log' fftshow(filter3, 'log') ) fil_micro = ifftshift(fil_micro); fil_micro = ifft2(fil_micro,2*nx-1,2*ny-1); fil_micro = real(fil_micro(1:nx,1:ny)); fil_micro = uint8(fil_micro); subplot(2,2,4) imshow(fil_micro,[])
Gaussian Bandpass Filter The Gaussian filter out-performs the previously discussed filter types because when a Gaussian is transformed between the frequency and spatial domains, it remains a Gaussian; and therefore does not incur the ringing effect in the spatial domain of the filtered image. Again the derivation of a Gaussian bandpass filter starts from the lowpass filter
( ) () ( ) () ( ) ( ) ( ) are the cut frequencies of the low and high pass filters respectively; () is the distance from the origin. where
The example below shows that the Gaussian bandpass filter is the best among the three discussed filters
Figure 3a: Original Image
Figure 3b: Filtered Image
Figure 3c: Frequency domain filter function
The Matlab code is presented below % Gaussian Bandpass Filter clear all all; ; close all all; ; clc micro = imread('grass2.jpg' imread('grass2.jpg'); ); micro = double(micro); [nx ny] = size(micro); nx ny u = micro; micro = uint8(u); imwrite(micro, 'grass5.jpg' 'grass5.jpg'); ); fftu = fft2(u,2*nx-1,2*ny-1); fft2(u,2*nx-1,2*ny-1); fftu = fftshift(fftu); fftshift(fftu); subplot(2,2,1) imshow(micro,[]); subplot(2,2,2) fftshow(fftu,'log' fftshow(fftu,'log') ) % Initialize filter. filter1 = ones(2*nx-1,2*ny-1); filter2 = ones(2*nx-1,2*ny-1); filter3 = ones(2*nx-1,2*ny-1);
n = 4; for i = 1:2*nx-1 for j =1:2*ny-1 dist = ((i-(nx+1))^2 + (j-(ny+1))^2)^.5; % Use Gaussian filter. filter1(i,j) = exp(-dist^2/(2*120^2)); filter2(i,j) = exp(-dist^2/(2*30^2)); filter3(i,j) = 1.0 - filter2(i,j); filter3(i,j) = filter1(i,j).*filter3(i,j); end end % Update image with passed frequencies fil_micro = fftu + filter3.*fftu; subplot(2,2,3) fftshow(filter3,'log' fftshow(filter3, 'log') ) fil_micro = ifftshift(fil_micro); fil_micro = ifft2(fil_micro,2*nx-1,2*ny-1); fil_micro = real(fil_micro(1:nx,1:ny)); fil_micro = uint8(fil_micro); subplot(2,2,4) imshow(fil_micro,[])
Conclusion From the human perspective, the Gaussian filter would be the most appropriate filter for filtering. Determining which filter to use is dependent on the application so desired. The figure below shows the different filters and the result of their application to the grey scale image.
Figure 4a: Ideal Bandpass Filter
Figure 4b: Butterworth Bandpass Filter
Figure 4c: Gaussian Bandpass Bandpass Filter
Figure 4d: Original Image
Figure 4e: Ideal Filtered
Figure 4f: Butterworth Filtered
Figure 4g: Gaussian Filtered
References [1] McAndrew A., A., “An Introduction to Digital Image Processing with Matlab Notes for SCM2511 Image Processing 1”, School of Computer Science and Ma thematics, Victoria University of Technology. [2] Demirel H., “Digital Image Processing Notes (Lecture 4)” Electrical and Electronic Engineering, Eastern Mediterranean University, Spring 2010-2011. [3] Filters (Frequency). (n.d.). Medical Image Processing, Analysis and Visualization . Retrieved March 26, 2011, from http://mipav.cit.nih.gov/documentation/HTML http://mipav.cit.nih.gov/d ocumentation/HTML%20Algorithms/FiltersFreq %20Algorithms/FiltersFrequency.html uency.html
Informatics Homepages [4] domain., t. f. (n.d.). Digital Filters - Frequency Filters. Informatics Server . Retrieved March 26, 2011, from http://homepages.inf.ed.ac.uk/rbf/HIPR2/freqfilt.htm
[5] Anbajafari S., S., “Bandpass Filter for Image Processing”, Mathworks file exchange, 30 Nov 2008.