OpenCV-距離変換
ザ・ distance transform演算子は通常、入力としてバイナリイメージを取ります。この操作では、前景領域内のポイントのグレーレベル強度を変更して、最も近い0値(境界)からそれぞれの距離を遠ざけます。
この方法を使用して、OpenCVで距離変換を適用できます distanceTransform()。このメソッドの構文は次のとおりです。
distanceTransform(src, dst, distanceType, maskSize)
このメソッドは、次のパラメーターを受け入れます-
src −クラスのオブジェクト Mat ソース(入力)画像を表します。
dst −クラスのオブジェクト Mat 宛先(出力)イメージを表します。
distanceType −適用される距離変換のタイプを表す整数タイプの変数。
maskSize −使用するマスクサイズを表す整数型の変数。
例
次のプログラムは、特定の画像に対して距離変換操作を実行する方法を示しています。
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class DistanceTransform {
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/chap19/input.jpg";
Mat src = Imgcodecs.imread(file,0);
// Creating an empty matrix to store the results
Mat dst = new Mat();
Mat binary = new Mat();
// Converting the grayscale image to binary image
Imgproc.threshold(src, binary, 100, 255, Imgproc.THRESH_BINARY);
// Applying distance transform
Imgproc.distanceTransform(mat, dst, Imgproc.DIST_C, 3);
// Writing the image
Imgcodecs.imwrite("E:/OpenCV/chap19/distnceTransform.jpg", dst);
System.out.println("Image Processed");
}
}
以下が入力画像であると仮定します input.jpg 上記のプログラムで指定されています。
出力
プログラムを実行すると、次の出力が得られます-
Image Processed
指定したパスを開くと、次のように出力画像を確認できます。
距離変換操作の種類
距離操作タイプに加えて DIST_C前の例で示したように、OpenCVは他のさまざまなタイプの距離変換操作に対応しています。これらのタイプはすべて、Imgprocクラスの事前定義された静的フィールド(固定値)によって表されます。
それぞれの事前定義された値を名前の付いたパラメータに渡すことにより、必要な距離変換操作のタイプを選択できます。 distanceType の distanceTransform() 方法。
// Applying distance transform
Imgproc.distanceTransform(mat, dst, Imgproc.DIST_C, 3);
以下は、さまざまなタイプを表す値です。 distanceTransform 操作とそれぞれの出力。
操作と説明 | 出力 |
---|---|
DIST_C |
|
DIST_L1 |
|
DIST_L2 |
|
DIST_LABEL_PIXEL |
|
DIST_MASK_3 |
|