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 |