OpenCV - operacje morfologiczne
We wcześniejszych rozdziałach omówiliśmy proces erosion i dilation. Oprócz tych dwóch, OpenCV ma więcej przekształceń morfologicznych. PlikmorphologyEx() metody klasy Imgproc służy do wykonywania tych operacji na danym obrazie.
Poniżej znajduje się składnia tej metody -
morphologyEx(src, dst, op, kernel)
Ta metoda akceptuje następujące parametry -
src - Przedmiot z klasy Mat reprezentujący obraz źródłowy (wejściowy).
dst - przedmiot zajęć Mat reprezentujący obraz docelowy (wyjściowy).
op - liczba całkowita reprezentująca typ operacji morfologicznej.
kernel - macierz jądra.
Przykład
Poniższy program pokazuje, jak zastosować operację morfologiczną "top-hat" na obrazie przy użyciu biblioteki 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");
}
}
Załóżmy, że poniżej jest obraz wejściowy morph_input.jpg określone w powyższym programie.
Wynik
Podczas wykonywania programu otrzymasz następujący wynik -
Image Processed
Jeśli otworzysz określoną ścieżkę, możesz obserwować obraz wyjściowy w następujący sposób -
Więcej operacji
Oprócz operacji morfologicznej TOPHAT, pokazane w poprzednim example, OpenCV obsługuje różne inne typy morfologii. Wszystkie te typy są reprezentowane przez wstępnie zdefiniowane pola statyczne (wartości stałe)Imgproc klasa.
Możesz wybrać typ potrzebnej morfologii, przekazując odpowiednią wstępnie zdefiniowaną wartość do parametru op z morphologyEx() metoda.
// Applying Blur effect on the Image
Imgproc.morphologyEx(src, dst, Imgproc.MORPH_TOPHAT, kernel);
Poniżej przedstawiono wartości reprezentujące rodzaj operacji morfologicznych i ich odpowiednich wyników.
Działanie i opis | Wynik |
---|---|
MORPH_BLACKHAT |
|
MORPH_CLOSE |
|
MORPH_CROSS |
|
MORPH_DILATE |
|
MORPH_ELLIPSE |
|
MORPH_ERODE |
|
MORPH_GRADIENT |
|
MORPH_OPEN |
|
MORPH_RECT |
|
MORPH_TOPHAT |
|