فیلتر تصویر در حوزه فرکانس با FFT

قسمت 7
مشاهده سایر جلسات آموزش
157 بازدید
۱۴۰۵-۰۲-۱۳
6 دقیقه
  • نویسنده: Sepehr Kouzegaran
  • درباره نویسنده: ---

در قسمت قبل با نحوه‌ی ایجاد کردن ماسک‌های دایره ای و حلقوی آشنا شدیم. از این روش برای پیاده سازی فیلتر در حوزه فرکانس و فیلتر کردن تصویر می توان استفاده کرد. در این قسمت ابتدا نحوه‌ی بدست آوردن طیف تصویر در حوزه‌ی فرکانس را بررسی کرده و سپس با استفاده از روشی که در قسمت قبلی مطرح کردیم فیلتر طراحی کرده و تصویر را در حوزه‌ی فرکانس فیلتر می‌کنیم.

 

کد های پایتون نوشته در این آموزش، در یک فایل ژوپیتر نوت بوک نوشته شده اند. لینک دانلود فایل ژوپیتر نوت بوک مربوط به این آموزش در انتهای صفحه قرار داده شده است.

برای تعریف آرایه ها کتابخانه numpy، برای ترسیم نمودار کتابخانه matplotlib و برای خواندن تصویر کتابخانه cv2 را import می‌کنیم.

فیلتر تصویر در حوزه فرکانس با FFT

از تصویر cameraman استفاده می‌کنیم. موقع خواندن تصویر در آرگومان دوم مقدار 0 را ارسال می‌کنیم تا تصویر به صورت سیاه و سفید خوانده شود.

فیلتر تصویر در حوزه فرکانس با FFTفیلتر تصویر در حوزه فرکانس با FFT

تصویر خروجی:

فیلتر تصویر در حوزه فرکانس با FFT

محاسبه‌ی طیف تصویر

برای بدست آوردن طیف تصویر در حوزه‌ی فرکانس از تابع fft دو بعدی (fft2) استفاده می‌کنیم. این تابع در خروجی، یک ماتریس دو بعدی شامل مقادیر مختلط بر می‌گرداند. می‌توان مقدار دامنه یا فاز این مقادیر مختلط را بدست آورده و نمایش داد. اگر دامنه‌ی طیف را بدست آورده و ترسیم کنیم، یک تصویر سیاه مشاهده می‌کنیم. دامنه مقادیر مختلط بدست آمده در طیف می تواند dynamic range بزرگی داشته باشد. موقع نمایش، مقادیر غیر مجاز (برای مقدار پیکسل) را تابع imshow برش می دهد و این موضوع باعث می‌شود نتوانیم نتیجه را بدرستی نمایش دهیم. برای حل این مشکل طیف را در مقیاس لگاریتمی نمایش می‌‌دهیم. با محاسبه‌ی مقدار لگاریتم هر پیکسل، dynamic range را فشرده می‌کنیم.

اندازه مقدار مختلط می‌تواند بزرگتر مساوی صفر باشد. تابع لگاریتم به ازای مقدار صفر تعریف نشده است (به منفی بی نهایت میل می‌کند). برای اینکه موقع نمایش اندازه‌ی طیف در مقیاس لگاریتمی، خطایی به خاطر مقادیر صفر رخ ندهد، قبل از محاسبه‌ی لگاریتم به آن یک واحد اضافه می‌کنیم.

فیلتر تصویر در حوزه فرکانس با FFT

طیف تصویر (بدون شیفت دادن) در مقیاس لگاریتمی:

فیلتر تصویر در حوزه فرکانس با FFT

برای اینکه فرکانس صفر در مرکز قرار بگیرد از تابع fftshift استفاده می‌کنیم. پس از بدست آوردن طیف، خروجی را به تابع fftshift ارسال می‌کنیم تا فرکانس صفر و صفر به مرکز منتقل شود. در این حالت محتوای فرکانس پایین در ناحیه‌ی مرکز قرار گرفته و فرکانس های بالا در ناحیه‌ی اطراف قرار می‌گیرد.

فیلتر تصویر در حوزه فرکانس با FFT

طیف تصویر (شیفت یافته) در مقیاس لگاریتمی:

 

فیلتر تصویر در حوزه فرکانس با FFT

شیفت طیفی را برای اینکه فرکانس صفر در مرکز قرار بگیرد انجام می‌دهیم.

پیاده سازی فیلتر

برای اینکه در حوزه‌ی فرکانس تصویر را فیلتر کنیم، از روش هایی که در قسمت قبل پیاده سازی کردیم استفاده می‌کنیم. ابتدا ماتریس X و Y را ایجاد کرده و از روی آن ماتریس فاصله‌ها (dist) را ایجاد می کنیم.

فیلتر تصویر در حوزه فرکانس با FFT

فیلتر پایین‌گذر

برای پیاده سازی فیلتر پایین گذر از ماتریس فاصله ها استفاده می کنیم و مقادیر کمتر از فرکانس قطع (اینجا مقدار آستانه را 40 در نظر گرفته‌ایم) را انتخاب می‌کنیم. با ضرب کردن این ماسک بدست آمده به طیف تصویر، فرکانس های پایین در طیف تصویر باقی مانده و فرکانس های بالا حذف می‌شوند. حذف شدن فرکانس های بالا باعث حذف شدن جزئیات تصویر می شود. با اینکار لبه های تیز تصویر از بین رفته و تصویر همواری (smooth) بدست می‌آوریم.

فیلتر تصویر در حوزه فرکانس با FFT

خروجی:

فیلتر تصویر در حوزه فرکانس با FFT

