1.主要内容
- 什么是直方图(Historgram)
- 直方图均衡化
- API说明
2.什么是直方图
- 举例
假设有图像数据8x8,像素值范围0~14共15个灰度等级,统计得到各个等级出现次数及直方图如下图所示
由个像素值出现的数字得出下列的直方图
- 图像直方图,是指对整个图像在灰度范围内的像素值(0-255)统计频率次数,据此生成的直方图,称为图像直方图-直方图。直方图反映了图像灰度的分布情况。是图像的统计学特征。
3.图像直方图(是一种提高图像对比度的方法,拉伸图像灰度值范围)
- 原图
- 经过直方图均衡化实现后的效果
- 直方图均衡化是一种提高图像对比度的方法,拉伸图像灰度值范围
- 直方图均衡化的实现
如何实现,通过上一课中的remap我们知道可以将图像灰度分布从一个分布映射到另外一个分布,然后在得到映射后的像素值即可。
公式:
4.API说明
equalizeHist(
InputArray src,
OutputArray dst
)
5.演示代码
#include<opencv2\opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main(int argc,char ** argv) {
Mat src, dst;
src = imread("G:\\opencvTests\\C2.png");
if (src.empty())
{
cout << "Could not find this photo" << endl;
return -1;
}
namedWindow("input", CV_WINDOW_AUTOSIZE);
imshow("input",src);
cvtColor(src,dst,CV_BGR2GRAY);
equalizeHist(dst,dst);
imshow("output",dst);
waitKey(0);
return 0;
}