Computer >> Máy Tính >  >> Lập trình >> Java

Gradient hình thái học trong xử lý ảnh là gì?


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

Gradient hình thái học trong xử lý ảnh là gì?

Hình ảnh đầu ra

Gradient hình thái học trong xử lý ảnh là gì?