فیلتر بالاگذر

برای ساخت فیلتر بالاگذر در ماتریس فاصله ها مقادیر بزرگتر از فرکانس قطع را انتخاب می‌کنیم (در این مثال این مقدار را 40 فرض کرده‌ایم). با ضرب کردن این ماسک بدست آمده به طیف تصویر، فرکانس های بالا در طیف تصویر باقی مانده و فرکانس های پایین حذف می‌شوند. با اینکار جزئیات تصویر، لبه های تصویر را بدست می‌آوریم.

فیلتر تصویر در حوزه فرکانس با FFT

خروجی:

فیلتر تصویر در حوزه فرکانس با FFT

فیلتر میان‌گذر

برای ایجاد کردن فیلتر میان گذر کافیست ماتریس فاصله ها را با دو مقدار آستانه گذاری کرده و حاصل and آن ها را بدست آوریم.

فیلتر تصویر در حوزه فرکانس با FFT

خروجی:

فیلتر تصویر در حوزه فرکانس با FFT

فیلتر میان‌نگذر

برای ایجاد کردن فیلتر میان نگذر می توان ابتدا فیلتر میان گذر را تعریف کرده و سپس با not کردن آن، فیلتر میان نگذر را بدست آوریم.

فیلتر تصویر در حوزه فرکانس با FFT

خروجی:

فیلتر تصویر در حوزه فرکانس با FFT

فیلتر کردن تصویر با فیلتر پایین گذر

برای فیلتر کردن تصویر در حوزه‌ی فرکانس، طیف تصویر را در فیلتر ضرب می‌کنیم. قدر مطلق طیف بدست آمده را محاسبه کرده و آن را بررسی می‌کنیم. با بررسی دامنه‌ی طیف خروجی می توان مشاهده کرد که در طیف تصویر، فرکانس های بالا حذف شده اند.

فیلتر تصویر در حوزه فرکانس با FFT

طیف خروجی:

فیلتر تصویر در حوزه فرکانس با FFT

در حوزه‌ی فرکانس تصویر مورد نظر را فیلتر کردیم. حال می‌خواهیم از روی طیف تصویر، خود تصویر را بدست بیاوریم. برای اینکار از تابع fft2 معکوس یا همان ifft2 استفاده می‌کنیم. توجه داشته باشید، چون پس از محاسبه‌ی طیف از fftshift برای انتقال فرکانس صفر به مرکز استفاده کرده بودیم، قبل از محاسبه‌ی تبدیل فوریه‌ی معکوس ابتدا با ifftshift، طیف را به فرمت اولیه برگردانده و بعد از آن از ifft2 استفاده می‌کنیم.

شاید برای شما مفید باشد:
PWM در STM8

در خروجی تابع ifft2 مقادیر از نوع مختلط می‌باشند. چون سیگنال ما حقیقی است، قسمت حقیقی خروجی ifft2 را انتخاب می‌کنیم. در ماتریس خروجی ifft2 مقادیر منفی هم می‌تواند وجود داشته باشد. می‌دانیم مقدار مجاز برای پیکسل ها بازه‌ی 0 تا 255 است برای همین در خروجی بدست آمده، مقادیر منفی را انتخاب کرده و مقدار آن ها را به صفر تغییر می‌دهیم (مقادیر منفی را حذف می‌کنیم). نوع داده‌ی مقادیر خروجی float می‌باشد، با استفاده از astype نوع مقادیر را به integer تبدیل می‌کنیم.

فیلتر تصویر در حوزه فرکانس با FFT

تصویر خروجی:

فیلتر تصویر در حوزه فرکانس با FFT

با بررسی تصویر خروجی می‌توان مشاهده کرد لبه های تیز تصویر حذف شده است و تصویر همواری بدست آمده است. این فیلتر باعث تار شدن تصویر شده است.

فیلتر کردن تصویر با فیلتر بالا گذر

طیف تصویر را به فیلتر بالاگذر ضرب می‌کنیم. با بررسی دامنه‌ی طیف خروجی می توان مشاهده کرد که در طیف تصویر، فرکانس های پایین حذف شده اند.

فیلتر تصویر در حوزه فرکانس با FFT

طیف خروجی:

فیلتر تصویر در حوزه فرکانس با FFT

طیف تصویر فیلتر شده را بدست آوردیم. طیف بدست آمده را ابتدا با استفاده از fftshift به فرمت اولیه برگردانده و سپس با ifft2، تصویر در حوزه‌ی مکان را بدست می‌آوریم. انتخاب قسمت حقیقی، حذف مقادیر منفی و تبدیل کردن نوع مقادیر به int را مشابه قسمت قبل انجام داده و تصویر را نمایش می‌دهیم.

فیلتر تصویر در حوزه فرکانس با FFT

تصویر خروجی:

فیلتر تصویر در حوزه فرکانس با FFT

در تصویر خروجی می‌توان مشاهده کرد که تغییرات فرکانس بالا یا به عبارت دیگر لبه‌های تصویر نشان داده می‌شود.

فایل کد های این آموزش را می توانید از لینک گیت هاب زیر دانلود نمایید:

https://github.com/sphrk/array_indexing_examples_in_python

اطلاعات
157
0
0
اشتراک و حمایت
جلسات دیگر
آموزش

تولید ماسک دایروی و حلقوی در پردازش تصویر...

profile نویسنده: Sepehr Kouzegaran متخصص الکترونیک

ویراستار: حسین زنجانی زاده
مقالات بیشتر

slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. جستجو در آیسی
family

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
family

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله

خانواده سیسوگ

سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت
سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم
سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ
آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی
پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله