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

Cân bằng biểu đồ trên một hình ảnh trong OpenCV bằng Java.


Biểu đồ của hình ảnh hiển thị tần suất của các giá trị cường độ pixel. Trong biểu đồ hình ảnh, trục X hiển thị các cường độ màu xám và trục Y hiển thị tần suất của các cường độ này và cải thiện độ tương phản của hình ảnh.

EquizeHist () phương thức của phương thức Imgproc chấp nhận đối tượng Mat đại diện cho ảnh nguồn và ảnh đích, cân bằng biểu đồ của ma trận nguồn và nhận nó trong ma trận đích.

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 HistogramEquilization extends Application {
   public void start(Stage stage) throws IOException {
      //Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      String file ="D:\\Images\\win2.jpg";
      Mat src = Imgcodecs.imread(file, Imgcodecs.IMREAD_GRAYSCALE);
      //Creating an empty matrices to store the destination image.
      Mat dst = new Mat(src.rows(), src.cols(), src.type());
      //Detecting the edges
      Imgproc.equalizeHist(src, 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("Histogram Equilization Example");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]) {
      launch(args);
   }
}

Hình ảnh đầu vào

Cân bằng biểu đồ trên một hình ảnh trong OpenCV bằng Java.

Đầu ra

Khi thực thi, phần trên tạo ra kết quả sau -

Cân bằng biểu đồ trên một hình ảnh trong OpenCV bằng Java.