图像处理之直方图均衡化拉伸
[toc] 1. OpenCV实现 在OpenCV中,实现直方图均衡化比较简单,调用equalizeHist函数即可。具体代码如下: #include <iostream> #include <opencv2\opencv.hpp> using namespace std; using namespace cv; int main() { Mat srcImage; srcImage = imread("D:\\Data\\imgDemo\\lena512color.bmp", IMREAD_GRAYSCALE); imshow("原图像", srcImage); Mat dstImage; equalizeHist(srcImage, dstImage); imshow("均衡后", dstImage); waitKey(); return 0; } 注意equalizeHist函数处理的是8位单波段的mat。运行结果如下所示,可以发现经过直方图均衡化之后,图像的对比度增强了很多。 2. 原理 直方图均衡化的基本思想是把原始图的直方图尽可能的均匀分布,其数学原理与数学中的概率论相关。注意,我这里很多论述牺牲了数学的严密性来加强可理解性,毕竟作者只是个应用者和使用者。 1) 概率密度函数 具体到一张图像上来说,可以把图像的灰度(像素值)r<sub>i</sub>看作是随机变量