OpenCV - Limiar Simples

Thresholding é um método de segmentação de imagens, em geral é usado para criar imagens binárias. Limiar é de dois tipos, a saber, limite simples e limite adaptativo.

Limiar Simples

Na operação de limite simples, os pixels cujos valores são maiores do que o valor limite especificado são atribuídos a um valor padrão.

Você pode realizar uma operação simples de limite em uma imagem usando o método threshold() do Imgproc class, A seguir está a sintaxe desse método.

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

Este método aceita os seguintes parâmetros -

  • src - Um objeto da aula Mat representando a imagem de origem (entrada).

  • dst - Um objeto da aula Mat representando a imagem de destino (saída).

  • thresh - Uma variável de tipo duplo que representa o valor limite.

  • maxval - Uma variável de tipo duplo que representa o valor a ser fornecido se o valor do pixel for maior que o valor limite.

  • type - Uma variável de tipo inteiro que representa o tipo de limite a ser usado.

Exemplo

O programa a seguir demonstra como realizar uma operação simples de limite em uma imagem no 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");
   }
}

Suponha que a seguir está a imagem de entrada thresh_input.jpg especificado no programa acima.

Resultado

Ao executar o programa, você obterá a seguinte saída -

Image Processed

Se você abrir o caminho especificado, poderá observar a imagem de saída da seguinte maneira -

Outros tipos de limite simples

Em adição a THRESH_BINARYoperação demonstrada no exemplo anterior, o OpenCV atende a vários outros tipos de operações de limite. Todos esses tipos são representados por campos estáticos predefinidos (valores fixos) deImgproc classe.

Você pode escolher o tipo de operação de limite de que precisa, passando seu respectivo valor predefinido para o parâmetro denominado type do threshold() método.

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

A seguir estão os valores que representam vários tipos de operações de limite e suas respectivas saídas.

Operação e descrição Resultado
THRESH_BINARY
THRESH_BINARY_INV
THRESH_TRUNC
THRESH_TOZERO
THRESH_TOZERO_INV