P. 1
Frequency Domain Bandpass Filtering for Image Processing

Frequency Domain Bandpass Filtering for Image Processing

|Views: 12,978|Likes:
Published by Leonardo O Iheme
Simple Implimentation of Band Pass filters using Matlab
Simple Implimentation of Band Pass filters using Matlab

More info:

Categories:Types, Research, Science
Published by: Leonardo O Iheme on Mar 31, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

02/11/2014

pdf

text

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

27th 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: ( where ( ) ( ) ( ) ( ) the filter function and G(k,l) ) has to be re-

) is the input image in the Fourier domain,

is the filtered image. To obtain the resulting image in the spatial domain, (

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, 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 = double(ima); figure subplot(221) imshow(ima,[]); title('Original 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); 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'); title('Filtered image (Ideal)'); subplot(223) fftshow(imafft3, 'log'); title('Fourier Spectrum of Image') subplot(224) fftshow(z,'log'); 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.

(

)

(

)⁄

(

)

( ) ( )

)⁄ ( ) is

( where

are the cut frequencies of the low and high pass filters respectively; ) is the distance from the origin.

the order of the filter and (

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') 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 ( ( ( where ( ) ) ( ) )
( )

(

)

(

)

are the cut frequencies of the low and high pass filters respectively; ) is the distance from the origin.

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; 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 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') 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 Filter

Figure 4d: Original Image

Figure 4e: Ideal Filtered

Figure 4f: Butterworth Filtered

Figure 4g: Gaussian Filtered

References
[1] McAndrew A., “An Introduction to Digital Image Processing with Matlab Notes for SCM2511 Image Processing 1”, School of Computer Science and Mathematics, 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%20Algorithms/FiltersFrequency.html

[4] domain., t. f. (n.d.). Digital Filters - Frequency Filters. Informatics Homepages Server. Retrieved March 26, 2011, from http://homepages.inf.ed.ac.uk/rbf/HIPR2/freqfilt.htm [5] Anbajafari S., “Bandpass Filter for Image Processing”, Mathworks file exchange, 30 Nov 2008.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->