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

Cân bằng histogram (Histogram Equalization) trong OpenCV Java

Histogram ảnh thể hiện tần suất giá trị cường độ pixel. Trục X: mức xám, trục Y: tần suất. Cân bằng histogram cải thiện độ tương phản ảnh.

Phương thức equalizeHist() của Imgproc nhận hai Mat (nguồn, đích), cân bằng histogram của nguồn và lưu vào đích.

Ví dụ minh họa

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 {
    @Override
    public void start(Stage stage) throws IOException {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        String file = "D:\\Images\\win2.jpg";
        Mat src = Imgcodecs.imread(file, Imgcodecs.IMREAD_GRAYSCALE);
        
        Mat dst = new Mat(src.rows(), src.cols(), src.type());
        
        // Cân bằng histogram
        Imgproc.equalizeHist(src, dst);
        
        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("Histogram Equalization");
        stage.setScene(scene);
        stage.show();
    }
    
    public static void main(String[] args) {
        launch(args);
    }
}

Hình ảnh đầu vào và kết quả

Input: Cân bằng histogram (Histogram Equalization) trong OpenCV Java

Output: Cân bằng histogram (Histogram Equalization) trong OpenCV Java