1.图像直方图
假设有图像数据 8 × 8 8\times 8 8×8,像素值范围0~14共15个灰度等级:
统计得到各个等级出现次数及直方图:
2.直方图均衡化
直方图均衡化(Histogram Equalization)是一种增强图像对比度的方法。其主要思想是将一副图像的直方图分布变成近似均匀分布,从而增强图像的对比度。均衡化前后的图像直方图:
举例说明下直方图均衡化的过程,假设现在有一个8位的 8 × 8 8\times 8 8×8灰度图像:
该灰度图像的灰度值出现次数如下表所示,为了简化表格,出现次数为0的值已经被省略:
累积分布函数(cdf)如下所示,与上一表格类似,为了简化,累积分布函数值为0的灰度值已经被省略:
如表格所示,灰度值最小值为52,最大值为154。通常,直方图均衡化算式如下:
h ( v ) = r o u n d ( c d f ( v ) − c d f m i n c d f m a x − c d f m i n × ( L − 1 ) ) h(v)=round \left( \frac{cdf(v) - cdf_{min}}{cdf_{max}-cdf_{min}} \times (L-1) \right) h(v)=round(cdfmax−cdfmincdf(v)−cdfmin×(L−1))
累积分布函数最小值 c d f m i n cdf_{min} cdfmin在本例中为1,最大值 c d f m a x cdf_{max} cdfmax在本例中为64,而 L L L则是灰度级数(如本例中,图像为8位深度,则灰度级数共有 2 8 = 256 2^8=256 28=256级数,这也是最常见的灰度级数)。则对于本例的直方图均衡化算式为:
h ( v ) = r o u n d ( c d f ( v ) − 1 63 × 255 ) h(v)=round \left( \frac{cdf(v)-1}{63} \times 255 \right) h(v)=round(63cdf(v)−1×255)
例如,灰度为78的像素的累积分布函数为46,均衡化后,灰度值变化为:
h ( 78 ) = r o u n d ( 46 − 1 63 × 255 ) = r o u n d ( 0.714286 × 255 ) = 182 h(78)=round \left( \frac{46-1}{63} \times 255 \right) = round (0.714286 \times 255)=182 h(78)=round(6346−1×255)=round(0.714286×255)=182
直方图均衡化后,图像的灰度值变化如下表所示:
全尺寸图像效果:
3.API
void equalizeHist( InputArray src, OutputArray dst );
⚠️输入图像必须是8位的单通道图像。
4.代码地址
5.参考资料
想要获取最新文章推送或者私聊谈人生,请关注我的个人微信公众号:⬇️x-jeff的AI工坊⬇️
个人博客网站:https://shichaoxin.com
GitHub:https://github.com/x-jeff