الگوریتم فیلتر میانه در پایتون (Median Filter)

در این جلسه تیم کدگیت را با یکی دیگر از آموزش‌های پردازش تصویر یعنی « الگوریتم فیلتر میانه در پایتون » همراهی کنید. قبل از شروع آموزش طبق روال آموزش‌های گذشته پیش‌نیازهای این جلسه را معرفی می‌کنیم. پیش‌نیاز‌ها به صورت زیر است:

  1. خواندن تصاویر در پایتون
  2. حلقه For در پایتون
  3. لیست در پایتون
  4. فیلتر میانگین در پایتون
  5. فیلتر نقطه میانی در پایتون

میانه چیست؟

میانه، عدد وسط مجموعه‌ای از اعداد مرتب است و به دو صورت زیر محاسبه می‌شود:

  1. تعداد اعداد مجموعه زوج باشد: میانگین دو عدد وسط را میانه می‌گویند.
  2. تعداد اعداد مجموعه فرد باشد: عدد وسط مجموعه را میانه تعریف می‌کنند.

به عنوان مثال مجموعه مرتب زیر را ببینید:

9, 12, 14, 17, 19, 22, 25

تعداد اعداد 7 است(فرد است) پس میانه عدد وسط یعنی عدد 17 می‌شود. به عنوان مثال دوم میانه مجموعه زیر را پیدا کنید:

8, 12, 14, 17, 21, 23, 25, 30

تعداد اعداد 8(زوج است) است پس میانه برابراست با میانگین دو عدد وسط یعنی 2/(17+21).

همسایه یک پیکسل در تصاویر

همانطور که در آموزش‌های گذشته گفته شد تصاویر از پیکسل‌ها تشکیل شده و نحوه نمایش آنها به صورت آرایه دو بعدی است(البته تصاویر RGB سه آرایه دو بعدی داریم!). به تصویر زیر دقت کنید:

الگوریتم فیلتر میانه در پایتون

 در تصویر بالا همسایگان پیکسل X و Y را نمایش دادیم. این نمایش را نمایش همسایگان 8 تایی یک پیکسل تعریف می‌کنند. همسایه 4 تایی یک پیکسل به صورت زیر نمایش داده می‌شود:

الگوریتم فیلتر میانه در پایتون

الگوریتم فیلتر میانه در پایتون

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

الگوریتم فیلتر میانه در پایتون

می‌خواهیم فیلتر میانه بر روی پیکسل وسط (عدد 15 تصویر بالا) محاسبه کنیم ابتدا تمامی همسایه‌ها و خود پیکسل  را به صورت مرتب در آورده و سپس میانه آنها را محاسبه می‌کنیم. در تصویر بالا عدد 9 عدد وسط است(خانه چهارم) پس میانه ما نیز 9 می‌شود(تعداد اعداد مجموعه ما فرد است) پس مقدار 9 جایگزین 15 می‌شود(به همین سادگی!). همین کار را برای تمامی پیکسل‌ها انجام می‌دهیم.

بیشتر بخوانید:  رگرسیون خطی در پایتون (Linear Regression in python) + ویدئو آموزشی

برای سادگی کار ما مرز یک تصویر را در نظر نمی‌گیریم اما راه‌حل‌های مختلفی وجود دارد که این مشکل را برطرف کرده است.

الگوریتم فیلتر میانه در پایتون

پیاده سازی الگوریتم فیلتر میانه در پایتون

پیاده‌سازی الگوریتم فیلتر میانه در پایتون بسیار ساده است. ابتدا یک تصویر رنگی را می‌خوانیم. سپس برای تمامی پیکسل‌های آن موارد زیر را اعمال می‌کنیم:

  1. سه لیست به طول 9 ایجاد می‌کنیم(لیست‌ها برای ذخیره R و G و B است).
  2. برای پیکسل X و Y، پیکسل‌های R و G و B همسایه 8 تایی و خود X و Y را درون لیست خود(لیست‌های مورد 1) میریزیم.
  3. لیست‌های خود را مرتب می‌کنیم.
  4. مقدار پیکسل جدید، مقدار خانه چهارم لیست‌های R و G و B است.
  5. موارد فوق را برای تمام پیکسل‌های تصویر انجام می‌دهیم.

کد الگوریتم فیلتر میانه در پایتون به صورت زیر است:

بیشتر بخوانید:  ساخت پیکسل‌های تصادفی در پایتون (Create Random Pixel)

خروجی کد بالا به صورت زیر است:

الگوریتم فیلتر میانه در پایتون

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

    پسورد: www.codegate.ir

    اگر سوالی در خصوص فیلتر میانه دارید در قسمت کامنت سوال خود را مطرح کنید تا پاسخگوی شما باشیم.

    دیدگاهتان را بنویسید

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *