رفتن به مطلب

طراحی فیلتر


ارسال های توصیه شده

سلام. من می خوام یه چند تا فیلتر رو روی تصویر اعمال کنم. طراحی یه سری فیلترها رو دارم (مثلا کسینوسی وهمینگ و ..). می خوام دو سه تا فیلتر دیگه به این فانکشن اضافه کنم .

یکیش باترورثه که تو فضای فرکانس میشه:

gif.latex?BW(f)=\frac{1}{\sqrt{1+(\frac{f}{f_{_{c}}})^{2n}}}

 

و دو تا پارامتر داره : fc که فرکانس هست و توی اونای دیگه هم بود و n که تو اونا نبود (نوشته order اونجا هم یه همچین اسمی هست ولی به عنوان ورودی ما تعیینش نمی کردیم!). من اصلا با فیلترها آشنا نیستم.نمی دونم چجوری باید اینو وارد کنم یه چیزی نوشتم همینجوری ولی شکلش اصلا شبیه باترورث نشد :whistle: ( تو فایل پیوست designfilter2 اونی هست که من تغییر دادم)

code.rar

لینک به دیدگاه
سلام. من می خوام یه چند تا فیلتر رو روی تصویر اعمال کنم. طراحی یه سری فیلترها رو دارم (مثلا کسینوسی وهمینگ و ..). می خوام دو سه تا فیلتر دیگه به این فانکشن اضافه کنم .

یکیش باترورثه که تو فضای فرکانس میشه:

gif.latex?BW(f)=\frac{1}{\sqrt{1+(\frac{f}{f_{_{c}}})^{2n}}}

 

و دو تا پارامتر داره : fc که فرکانس هست و توی اونای دیگه هم بود و n که تو اونا نبود (نوشته order اونجا هم یه همچین اسمی هست ولی به عنوان ورودی ما تعیینش نمی کردیم!). من اصلا با فیلترها آشنا نیستم.نمی دونم چجوری باید اینو وارد کنم یه چیزی نوشتم همینجوری ولی شکلش اصلا شبیه باترورث نشد :whistle: ( تو فایل پیوست designfilter2 اونی هست که من تغییر دادم)

 

سلام

چرا از همین تابع استفاده نمی کنی، fc فرکانس قطع میشه دیگه، یعنی فاصله از مرکز فیلتر (وسط تصویر)، n هم همونجور که گفتی درجه فلتره، هر چی بیشتر بشه، شیب فیلتر توی فرکانس قطع تند تر میشه و فیلتر به حالت ایده آل نزدیک تر، n هم یک بذار، nextpow2 هم نمی خواد .

 

کد هم اول به صورت ام فایل بنویس، بعد که مطمن شدی تبدیل به فانکشنشون کن، توی فانکشن ها چون دسترسی به ورک اسپسش نداریم کدنویسی سخت تر میشه.

لینک به دیدگاه
سلام

چرا از همین تابع استفاده نمی کنی، fc فرکانس قطع میشه دیگه، یعنی فاصله از مرکز فیلتر (وسط تصویر)، n هم همونجور که گفتی درجه فلتره، هر چی بیشتر بشه، شیب فیلتر توی فرکانس قطع تند تر میشه و فیلتر به حالت ایده آل نزدیک تر، n هم یک بذار، nextpow2 هم نمی خواد .

 

کد هم اول به صورت ام فایل بنویس، بعد که مطمن شدی تبدیل به فانکشنشون کن، توی فانکشن ها چون دسترسی به ورک اسپسش نداریم کدنویسی سخت تر میشه.

 

آخه باید توی همین فانکشن چند تا فیلتر دیگه رو اضاف کنم. فانکشنه درست هست. ولی یه قسمت هایی ازش رو متوجه نمی شم. مثلا همون خط که nextpow2 داره، یا اینکه چرا اومده همش از 2 حساب کرده (2:end) یا مهمتر اینکه اون آخرش چرا متقارنش کرده اینجوری که طولشون میشه256؟ بعد اومده یه سری صفر به تصویر اضاف کرده که اونم بشه 256 بعد فیلترش کرده آخرش باز اون قسمتهایی رو که اضاف کرده بود حذف کرده که طول تصویر مثل حالت اولش بشه؟! چرا؟؟؟

ام فایلش رو هم گذاشتم. نمی دونم چرا بعضی جاها رادیکال فرمول رو حذف کردن؟!

but.rar

لینک به دیدگاه
آخه باید توی همین فانکشن چند تا فیلتر دیگه رو اضاف کنم. فانکشنه درست هست. ولی یه قسمت هایی ازش رو متوجه نمی شم. مثلا همون خط که nextpow2 داره، یا اینکه چرا اومده همش از 2 حساب کرده (2:end) یا مهمتر اینکه اون آخرش چرا متقارنش کرده اینجوری که طولشون میشه256؟ بعد اومده یه سری صفر به تصویر اضاف کرده که اونم بشه 256 بعد فیلترش کرده آخرش باز اون قسمتهایی رو که اضاف کرده بود حذف کرده که طول تصویر مثل حالت اولش بشه؟! چرا؟؟؟

ام فایلش رو هم گذاشتم. نمی دونم چرا بعضی جاها رادیکال فرمول رو حذف کردن؟!

 

چرا fc رو 0.7 گذاشتی، fc فرکانسی هست که مقدار فیلتر تو اون نقطه یک تقسیم بر رادیکال 2 یا همون 0.7 میشه، خودش برابر 0.7 نیست، بالا هم گفتم فاصله از مرکز تصویر هست، شعاع باندگذرمون رو مشخص می کنه، بخوام عادی بنویسم اینجوری میشه:

 

clear;
img = imread('Moon.tif');
[c,r] = size(img);
fc = 50;
n = 1;

[x,y] = meshgrid(1:r,1:c);
BW = 1./sqrt(1+(((x-(r+1)/2).^2+(y-(c+1)/2).^2)/50^2).^n);

imshow(BW)

figure;
imshow(abs(ifft2(ifftshift(BW.*fftshift(fft2(img))))),[])

 

اگه n رو یک بذارم تغییرات خیلی ملایم هست، خیلی با یه فلتر ایده آل تفاوت داره:

 

a11nqn18foc59kfvte4.png

 

 

اگه بیام n رو 3 بذارم، کاملا باندگذر (Passband) فیلترمون مشخص میشه، یه دایره به شعاع 50 توی مرکزش داریم:

 

jt3b49ap4lrjmiffjm2d.png

 

nextpow2 هم برای سرعت استفاده میشه، به این معنی که سرعت محاسبه تبدیل فوریه یه ماتریسی که ابعادش توانی از دو نباشه، کندتر از ماتریسی با ابعاد بزرگ تر ولی توان دو باشه. البته این همیشه برای FFT متلب صادق نیست. دلیل دیگه ای که هم هست اینه بعضی توابعی که برای محاسبه تبدیل فوریه نوشته میشد نیاز داشت که حتما ابعاد ماتریس ها توان دو باشه، که باز برای متلب مهم نیست که اینجوری باشه، البته در مورد سرعت ممکنه کمتر بشه.

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...