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 |
|