طراحی فیلتر میان گذر با استفاده از فیلترهای بالاگذر و پایین گذر در حوزه فرکانس(Ideal ، Butterworth و Gaussian)

چکیده:
در این پروژه ، فیلتری را طراحی می کنیم که فرکانس های زیر ۱۰ (شعاع قطع پایین) و بالای ۲۰ (شعاع قطع بالا) را از خود عبور دهد.این فیلتر با استفاده از فیلترهای Low-pass و High-pass ایده آل ، Butterworth و Gaussian طراحی شده است. روند تعریف این فیلتر در این گزارش بیان شده و هم چنین با بررسی نتایج حاصل از این فیلترها ، به مقایسه عملکرد آنها می پردازیم.

 

شرح تکنیکی مساله:
هدف این است که فیلتری بسازیم که فرکانس های زیر ۱۰ و بالای ۲۰ را از خود عبور داده و بقیه فرکانس ها را حذف یا تضعیف کند.
تصویر اصلی، شکل (۱) ، یک تصویر ۵۰۰*۵۰۰ است که می خواهیم آن را از این فیلتر عبور دهیم. بدین منظور ابتدا یک فیلتر Low-pass ایده آل یا Butterworth یا Gaussian طراحی کرده تصویر را از آن عبور میدهیم وسپس تصویرحاصل را از یک فیلتر High-pass ایده آل یا Butterworth یا Gaussian گذر می دهیم تا به ترتیب فرکانس های زیر ۱۰ و بالای ۲۰ را تقویت کند.
اولین راهی که به ذهن می رسد این است که طبق مراحل گفته شده برای اعمال فیلتر به تصویردر حوزه فرکانس ، پس از تغییر فاز ، ابتدا تبدیل فوریه تصویررا گرفته(با دستور fft2)، وحاصل را در فیلتر Low-pass ضرب نظیر به نظیر کنیم و بعد از جواب بدست آمده عکس تبدیل فوریه بگیریم(با دستور ifft2 ) تا پس از انجام مراحل باقیمانده ، تصویر خواسته شده در حوزه مکان حاصل شود.
این الگوریتم در برنامه های (۲) ، (۳) و (۵) ، به ترتیب برای فیلتر های ایده آل ، Butterworth و Gaussian که در پیوست موجود است پیاده سازی شده و نتایج حاصل از آنها در شکل های (۵) ، (۸) و (۱۲) قابل مشاهده است.
توضیح: برای فیلتر ایده آل اول تصویر عبور داده شده از فیلتر Low-pass به صورت فایل JPEG ذخیره شد وسپس در برنامه ای جداگانه ای تصویر حاصل از فیلتر Low-passرا از یک فیلتر High-passعبور دادیم. که نتیجه همان شکل ۵-۵ است.
اما راه حل بهینه این است که دو بار از تصویرها تبدیل فوریه و عکس تبدیل فوریه نگیریم. به عبارت دیگر دو مرتبه وارد حوزه فرکانس نشویم. در نتیجه باید ابتدا تبدیل فوریه تصویر را بدست آورده و در فیلتر Low-pass ضرب کنیم. سپس جواب را در فیلتر High-pass هم ضرب کرده و از این حاصل ضرب عکس تبدیل فوریه بگیریم و بقیه مراحل تغییر فاز و … را طی کنیم. بنابراین یک بار وارد حوزه فرکانس شده و محاسبات برنامه کمتر می شود و سرعت اجرا

هم بالاتر می رود.
این الگوریتم در برنامه های (۴) و (۶) برای فیلترهای Butterworth و Gaussian که در پیوست موجود است پیاده سازی شده و نتایج حاصل از آنها در شکل های (۹) و (۱۳) مشاهده می شود.

بررسی نتایج:
طیف فوریه تصویر اصلی را در شکل(۲) می بینید که حاصل از تابع(۱) موجود در پیوست است. شکل(۳)، تصویر حاصل ازفیلتر پایین گذر ایده آل است. همان طور که مشاهده می شود، تصویربه شدت تار شده و پدیده Ringing در آن ظاهر شده است. این پدیده در شکل(۴) که حاصل از فیلتربالاگذر ایده آل است نیز قابل رویت است. شکل(۵) تصویر به دست آمده از تصویر حاصل ازاعمال فیلتر پایین گذر است که از یک فیلتربالاگذر هم گذرانده شده است. مشخص است که جزییات تصویر به کلی از بین رفته و جز حلقه های اطراف مربع های بزرگتر و چند لکه اطراف a جزییات دیگری قابل دیدن نیست.
شکل(۶) تصویر حاصل ازاعمال فیلتر پایین گذر Butterworth با مرتبه ۲ است. تصویرتار شده و لبه ها از بین رفته اند. ولی Ringing تقریبا وجود ندارد. این پدیده در تصویر حاصل از اعمال فیلتربالاگذر (شکل(۷)) نیز دیده نمی شود. زیرا مرتبه فیلتر۲ بوده است.اگر مرتبه بالاتر باشد پدیده Ringing هم اتفاق می افتد. اشکال (۸) و (۹) حاصل ازاعمال فیلتر میان گذری هستند که با الگوریتم های اول و دوم ساخته شده اند. واضح است که تفاوتی در آنها وجود ندارد. همانطور که پیش بینی می شد شدت تاری تصویر به اندازه تار شدگی شکل(۶) نیست و لبه ها کمی شارپ شده اند.
اشکال (۱۰) و (۱۱) تصاویر حاصل از اعمال فیلترهای پایین گذر و بالاگذرGaussian هستند. تارشدگی در شکل(۱۰) به شدت فیلترهای Butterworth و ایده ال نیست و هم چنین پدیده Ringing هم در آنها وجود ندارد. اشکال (۱۲)و(۱۳) هم حاصل از اعمال فیلتر میانگذر Gaussian هستند که به ترتیب از الگوریتم های ۱و۲ نتیجه شده اند.این تصاویر نسبت به (۸) و (۹) دارای لبه های شارپ تری هستند و گسستگی سطوح خاکستری بسیار کمتر از تصاویر حاصل از اعمال فیلتر Butterworth است.

