OpenCV - Operações Morfológicas
Nos capítulos anteriores, discutimos o processo de erosion e dilation. Além desses dois, o OpenCV apresenta mais transformações morfológicas. omorphologyEx() do método da aula Imgproc é usado para realizar essas operações em uma determinada imagem.
A seguir está a sintaxe deste método -
morphologyEx(src, dst, op, kernel)
Este método aceita os seguintes parâmetros -
src - Um objeto da aula Mat representando a imagem de origem (entrada).
dst - objeto da aula Mat representando a imagem de destino (saída).
op - Um número inteiro que representa o tipo de operação morfológica.
kernel - Uma matriz de kernel.
Exemplo
O programa a seguir demonstra como aplicar a operação morfológica "top-hat" em uma imagem usando a biblioteca OpenCV.
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class MorphologyExTest {
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/chap12/morph_input.jpg";
Mat src = Imgcodecs.imread(file);
// Creating an empty matrix to store the result
Mat dst = new Mat();
// Creating kernel matrix
Mat kernel = Mat.ones(5,5, CvType.CV_32F);
// Applying Blur effect on the Image
Imgproc.morphologyEx(src, dst, Imgproc.MORPH_TOPHAT, kernel);
// Writing the image
Imgcodecs.imwrite("E:/OpenCV/chap12/morph_tophat.jpg", dst);
System.out.println("Image Processed");
}
}
Suponha que a seguir está a imagem de entrada morph_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 -
Mais operações
Além da operação morfológica TOPHAT, demonstrado no anterior example, OpenCV atende vários outros tipos de morfologias. Todos esses tipos são representados por campos estáticos predefinidos (valores fixos) deImgproc classe.
Você pode escolher o tipo de morfologia que você precisa passando seus respectivos valores predefinidos para o parâmetro op do morphologyEx() método.
// Applying Blur effect on the Image
Imgproc.morphologyEx(src, dst, Imgproc.MORPH_TOPHAT, kernel);
A seguir estão os valores que representam o tipo de operações morfológicas e suas respectivas saídas.
Operação e descrição | Resultado |
---|---|
MORPH_BLACKHAT | |
MORPH_CLOSE | |
MORPH_CROSS | |
MORPH_DILATE | |
MORPH_ELLIPSE | |
MORPH_ERODE | |
MORPH_GRADIENT | |
MORPH_OPEN | |
MORPH_RECT | |
MORPH_TOPHAT |