OpenCV-形態学的操作

前の章では、 erosion そして dilation。これらの2つに加えて、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 クラス。

それぞれの事前定義された値をパラメータに渡すことにより、必要な形態のタイプを選択できます opmorphologyEx() 方法。

// 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