OpenCV: umbral simple
La creación de umbrales es un método de segmentación de imágenes, en general se utiliza para crear imágenes binarias. El umbral es de dos tipos, a saber, umbral simple y umbral adaptativo.
Umbral simple
En una operación de umbral simple, a los píxeles cuyos valores son mayores que el valor umbral especificado, se les asigna un valor estándar.
Puede realizar una operación de umbral simple en una imagen utilizando el método threshold() del Imgproc class, A continuación se muestra la sintaxis de este método.
threshold(src, dst, thresh, maxval, type)
Este método acepta los siguientes parámetros:
src - Un objeto de la clase Mat que representa la imagen de origen (entrada).
dst - Un objeto de la clase Mat que representa la imagen de destino (salida).
thresh - Una variable de tipo doble que representa el valor umbral.
maxval - Una variable de tipo doble que representa el valor que se debe dar si el valor del píxel es mayor que el valor umbral.
type - Una variable de tipo entero que representa el tipo de umbral que se utilizará.
Ejemplo
El siguiente programa demuestra cómo realizar una operación de umbral simple en una imagen en 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");
}
}
Suponga que la siguiente es la imagen de entrada thresh_input.jpg especificado en el programa anterior.
Salida
Al ejecutar el programa, obtendrá el siguiente resultado:
Image Processed
Si abre la ruta especificada, puede observar la imagen de salida de la siguiente manera:
Otros tipos de umbrales simples
Además de THRESH_BINARYOperación demostrada en el ejemplo anterior, OpenCV abastece a varios otros tipos de operaciones de umbral. Todos estos tipos están representados por campos estáticos predefinidos (valores fijos) deImgproc clase.
Puede elegir el tipo de operación de umbral que necesita, pasando su valor predefinido respectivo al parámetro denominado type del threshold() método.
Imgproc.threshold(src, dst, 50, 255, Imgproc.THRESH_BINARY);
A continuación se muestran los valores que representan varios tipos de operaciones de umbral y sus respectivas salidas.
Operación y descripción | Salida |
---|---|
THRESH_BINARY | |
THRESH_BINARY_INV | |
THRESH_TRUNC | |
THRESH_TOZERO | |
THRESH_TOZERO_INV |