How to implement Gaussian 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.

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

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

  • Two Mat objects representing the source and destination images.

  • A Size object representing the size of the kernel.

  • A variable of the type double representing the Gaussian kernel standard deviation in the X direction.

Example

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.core.Size;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class GausianBlurExample extends Application {
   public void start(Stage stage) throws IOException {
      //Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      String file ="D:\Images\elephant.jpg";
      Mat src = Imgcodecs.imread(file);
      //Creating destination matrix
      Mat dst = new Mat(src.rows(), src.cols(), src.type());
      //Applying GaussianBlur on the Image
      Imgproc.GaussianBlur(src, dst, new Size(15, 15), 0);
      //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("Gaussian 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 output −

Updated on: 09-Apr-2020

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements