OpenCV - Mesafe Dönüşümü
distance transformoperatör genellikle ikili görüntüleri girdi olarak alır. Bu işlemde, ön plan bölgeleri içindeki noktaların gri seviye yoğunlukları, ilgili mesafeleri en yakın 0 değerinden (sınır) uzaklaşacak şekilde değiştirilir.
Yöntemi kullanarak OpenCV'de mesafe dönüşümü uygulayabilirsiniz distanceTransform(). Bu yöntemin sözdizimi aşağıdadır.
distanceTransform(src, dst, distanceType, maskSize)
Bu yöntem aşağıdaki parametreleri kabul eder -
src - Sınıfın bir nesnesi Mat kaynak (giriş) görüntüsünü temsil eder.
dst - Sınıfın bir nesnesi Mat hedef (çıktı) görüntüsünü temsil eder.
distanceType - Uygulanacak mesafe dönüşümünün türünü temsil eden tam sayı türünde bir değişken.
maskSize - Kullanılacak maske boyutunu temsil eden tam sayı tipi bir değişken.
Misal
Aşağıdaki program, belirli bir görüntü üzerinde mesafe dönüştürme işleminin nasıl gerçekleştirileceğini gösterir.
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");
}
}
Aşağıdakinin giriş görüntüsü olduğunu varsayalım input.jpg yukarıdaki programda belirtilmiştir.
Çıktı
Programı çalıştırırken aşağıdaki çıktıyı alacaksınız -
Image Processed
Belirtilen yolu açarsanız, çıktı görüntüsünü aşağıdaki gibi gözlemleyebilirsiniz -
Mesafe Dönüşümü İşlemlerinin Türleri
Mesafe işlem tipine ek olarak DIST_Cönceki örnekte gösterildiği gibi, OpenCV çeşitli diğer mesafe dönüştürme işlemlerini de sunar. Tüm bu türler, Imgproc sınıfının önceden tanımlanmış statik alanları (sabit değerler) ile temsil edilir.
İhtiyacınız olan mesafe dönüştürme işleminin türünü, ilgili önceden tanımlanmış değerini adlı parametreye ileterek seçebilirsiniz. distanceType of distanceTransform() yöntem.
// Applying distance transform
Imgproc.distanceTransform(mat, dst, Imgproc.DIST_C, 3);
Aşağıda, çeşitli türlerini temsil eden değerler verilmiştir. distanceTransform işlemler ve ilgili çıktıları.
Kullanım ve Açıklama | Çıktı |
---|---|
DIST_C |
|
DIST_L1 |
|
DIST_L2 |
|
DIST_LABEL_PIXEL |
|
DIST_MASK_3 |
|