OpenCV - Entfernungstransformation
Das distance transformDer Operator nimmt im Allgemeinen Binärbilder als Eingaben. Bei dieser Operation werden die Graustufenintensitäten der Punkte innerhalb der Vordergrundbereiche geändert, um ihre jeweiligen Abstände vom nächsten 0-Wert (Grenze) zu entfernen.
Mit der Methode können Sie die Entfernungstransformation in OpenCV anwenden distanceTransform(). Es folgt die Syntax dieser Methode.
distanceTransform(src, dst, distanceType, maskSize)
Diese Methode akzeptiert die folgenden Parameter:
src - Ein Objekt der Klasse Mat Darstellen des Quellbildes (Eingabebildes).
dst - Ein Objekt der Klasse Mat Darstellen des Zielbildes (Ausgabebildes).
distanceType - Eine Variable vom Typ Integer, die den Typ der anzuwendenden Entfernungstransformation darstellt.
maskSize - Eine Variable vom Typ Integer, die die zu verwendende Maskengröße darstellt.
Beispiel
Das folgende Programm zeigt, wie eine Entfernungstransformationsoperation für ein bestimmtes Bild ausgeführt wird.
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");
}
}
Angenommen, das Folgende ist das Eingabebild input.jpg im obigen Programm angegeben.
Ausgabe
Beim Ausführen des Programms erhalten Sie folgende Ausgabe:
Image Processed
Wenn Sie den angegebenen Pfad öffnen, können Sie das Ausgabebild wie folgt beobachten:
Arten von Entfernungstransformationsoperationen
Neben der Distanzbetriebsart DIST_CIm vorherigen Beispiel demonstriert, bietet OpenCV verschiedene andere Arten von Entfernungstransformationsoperationen. Alle diese Typen werden durch vordefinierte statische Felder (feste Werte) der Imgproc-Klasse dargestellt.
Sie können den Typ der gewünschten Entfernungstransformationsoperation auswählen, indem Sie den entsprechenden vordefinierten Wert an den genannten Parameter übergeben distanceType des distanceTransform() Methode.
// Applying distance transform
Imgproc.distanceTransform(mat, dst, Imgproc.DIST_C, 3);
Im Folgenden sind die Werte aufgeführt, die verschiedene Arten von darstellen distanceTransform Operationen und ihre jeweiligen Ausgänge.
Bedienung und Beschreibung | Ausgabe |
---|---|
DIST_C |
|
DIST_L1 |
|
DIST_L2 |
|
DIST_LABEL_PIXEL |
|
DIST_MASK_3 |
|