Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Cách thực hiện Median Blur (làm mờ trung vị) trong OpenCV Java

Làm mờ bằng bộ lọc thông thấp loại bỏ tần số cao (nhiễu, cạnh). Median Blur thay thế pixel trung tâm bằng giá trị trung vị của các pixel trong kernel, rất hiệu quả khử nhiễu muối tiêu (salt-and-pepper).

Dùng Imgproc.medianBlur(src, dst, ksize) với ksize là kích thước kernel (số lẻ).

Ví dụ (JavaFX)

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
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;
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;

public class MedianBlurExample extends Application {
    public void start(Stage stage) throws IOException {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        String file = "D:\\Images\\logo_noise.jpg";
        Mat src = Imgcodecs.imread(file);
        Mat dst = new Mat(src.rows(), src.cols(), src.type());
        Imgproc.medianBlur(src, dst, 5);
        Image img = HighGui.toBufferedImage(dst);
        WritableImage writableImage = SwingFXUtils.toFXImage((BufferedImage) img, null);
        ImageView imageView = new ImageView(writableImage);
        imageView.setX(10); imageView.setY(10);
        imageView.setFitWidth(575); imageView.setPreserveRatio(true);
        Group root = new Group(imageView);
        Scene scene = new Scene(root, 595, 400);
        stage.setTitle("Median Blur Example");
        stage.setScene(scene);
        stage.show();
    }
    public static void main(String args[]) { launch(args); }
}

Ảnh gốc có nhiễu

Cách thực hiện Median Blur (làm mờ trung vị) trong OpenCV Java

Ảnh sau Median Blur (kernel 5x5)

Cách thực hiện Median Blur (làm mờ trung vị) trong OpenCV Java