Java DIP - Basic Thresholding
Mit dem Schwellenwert kann auf einfachste Weise eine Bildsegmentierung erreicht werden. Bildsegmentierung bedeutet, das gesamte Bild so in einen Satz von Pixeln zu unterteilen, dass die Pixel in jedem Satz einige gemeinsame Merkmale aufweisen. Die Bildsegmentierung ist sehr nützlich beim Definieren von Objekten und ihren Grenzen.
In diesem Kapitel führen wir einige grundlegende Schwellenwertoperationen für Bilder durch.
Wir gebrauchen OpenCV Funktion threshold. Es kann unter gefunden werdenImgprocPaket. Die Syntax ist unten angegeben -
Imgproc.threshold(source, destination, thresh , maxval , type);
Die Parameter werden nachfolgend beschrieben -
Sr.Nr. | Parameter & Beschreibung |
---|---|
1 | source Es ist ein Quellbild. |
2 | destination Es ist ein Zielbild. |
3 | thresh Es ist ein Schwellenwert. |
4 | maxval Dies ist der Maximalwert, der mit den Schwellenwerttypen THRESH_BINARY und THRESH_BINARY_INV verwendet werden soll. |
5 | type Die möglichen Typen sind THRESH_BINARY, THRESH_BINARY_INV, THRESH_TRUNC und THRESH_TOZERO. |
Neben diesen Schwellenwertmethoden gibt es noch andere Methoden, die von der Imgproc-Klasse bereitgestellt werden. Sie werden kurz beschrieben -
Sr.Nr. | Methode & Beschreibung |
---|---|
1 | cvtColor(Mat src, Mat dst, int code, int dstCn) Es konvertiert ein Bild von einem Farbraum in einen anderen. |
2 | dilate(Mat src, Mat dst, Mat kernel) Es erweitert ein Bild mithilfe eines bestimmten Strukturierungselements. |
3 | equalizeHist(Mat src, Mat dst) Es gleicht das Histogramm eines Graustufenbildes aus. |
4 | filter2D(Mat src, Mat dst, int ddepth, Mat kernel, Point anchor, double delta) Es faltet ein Bild mit dem Kernel. |
5 | GaussianBlur(Mat src, Mat dst, Size ksize, double sigmaX) Es verwischt ein Bild mit einem Gaußschen Filter. |
6 | integral(Mat src, Mat sum) Es berechnet das Integral eines Bildes. |
Beispiel
Das folgende Beispiel zeigt die Verwendung der Imgproc-Klasse zum Ausführen von Schwellenwertoperationen für ein Bild.
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;
public class main {
public static void main( String[] args ) {
try{
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
Mat source = Highgui.imread("digital_image_processing.jpg", Highgui.CV_LOAD_IMAGE_COLOR);
Mat destination = new Mat(source.rows(),source.cols(),source.type());
destination = source;
Imgproc.threshold(source,destination,127,255,Imgproc.THRESH_TOZERO);
Highgui.imwrite("ThreshZero.jpg", destination);
} catch (Exception e) {
System.out.println("error: " + e.getMessage());
}
}
}
Ausgabe
Wenn Sie den angegebenen Code ausführen, wird die folgende Ausgabe angezeigt:
Original Bild
Auf dem obigen Originalbild werden einige Schwellenwertoperationen ausgeführt, die in der Ausgabe unten gezeigt werden -