OpenCV 2 学习笔记(17): 均衡化图像直方图

本文介绍了直方图均衡化在改善图像质量中的作用,特别是针对颜色失衡的问题。通过直方图均衡化,可以使图像的灰度级分布更加均匀,提高视觉效果。OpenCV中的cv::equalizeHist函数用于实现这一功能。文章讨论了最均匀直方图的理想状态,并简单说明了查找表的构建方法。
摘要由CSDN通过智能技术生成

上一节我们提到可以使用拉伸直方图的方法,使图像中包含所有的灰度级,来改善图片的质量。但是有的时候,图像的视觉缺陷不是由于图像的所占用的灰度级数少儿导致的。而是一些图像中的一些灰度级出现太频繁,例如有时候中间灰度级出现太频繁,而偏黑色或者偏白色的灰度级太少,导致了颜色失衡等等。这样我们就会得出结论,一个视觉效果好的图片,应当所有灰度级数所占有的像素数基本都是相同的。对于图片做这种处理就叫做直方图均衡化,也就是使直方图尽可能的平坦。

OpenCV中含有这个功能的函数是cv::equalizeHist:

cv::Mat equalize(const cv::Mat &image) {
      cv::Mat result;
      cv::equalizeHist(image,result);
      return result;
   }
可以再做一下比较,还是lena图:


下面让我们详细解释一下直方图均衡化。如果比较极端的话,最均匀的直方图就是直方图是平的,每一个坐标点的像素数都是相同的。也就是说,有50%的像素值小于128,25%小于64,以此类推。也就是说P%的像素值要小于255*P%。那么查找表可以如下定义:

lookup.at<uchar>(i)= static_cast<uchar>(255.0*p[i]);

这里的p[i]是什么呢,是像素值小于i的所有像素所占的比例。也就是累积直方图中所用到的累积比例。一般情况下,均衡化直方图可以改善图像的视觉效果,但是不是绝对的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值