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