How to implement Median blur in OpenCV using Java?


You can blur an image by filtering it using a low-pass filter, this removes high frequency content (noise, edges) from an image.

Median Blurring is one of the blurring techniques provided by OpenCV, it is highly efficient in removing salt and pepper noise of an image. This replaces the central element with the median of all the pixels in the kernel area.

You can filter/blur an image by this technique using the medianBlur() method, this method accepts

  • Two Mat objects representing the source and destination images.

  • A Size object representing the size of the kernel.

Example

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 {
      //Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      //Reading image data
      String file ="D:\Images\logo_noise.jpg";
      Mat src = Imgcodecs.imread(file);
      //Creating destination matrix
      Mat dst = new Mat(src.rows(), src.cols(), src.type());
      // Applying MedianBlur on the Image
      Imgproc.medianBlur(src, dst, 5);
      //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("Median Blur Example");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]) {
      launch(args);
   }
}

Input Image

Output

On executing, the above program generates the following image −

Updated on: 09-Apr-2020

415 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements