در این قسمت تیم کدگیت را با آموزش فیلتر bilateral در جاوا همراهی کنید. ابتدا فیلتر bilateral را به صورت مختصر معرفی کرده سپس با کمک کتابخانه OpenCV به پیاده سازی این فیلتر خواهیم پرداخت. اما برای درک بهتر این جلسه، پیشنیاز این آموزش که شامل موارد زیر می باشد را مطالعه نماید:
- فیلتر میانه در جاوا
- نصب OpenCV در جاوا
- خواندن تصاویر در جاوا با OpenCV
- نوشتن تصاویر در جاوا با OpenCV
- رسم اشکال هندسی در جاوا با OpenCV
- تبدیل تصویر رنگی به خاکستری در جاوا با OpenCV
- Kernel در جاوا
- فیلتر blur در جاوا
- فیلتر گائوسی در جاوا
bilateral
فیلتر bilateral یک فیلتر غیر خطی ملایم ساز با حفظ لبه و کاهش نویز برای تصاویر است. از این رو در این فیلتر، میزان شدت هر پیکسل با میانگین وزن دار پیکسل های همسایه جایگزین می شود. این وزن می تواند بر اساس توزیع گائوسی باشد همچنین برای پیاده سازی این فیلتر نیاز است که با دو پارامتر زیر آشنا باشیم.
- sigmaColor: این پارامتر تعیین کننده مقدار سیگما در فضای رنگی است که هر چه مقدار آن بیشتر باشد رنگهایی که فاصله بیشتری از هم دارند در فیلتر نقش خواهند داشت.
- sigmaSpace: مقدار سیگما در مختصات، هر چه مقدار بیشتری داشته باشد پیکسلهای دورتری (با توجه به اینکه مقدار رنگ آنها مطابق با پارامتر sigmaColor باشد) در فیلتر نقش خواهند داشت.
فیلتر bilateral در جاوا
در پیاده سازی فیلتر bilateral ما از کتابخانه OpenCV استفاده میکنیم. در این کتابخانه برای کار با این فیلتر، از کلاس Imgproc متد bilateralFilter استفاده شده است این متد دارای ورودیهای زیر است:
- تصویر ورودی
- تصویر خروجی (تصویر فیلتر شده در این متغیر ذخیره میگردد)
- قطر پیکسل های همسایه برای اعمال در فیلتر
- sigmaColor
- sigmaSpace
برای پیاده سازی ابتدا یک تصویر میخوانیم:
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Mat src = Imgcodecs.imread("baboon.png");
سپس تصویر خروجی را ایجاد میکنیم:
Mat dst = new Mat();
در پایان فیلتر bilateral در جاوا را پیاده سازی میکنیم:
Imgproc.bilateralFilter(src, dst, 15, 80, 80);
در کد بالا ما قطر پیکسل های همسایه را برابر با 15 و sigmaColor و sigmaSpace برابر با 80 قرار دادیم. همچنین برای اینکه تصویر خروجی را ذخیره کنیم کد زیر را مینویسیم:
Imgcodecs.imwrite("bilateral baboon.jpg", dst);
تصویر ورودی برنامه به صورت زیر است:

تصویر خروجی برنامه به صورت زیر است:
