本站使用了 Pjax 等基于 JavaScript 的开发技术,但您的浏览器已禁用 JavaScript,请开启 JavaScript 以保证网站正常显示!

直方图匹配

本文主要介绍以下几点内容:

  • 什么是直方图匹配
  • 直方图匹配有何作用应用在什么地方
  • 直方图匹配算法步骤与代码实现
  • 直方图、直方图均衡化和直方图匹配三者关系

直方图匹配

直方图匹配(histogram matching)又称为直方图规定化,这是一种将一幅图像的直方图调整为规定的直方图的形状的图像增强的方法。举个例子,现有一幅图像,可以计算得到它地直方图,通过分析直方图后发现这灰度分布情况不是想要的,就想办法将直方图调整为想要的分布情况,而这一理想的直方图为标准的直方图(或者说目标直方图)。这一调整过程是将直方图匹配或者规定为这一标准的直方图,这一过程称为直方图匹配。

直方图匹配有何作用

直方图反映了图像全局的像素点灰度值的分布情况,而直方图匹配又是调整图像的直方图,所以直方图匹配的结果是调整了图像的全局亮度、对比度,这是一种调整图像对比度的图像增强方法。调整图像直方图的方法还有直方图均衡化,只不过直方图均衡化是自动地将直方图均匀摊开了,目的是图像的灰度分布尽可能地均匀。直方图匹配可以用在想要把图像调整为某种特定的对比度图像,或者在拥有两幅图像时将其中一幅图像调整为与另一幅对比度、色调相近的图像。

直方图匹配算法步骤与代码实现

算法步骤

(1)计算原图像直方图的累计直方图$P_i$

$$P_i = \sum_{k=0}^ip_r(k), i = 0,1,2,...,L-1$$

$p_r(k)$原始像素的直方图

(2)计算规定直方图的累计直方图$P_j$

$$P_j = \sum_{l=0}^jp_z(l), j = 0,1,2,...,L-1$$

$p_z(l)$为规定的直方图

(3)按照$P_i,P_j最近的原则$,即$|P_i - P_j|$最小来寻找$i到j$的映射$i->j$
(4)根据步骤3的记录求出$i->j$的变换函数,由$i$映射到$j$,即$j = T(i)$,对原图像进行灰度变换。即原图像素点像素值为$i$,按照步骤3的映射关系,将像素值更换为$j$。

直方图匹配举例.png

代码实现

直方图、直方图均衡化和直方图匹配三者关系

直方图为对图片像素点进行灰度值统计而得到的一个灰度分布图表,反应的时图像的全局灰度分布情况。而直方图均衡化是将直方图进行“均匀”后重新得到一个直方图,而直方图匹配时将直方图按照一个规定的直方图形态的实际去进行调整,最后得到新的直方图与规定的直方图形态很相似。直方图均衡化和直方图匹配相同点都是将原图像直方图按照一定的方式进行调整,只不过调整的方式有所区别,可以将直方图均衡化看作是直方图匹配在规定的直方图形态为均匀分布条件下的特例。

reference

【1】数字图像处理3rd
【2】直方图匹配-百度百科
【3】直方图匹配-csdn


 继续浏览关于 图像处理计算机视觉图像处理算法直方图 的文章

 本文最后更新于:2020/01/05 13:58:39,可能因经年累月而与现状有所差异

 引用转载请注明:芒果的Blog > opencv,算法,计算机视觉 > 直方图匹配