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

Làm thế nào để triển khai Làm mờ song phương trong OpenCV bằng Java?


Bạn có thể làm mờ hình ảnh bằng cách lọc hình ảnh đó bằng bộ lọc thông thấp, điều này sẽ loại bỏ nội dung tần số cao (nhiễu, các cạnh) khỏi hình ảnh. Lọc song phương là một trong những kỹ thuật làm mờ được cung cấp bởi OpenCV, nó -

  • loại bỏ tiếng ồn hiệu quả

  • giữ cho các cạnh sắc nét

  • Tương đối chậm

Bạn có thể áp dụng bộ lọc hai bên trên hình ảnh bằng cách sử dụng Bộ lọc song phương () phương thức này chấp nhận

  • Hai đối tượng Mat đại diện cho hình ảnh nguồn và hình ảnh đích.

  • Một số nguyên đại diện cho đường kính của vùng lân cận pixel.

  • Hai biến số nguyên của kiểu số nguyên đại diện cho bộ lọc sigma trong không gian màu và không gian tọa độ.

  • Đối tượng Số nguyên đại diện cho kiểu đường viền được sử dụng.

Ví dụ

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.Mat;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class BilateralFilterExample 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\\window.jpg";
      Mat src = Imgcodecs.imread(file);
      //Creating destination matrix
      Mat dst = new Mat(src.rows(), src.cols(), src.type());
      //Applying Bilateral filter
      Imgproc.bilateralFilter(src, dst, 25, 75, 75, Core.BORDER_DEFAULT);
      //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("Bilateral Filter Example");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]) {
      launch(args);
   }
}

Hình ảnh đầu vào

Làm thế nào để triển khai Làm mờ song phương trong OpenCV bằng Java?

Đầu ra

Khi thực thi, chương trình trên tạo ra kết quả sau -

Làm thế nào để triển khai Làm mờ song phương trong OpenCV bằng Java?