OpenCV - Hoạt động hình thái

Trong các chương trước, chúng ta đã thảo luận về quá trình erosiondilation. Ngoài hai điều này, OpenCV có nhiều biến đổi hình thái hơn. CácmorphologyEx() của phương thức của lớp Imgproc được sử dụng để thực hiện các thao tác này trên một hình ảnh nhất định.

Sau đây là cú pháp của phương thức này:

morphologyEx(src, dst, op, kernel)

Phương thức này chấp nhận các tham số sau:

  • src - Một đối tượng của lớp Mat đại diện cho hình ảnh nguồn (đầu vào).

  • dst - đối tượng của lớp Mat đại diện cho hình ảnh đích (đầu ra).

  • op - Một số nguyên đại diện cho kiểu hoạt động Hình thái.

  • kernel - Một ma trận nhân.

Thí dụ

Chương trình sau đây trình bày cách áp dụng phép toán hình thái "top-hat" trên một hình ảnh sử dụng thư viện 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");
   } 
}

Giả sử rằng sau đây là hình ảnh đầu vào morph_input.jpg được chỉ định trong chương trình trên.

Đầu ra

Khi thực hiện chương trình, bạn sẽ nhận được kết quả sau:

Image Processed

Nếu bạn mở đường dẫn được chỉ định, bạn có thể quan sát hình ảnh đầu ra như sau:

Hoạt động khác

Ngoài các hoạt động hình thái TOPHAT, đã chứng minh trong phần trước example, OpenCV phục vụ nhiều loại hình thái khác nhau. Tất cả các loại này được đại diện bởi các trường tĩnh được xác định trước (giá trị cố định) củaImgproc lớp học.

Bạn có thể chọn loại hình thái mình cần bằng cách chuyển giá trị xác định trước tương ứng của chúng vào tham số op sau đó morphologyEx() phương pháp.

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

Sau đây là các giá trị đại diện cho loại hoạt động hình thái và đầu ra tương ứng của chúng.

Hoạt động và mô tả Đầu ra
MORPH_BLACKHAT
MORPH_CLOSE
MORPH_CROSS
MORPH_DILATE
MORPH_ELLIPSE
MORPH_ERODE
MORPH_GRADIENT
MORPH_OPEN
MORPH_RECT
MORPH_TOPHAT