در این قسمت تیم کدگیت را با آموزش فیلتر گاوسی در جاوا همراهی کنید. در ابتدای این جلسه Blur کردن یک تصویر را توضیح سپس به پیاده سازی فیلتر گاوسی در جاوا خواهیم پرداخت. پیشنیازهای این جلسه شامل موارد زیر است:
- نصب OpenCV در جاوا
- خواندن تصاویر در جاوا با OpenCV
- نوشتن تصاویر در جاوا با OpenCV
- رسم اشکال هندسی در جاوا با OpenCV
- تبدیل تصویر رنگی به خاکستری در جاوا با OpenCV
- Kernel در جاوا
- فیلتر blur در جاوا
Blur یا تار کردن تصویر
تصاویر به صورت عادی بسیار Sharp (مفهوم شارپ بودن عکس به این معناست که عکس ما بهخوبی جزئیات را نشان میدهد) بوده و تمامی اطلاعات را میتوان از آن دریافت کرد. به طور کلی این قابلیت (Sharp بودن تصویر) به دلیل وجود لبه یا Edge است. با کمک Blur یا تار کردن تصویر از لبهها یا Edge های تصویر کاسته میشود تا تغییر رنگ از یک لبه به لبه دیگر به آرامی (ملایم) انجام شود. در زیر یک نمونه از تصویر Blur را میبینید:

فیلتر گاوسی در جاوا
یکی از راههای تار کردن تصویر، استفاده از فیلتر گاوسی میباشد. این فیلتر از تابع گاوسی استفاده میکند. برای پیاده سازی ما از کلاس Imgproc و متد GaussianBlur استفاده میکنیم. ابتدا تصویر baboon.png را میخوانیم:
Mat src = Imgcodecs.imread("baboon.png");
سپس تصویر خروجی (تصویری که فیلتر گاوسی در آن ذخیره میشود) را ایجاد میکنیم. باید سایز آن با تصویر ورودی (baboon.png) برابر باشد.
Mat dst = new Mat(src.rows(), src.cols(), src.type());
حال فیلتر گاوسی در جاوا را با متد GaussianBlur صدا میزنیم:
Imgproc.GaussianBlur(src, dst, new Size(11, 11), 0);
متد GaussianBlur ورودی های زیر را دریافت میکند:
- تصویر ورودی
- تصویر خروجی
- سایز kernel (باید حتما فرد باشد مانند 3*3 یا 5*5)
- میزان انحراف معیار محور x
حال میتوان تصویر blur ایجاد شده را با متد imwrite ذخیره کرد:
Imgcodecs.imwrite("Gaussian blur baboon.jpg", dst);
تصویر زیر را به عنوان تصویر ورودی به برنامه میدهیم:

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