OpenCV - Soglia semplice

Il Thresholding è un metodo di segmentazione delle immagini, in generale viene utilizzato per creare immagini binarie. La soglia è di due tipi, vale a dire, soglia semplice e soglia adattiva.

Soglia semplice

Nella semplice operazione di soglia, i pixel i cui valori sono maggiori del valore di soglia specificato, vengono assegnati con un valore standard.

È possibile eseguire una semplice operazione di soglia su un'immagine utilizzando il metodo threshold() del Imgproc classDi seguito è riportata la sintassi di questo metodo.

threshold(src, dst, thresh, maxval, type)

Questo metodo accetta i seguenti parametri:

  • src - Un oggetto della classe Mat che rappresenta l'immagine sorgente (ingresso).

  • dst - Un oggetto della classe Mat che rappresenta l'immagine di destinazione (output).

  • thresh - Una variabile di tipo double che rappresenta il valore di soglia.

  • maxval - Una variabile di tipo double che rappresenta il valore da fornire se il valore del pixel è maggiore del valore di soglia.

  • type - Una variabile di tipo intero che rappresenta il tipo di soglia da utilizzare.

Esempio

Il seguente programma mostra come eseguire una semplice operazione di soglia su un'immagine in OpenCV.

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class Thresh {
   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/chap14/thresh_input.jpg";
      Mat src = Imgcodecs.imread(file);

      // Creating an empty matrix to store the result
      Mat dst = new Mat();
      Imgproc.threshold(src, dst, 50, 255, Imgproc.THRESH_BINARY);

      // Writing the image
      Imgcodecs.imwrite("E:/OpenCV/chap14/thresh_trunc.jpg", dst);

      System.out.println("Image Processed");
   }
}

Supponiamo che la seguente sia l'immagine in ingresso thresh_input.jpg specificato nel programma di cui sopra.

Produzione

All'esecuzione del programma, otterrai il seguente output:

Image Processed

Se apri il percorso specificato, puoi osservare l'immagine di output come segue:

Altri tipi di soglia semplice

In aggiunta a THRESH_BINARYoperazione dimostrata nell'esempio precedente, OpenCV soddisfa vari altri tipi di operazioni di soglia. Tutti questi tipi sono rappresentati da campi statici predefiniti (valori fissi) diImgproc classe.

È possibile scegliere il tipo di operazione di soglia necessaria, passando il rispettivo valore predefinito al parametro denominato type del threshold() metodo.

Imgproc.threshold(src, dst, 50, 255, Imgproc.THRESH_BINARY);

Di seguito sono riportati i valori che rappresentano i vari tipi di operazioni di soglia e le rispettive uscite.

Funzionamento e descrizione Produzione
THRESH_BINARY
THRESH_BINARY_INV
THRESH_TRUNC
THRESH_TOZERO
THRESH_TOZERO_INV