1.简介
在我上一篇文章中,着重介绍了通过提高对比度的方法提升图像质量。但是,在多数情况下,图像的缺陷主要体现在某些颜色值的出现频率过高。
因此,我们采取直方图均衡化的方法对过高的颜色值进行平均化操作,即使得图像的直方图更加平坦。以达到图像增强的目的。
2.实现方法
在opencv中,有一个很简单的函数equalizeHist,它可以自动的为我们进行直方图均衡化的操作,如果我们想进行自己操作的话,可以选择自己定义查找表。
void equalizeHist( InputArray src, OutputArray dst );
使用这个OpenCV自带函数,我们就可以自动对图像进行平衡化操作,使得图像的显示效果更好。
我们可以看到,这个函数只有一个输入图像和一个输出图像,比较容易掌握。
实现方面,我们在Histogram1D类中添加一个equalize方法,方便进行操作。
cv::Mat Histogram1D::equalize(const cv::Mat &image)
{
cv::Mat result;
cv::equalizeHist(image, result);
return result;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6afaee94b6256e108e1c51bfdf4e5330.png)