فیلتر Min در جاوا (minimum filter in java)

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

  1. خواندن و نوشتن تصاویر در جاوا
  2. بهبود تصاویر در جاوا
  3. حلقه For در جاوا
  4. استثناها در جاوا
  5. فایل در جاوا
  6. آرایه در جاوا

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

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

فیلتر Min در جاوا

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

فیلتر Min در جاوا

الگوریتم فیلتر Minimum

الگوریتم فیلتر Min بسیار ساده بوده و نیاز به فرمول ریاضی خاصی ندارد. با استفاده از همسایه‌های 8 تایی پیکسل X و Y، ما مینیمم(مقدار کمینه) همسایگی و پیکسل X  و Y را به عنوان پیکسل جدید انتخاب می‌کنیم. باید توجه کنید ما نقاط مرزی را در نظر نمی‌گیریم اما روش‌های مختلفی وجود دارد که می‌توان از آن استفاده کرد.(ما برای سادگی پیاده سازی از پیکسل‌های مرزی صرف نظر کردیم.)

فیلتر Min در جاوا

پیاده‌سازی فیلتر Min در جاوا

برای پیاده سازی فیلتر Min در جاوا مراحل زیر را انجام می‌دهیم:

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

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

بیشتر بخوانید:  pdf آموزش قرینه کردن عدد در جاوا (Reverse Number)

متدهای استفاده شده در کد فوق:

  • متد getRed: از آنجا که ما با تصاویر RGB کار می‌کنیم در هنگام دریافت یک پیکسل در جاوا رنگ‌های R و G و B را به صورت یکجا در یک مقدار به ما می‌دهد. این متد مقدار رنگ قرمز را از رنگ سبز و آبی جدا کرده و به ما برمی‌گرداند.
  • متد getGreen: مانند متد getred بوده اما رنگ سبز یک پیکسل را برای ما بر‌می‌گرداند.
  • متد getBlue: مانند متدهای بالا بوده اما رنگ قرمز یک پیکسل را به ما می‌دهد.
  • متد MinRed: این متد اندیس‌های یک پیکسل را در ورودی دریافت می‌کند و مینیمم رنگ قرمز همسایگان 8 تایی به همراه پیکسل ورودی را بدست آورده در خروجی به ما می‌دهد. نکته قابل ذکر این است که چون پیکسل تصویر ما شامل سه عدد R و G و B بوده باید برای هر سه آنها به طور جداگانه مقدار مینیمم را محاسبه کرد.
  • متد MinGreen: دقیقا مانند متد MinRed کار می‌کند فقط در خروجی مینیمم رنگ‌های سبز را به ما می‌دهد.
  • متد MinBlue: مانند متدهای MinRed و MinGreen بوده اما در خروجی مینیمم رنگ آبی پیکسل ورودی و همسایگانش را بر‌می‌گرداند.

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

فیلتر Min در جاوا

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

پسورد: www.codegate.ir

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

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