نتایج:

شکل(۲) :طیف فوریه تصویر اصلی شکل(۱) :تصویر اصلی

Ideal

شکل(۴) : تصویر حاصل از فیلتر ایده آلHigh-pass شکل(۳) : تصویر حاصل از فیلتر ایده آل pass-Low

 

شکل(۵) : تصویر حاصل از فیلتر میان گذر ایده آل

Butterworth

شکل(۷) :تصویر حاصل از فیلتربالاگذر شکل(۶) : تصویر حاصل ازفیلتر پایین گذر
Butterworth Butterworth

شکل(۹) : تصویر حاصل از فیلتر میان گذر شکل(۸) : تصویر حاصل از فیلتر میان گذر
Butterworth- الگوریتم دوم Butterworth- الگوریتم اول

Gaussian

.

شکل(۱۱) : تصویر حاصل از فیلتربالاگذر شکل (۱۰) : تصویر حاصل ازفیلتر پایین گذر
Gaussian Gaussian

شکل(۱۳) : تصویر حاصل از فیلتر میان گذر شکل(۱۲) : تصویر حاصل از فیلتر میان گذر
Gaussian-الگوریتم دوم Gaussian-الگوریتم اول

پیوست:
برنامه(۱) : نمایش طیف فوریه تصویر اصلی:
img=imread(‘Fig4.11(a).jpg’);
img=double(img);
[R,C]=size(img);
for r = 1:R
for c=1:C
phased_img(r,c)=(img(r,c))*(-1)^(r+c);
end
end
fourier_img = fft2(phased_img);
mag_fourier_img = abs(fourier_img );
Log_mag_fourier_img = log10(mag_fourier_img +1);
Max=max(max(Log_mag_fourier_img));
Normalized_DFT=(Log_mag_fourier_img)*(255/Max);
imshow(uint8(Normalized_DFT))

برنامه(۲) :طراحی فیلتر میان گذر Ideal :

%Band-Pass Filter With Ideal Low-Pass & High-Pass Filters
img=imread(‘Fig4.11(a).jpg’);
img=double(img);
img=mat2gray(img);
[R,C]=size(img);
for r = 1:R
for c=1:C
phased_img(r,c)=(img(r,c))*((-1)^(r+c));
end
end
fourier_img = fft2(phased_img);
filter=fourier_img;
[M,N]=size(filter);
for r=1:M
for c=1:N
if ((((r-(M/2))^2)+ ((c-(N/2))^2))^(1/2))<=10
filter(r,c)=1;
else
filter(r,c)=0;
end
end
end
answer=filter.*fourier_img;
f=ifft2(answer);
for i=1:M
for j=1:N
f2(i,j)=real(f(i,j));
end
end
for r=1:M
for c=1:N
f2(r,c)=(f2(r,c))*((-1)^(r+c));
end
end
imshow(f2)
f3=mat2gray(f2);
imshow(f3)

img=imread(‘ideal-lowpass2.jpg’);
img=rgb2gray(img);
img=double(img);
[I,J]=size(img);
for i = 1:I
for j=1:J
phas

ed_img(i,j)=(img(i,j))*(-1)^(i+j);
end
end
fourier_img = fft2(phased_img);
filter=fourier_img;
for r=1:I
for c=1:J
if ((((r-(I/2))^2)+ ((c-(J/2))^2))^(1/2))>=20
filter(r,c)=1;
else
filter(r,c)=0;
end
end
end
answer=filter.*fourier_img;
f=ifft2(answer);
for i=1:406
for j=1:406
f2(i,j)=real(f(i,j));
end
end

for r=1:406
for c=1:406
f2(r,c)=(f2(r,c))*(-1)^(r+c);
end
end

f3=mat2gray(f2);
imshow(f3)

برنامه(۳) :تابع اولیه طراحی فیلتر میان گذر Butterworth :

%Band-Pass Filter With Butterworth Low-Pass & Hogh-Pass Filters
img=imread(‘Fig4.11(a).jpg’);
img=double(img);
img=mat2gray(img);
[R,C]=size(img);
for r = 1:R
for c=1:C
phased_img(r,c)=(img(r,c))*((-1)^(r+c));
end
end
fourier_img = fft2(phased_img);
filter=fourier_img;
[M,N]=size(filter);
for r=1:M
for c=1:N
D1=((((r-(M/2))^2)+ ((c-(N/2))^2))^(1/2));
filter(r,c)=(1/(1+((D1/10)^4)));
end
end
answer=filter.*fourier_img;
f=ifft2(answer);
for i=1:M
for j=1:N
f2(i,j)=real(f(i,j));
end

end
for r=1:M
for c=1:N
f2(r,c)=(f2(r,c))*((-1)^(r+c));
end

img2=double(f2);
[R,C]=size(img2);
for r = 1:R
for c=1:C
phased_img2(r,c)=(img2(r,c))*((-1)^(r+c));
end
end
fourier_img2 = fft2(phased_img2);
filter2=fourier_img2;
[M,N]=size(filter2);
for r=1:M
for c=1:N
D2=((((r-(M/2))^2)+ ((c-(N/2))^2))^(1/2));
filter2(r,c)=(1/(1+((20/D2)^4)));
end
end
answer2=filter2.*fourier_img2;
f2=ifft2(answer2);
for i=1:M
for j=1:N
f3(i,j)=real(f2(i,j));