Попередня обробка зображень засобами openCV

У більшості випадків складність обробки зображень полягає у неоднорідності освітлення та наявності затемнених або навпаки занадто освітлених областей. На етапі попередньої обробки часто застосовують коригування рівня яскравості, контрастності та морфологічні операції.
Приклад програмного коду для коригування рівня яскравості з допомогою Java та OpenCV.

                                
public static Mat bright(Mat image, int sz){ Mat dst = new Mat(image.rows(), image.cols(), image.type()); image.convertTo(dst, -1, 10d * sz / 100, 0); return dst; }

Приклад програмного коду для коригування контрастності:

                            
public static Mat contrast (Mat image, Double a){ Mat dst = new Mat(image.rows(), image.cols(), image.type()); image.copyTo(dst); Scalar modifier; modifier = new Scalar(a,a,a,1); Core.multiply(dst, modifier, dst); return dst; }

Основні морфологічні перетворення: Erode - розмивання (операція звуження) Dilate - розтягування (операція розширення) Розмиття (операція звуження) зображення з використанням фільтра (ядра) один або кілька разів. Зображення формується із локальних максимумів.
Erode

                                
/** * * @param image - вхідне зображення * @param kernel - ядро * @return Mat */ public static Mat Erode(Mat image, int kernel){ final Mat dst = new Mat(image.cols(), image.rows(), CvType.CV_8UC3); image.copyTo(dst); Imgproc.erode(dst, dst, Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(kernel,kernel))); return dst; }


Dilate

                            
/** * * @param image - вхідне зображення * @param kernel - ядро * @return */ public static Mat Dilate(Mat image, int kernel){ final Mat dst = new Mat(image.cols(), image.rows(), CvType.CV_8UC3); image.copyTo(dst); Imgproc.dilate(dst, dst, Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(kernel,kernel))); return dst; }


Програмний код : https://github.com/olehpitsun/CVforStudents/tree/master/src/task2