Категорії
Computer Vision

Попередня обробка зображень

У більшості випадків складність обробки зображень полягає у неоднорідності освітлення та наявності затемнених або навпаки занадто освітлених областей. На етапі попередньої обробки часто застосовують коригування рівня яскравості, контрастності та морфологічні операції.
Приклад програмного коду для коригування рівня яскравості з допомогою 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;
}

preprocessing


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


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;
}
contrast

Основні морфологічні перетворення: 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;
}

erode

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;
}

dilate_gif

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

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься.