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 クラス。
それぞれの事前定義された値をパラメータに渡すことにより、必要な形態のタイプを選択できます 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 |
|