OpenCV - морфологические операции

В предыдущих главах мы обсуждали процесс erosion и dilation. Помимо этих двух, OpenCV имеет больше морфологических преобразований. ВmorphologyEx() метода класса Imgproc используется для выполнения этих операций с данным изображением.

Ниже приводится синтаксис этого метода -

morphologyEx(src, dst, op, kernel)

Этот метод принимает следующие параметры -

  • src - Объект класса Mat представляющий исходное (входное) изображение.

  • dst - объект класса Mat представляющий конечное (выходное) изображение.

  • op - Целое число, представляющее тип морфологической операции.

  • kernel - матрица ядра.

пример

Следующая программа демонстрирует, как применять морфологическую операцию. "top-hat" на изображении с использованием библиотеки OpenCV.

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class MorphologyExTest {
   public static void main(String args[]) {
      // Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );

      // Reading the Image from the file and storing it in to a Matrix object
      String file ="E:/OpenCV/chap12/morph_input.jpg";
      Mat src = Imgcodecs.imread(file);

      // Creating an empty matrix to store the result
      Mat dst = new Mat();

      // Creating kernel matrix
      Mat kernel = Mat.ones(5,5, CvType.CV_32F);

      // Applying Blur effect on the Image 
      Imgproc.morphologyEx(src, dst, Imgproc.MORPH_TOPHAT, kernel);

      // Writing the image
      Imgcodecs.imwrite("E:/OpenCV/chap12/morph_tophat.jpg", dst);

      System.out.println("Image Processed");
   } 
}

Предположим, что ниже находится входное изображение morph_input.jpg указанные в вышеуказанной программе.

Вывод

При выполнении программы вы получите следующий вывод -

Image Processed

Если вы откроете указанный путь, вы можете наблюдать выходное изображение следующим образом:

Больше операций

Помимо морфологической операции TOPHAT, продемонстрированный в предыдущем example, OpenCV обслуживает различные другие типы морфологии. Все эти типы представлены предопределенными статическими полями (фиксированными значениями)Imgproc класс.

Вы можете выбрать нужный тип морфологии, передав соответствующее предопределенное значение параметру. op из morphologyEx() метод.

// Applying Blur effect on the Image
Imgproc.morphologyEx(src, dst, Imgproc.MORPH_TOPHAT, kernel);

Ниже приведены значения, представляющие тип морфологических операций и их соответствующие результаты.

Работа и описание Вывод
MORPH_BLACKHAT
MORPH_CLOSE
MORPH_CROSS
MORPH_DILATE
MORPH_ELLIPSE
MORPH_ERODE
MORPH_GRADIENT
MORPH_OPEN
MORPH_RECT
MORPH_TOPHAT