Home >Java >javaTutorial >How to add noise to image using Java OpenCV library?

How to add noise to image using Java OpenCV library?

WBOY
WBOYforward
2023-08-18 14:01:021258browse

Add noise to a given image using OpenCV -

  • Read the contents of the given image into a Mat object.

  • Create two empty matrices to store the noise and results

Create two MatOfDouble matrices to store the mean and standard deviation.

  • Use the meanStdDev() function to obtain the mean and standard deviation values Use the randn() method to create a matrix with random elements (used to store noise).

  • Pass the source, mean and standard deviation created above to this method objects.

Finally, the noise matrix and the source matrix are added and saved as the target matrix.

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.MatOfDouble;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
public class AddingNoise extends Application {
   public void start(Stage stage) throws IOException {
      //Loading the OpenCV core library
      System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
      //Reading the Image from the file
      String file ="D://images//elephant.jpg";
      Mat src = Imgcodecs.imread(file);
      System.out.println("Image Loaded");
      //Creating destination matrix
      Mat dst = new Mat(src.rows(), src.cols(), src.type());
      //Creating a matrix for the noise
      Mat noise = new Mat(src.rows(), src.cols(), src.type());
      //Calculating the mean and standard deviation
      MatOfDouble mean = new MatOfDouble();
      MatOfDouble dev = new MatOfDouble();
      Core.meanStdDev(src, mean, dev);
      //Filling the noise matrix
      Core.randn(noise, mean.get(0,0)[0], dev.get(0,0)[0]);
      //Adding noise to the destination
      Core.add(src, noise, dst);
      //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("Adding Noise Example");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]) {
      launch(args);
   }
}

Input image

如何使用Java OpenCV库向图像添加噪声?

Output

After executing the above program, the following output will be generated−

如何使用Java OpenCV库向图像添加噪声?

The above is the detailed content of How to add noise to image using Java OpenCV library?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:tutorialspoint.com. If there is any infringement, please contact admin@php.cn delete