概念和特点
均衡化处理后的图像只能是近似均匀分布,均衡化图像的动态范围扩大了。但是本是扩大了量化间隔,量化级别减少。原来灰度不同的像素经过处理后可能变的相同,形成了一片相同的灰度区域
实现直方图均衡化:equalizeHist()函数
函数原型
void equalizaeHist(InputArray src,OutputArray dst)
步骤:
1. 计算输入图像直方图
H
H
2. 进行直方图归一化,直方图的组距的和为255
3. 计算直方图积分
4. 以
H′
H
′
作为查询表进行图像变换
dst(x,y)=H′(src(x,y))
d
s
t
(
x
,
y
)
=
H
′
(
s
r
c
(
x
,
y
)
)
示例程序
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat srcImage, dstImage;
//输入原始图像
srcImage = imread("1.jpg");
if (!srcImage.data)
{
printf("读取图片错误~!\n");
return false;
}
cvtColor(srcImage, srcImage, COLOR_BGR2GRAY);
imshow("原始图", srcImage);
//进行直方图均衡化
equalizeHist(srcImage, dstImage);
//显示结果
imshow("经过直方图均衡化后的图", dstImage);
waitKey(0);
return 0;
}