Xói mòn và giãn nở là hai hoạt động hình thái cơ bản. Như tên của nó, hoạt động hình thái học là tập hợp các hoạt động xử lý hình ảnh theo hình dạng của chúng.
Trong quá trình giãn nở, các pixel bổ sung được thêm vào ranh giới hình ảnh và trong quá trình làm xói mòn, các pixel bổ sung sẽ bị xóa khỏi ranh giới hình ảnh. Tổng số pixel được thêm vào trong quá trình giãn nở phụ thuộc vào kích thước của phần tử cấu trúc được sử dụng.
Morphological Gradient là phép toán bằng sự chênh lệch giữa độ giãn nở và độ xói mòn của hình ảnh. Mỗi giá trị pixel trong hình ảnh kết quả cho biết cường độ tương phản trong các pixel gần đó. Điều này được sử dụng để phát hiện cạnh, phân đoạn và tìm đường viền của một đối tượng.
Ví dụ
Ví dụ Java sau đây tạo một cửa sổ chứa gradient Hình thái học của hình ảnh đã cho -
import java.awt.Image; import java.awt.image.BufferedImage; import java.io.IOException; import javafx.application.Application; import javafx.embed.swing.SwingFXUtils; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.image.ImageView; import javafx.scene.image.WritableImage; import javafx.stage.Stage; import org.opencv.core.Core; import org.opencv.core.CvType; import org.opencv.core.Mat; import org.opencv.highgui.HighGui; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; public class MorphologicalGradient extends Application { public void start(Stage stage) throws IOException { //Loading the OpenCV core library System.loadLibrary( Core.NATIVE_LIBRARY_NAME ); //Reading image data String file ="D:\\Images\\morph_input1.jpg"; Mat src = Imgcodecs.imread(file); //Creating destination matrix Mat dst = new Mat(src.rows(), src.cols(), src.type()); //Preparing the kernel matrix object Mat kernel = Mat.ones(5,5, CvType.CV_32F); //Applying dilate on the Image Imgproc.morphologyEx(src, dst, Imgproc.MORPH_GRADIENT, kernel); //Converting matrix to JavaFX writable image Image img = HighGui.toBufferedImage(dst); WritableImage writableImage= SwingFXUtils.toFXImage((BufferedImage) img, null); //Setting the image view ImageView imageView = new ImageView(writableImage); imageView.setX(10); imageView.setY(10); imageView.setFitWidth(575); imageView.setPreserveRatio(true); //Setting the Scene object Group root = new Group(imageView); Scene scene = new Scene(root, 595, 400); stage.setTitle("Morphological Gradient"); stage.setScene(scene); stage.show(); } public static void main(String args[]) { launch(args); } }
Hình ảnh đầu vào
Hình ảnh đầu ra