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 -

Thresh Binary

Thresh Binary Invert

Thresh Zero