Giới thiệu
Histogram ảnh biểu diễn tần suất các giá trị cường độ pixel. Trục X: mức xám (0-255), Trục Y: số pixel.
Cân bằng histogram (Histogram Equalization) cải thiện độ tương phản bằng cách kéo giãn phạm vi cường độ. Hàm equalizeHist() thực hiện điều này.
Cú pháp
equalizeHist(Ma_trận_nguồn, Ma_trận_đích)
Chỉ áp dụng cho ảnh đơn kênh (grayscale). Với ảnh màu, chuyển sang không gian YCrCb, cân bằng kênh Y (luminance), sau đó chuyển lại BGR.
Chương trình demo equalizeHist ảnh màu
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main() {
Mat original = imread("sky.jpg");
vector<Mat> channels;
Mat hist;
cvtColor(original, hist, COLOR_BGR2YCrCb);
split(hist, channels);
equalizeHist(channels[2], channels[2]); // Kênh V (Value) ở chỉ số 2 trong YCrCb? Sửa: YCrCb kênh 0=Y, 1=Cr, 2=Cb. Thường cân bằng kênh Y (0).
merge(channels, hist);
cvtColor(hist, hist, COLOR_YCrCb2BGR);
namedWindow("original"); imshow("original", original);
namedWindow("hist"); imshow("hist", hist);
waitKey(0);
return 0;
}
Kết quả
Ảnh gốc và ảnh sau cân bằng histogram hiển thị song song. Ảnh cân bằng có độ tương phản tốt hơn, chi tiết rõ nét hơn.