Opencv-morphological-operations
提供:Dev Guides
OpenCV-モルフォロジー操作
前の章で、侵食*と*膨張*のプロセスについて説明しました。 これら2つに加えて、OpenCVにはより多くの形態変換があります。 クラス *Imgproc のメソッドの* morphologyEx()*は、特定の画像でこれらの操作を実行するために使用されます。
以下は、このメソッドの構文です-
morphologyEx(src, dst, op, kernel)
このメソッドは、次のパラメータを受け入れます-
- src -ソース(入力)画像を表すクラス Mat のオブジェクト。
- dst -宛先(出力)イメージを表すクラス Mat のオブジェクト。
- op -形態学的操作のタイプを表す整数。
- kernel -カーネル行列。
例
次のプログラムは、OpenCVライブラリを使用して画像にモルフォロジー演算 "top-hat" を適用する方法を示しています。
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
指定したパスを開くと、次のように出力画像を観察できます-
その他の操作
OpenCVは、前の*例*で示した形態学的操作 TOPHAT に加えて、他のさまざまな種類の形態に対応しています。 これらのタイプはすべて、 Imgproc クラスの事前定義された静的フィールド(固定値)で表されます。
それぞれの事前定義された値を* morphologyEx()メソッドのパラメーター *op に渡すことで、必要な形態のタイプを選択できます。
//Applying Blur effect on the Image
Imgproc.morphologyEx(src, dst, Imgproc.MORPH_TOPHAT, kernel);
モルフォロジー演算のタイプとそれぞれの出力を表す値は次のとおりです。
Operation and Description | Output |
---|---|
MORPH_BLACKHAT | MORPH_BLACKHAT |
MORPH_CLOSE | MORPH_CLOSE |
MORPH_CROSS | MORPH_CROSS |
MORPH_DILATE | MORPH_DILATE |
MORPH_ELLIPSE | MORPH_ELLIPSE |
MORPH_ERODE | MORPH_ERODE |
MORPH_GRADIENT | MORPH_GRADIENT |
MORPH_OPEN | MORPH_OPEN |
MORPH_RECT | MORPH_RECT |
MORPH_TOPHAT | MORPH_TOPHAT |