直方图匹配(直方图规定化)

直方图处理可以增加图像的动态范围,但是直方图处理针对的是图像整体偏暗偏亮(注意是整体),若一幅图像即存在偏暗又存在偏亮的区域,此时想要增加图像的动态范围,不宜采用直方图处理。(例如想要增加偏暗区域的动态范围,可以采用幂律变换,当 γ < 1 \gamma<1 时,偏暗区域的动态范围增加)

直方图均衡化通过变换函数(累积分布函数)获得一个具有均匀分布直方图的输出图像。而直方图匹配(histogram matching or histogram specification)则将输入图像转换为具有指定直方图的输出图像。

为了找到输入到输出的变换函数,我们可以利用直方图均衡化函数。假设输入图像的概率密度函数为 p r ( r ) p_r(r) ,输出图像的概率密度函数为 p z ( z ) p_z(z) 。对输入图像作直方图均衡化:
s = T ( r ) = ( L 1 ) 0 r p r ( w ) d w s=T(r)=(L-1) \int_0^r p_r(w)dw

对输出图像作直方图均衡化:
G ( z ) = ( L 1 ) 0 z p z ( v ) d v = s G(z)=(L-1) \int_0^z p_z(v)dv=s

理论上,对同一内容的图像作均衡化其结果应该是相同的,即 T ( r ) = G ( z ) = s T(r)=G(z)=s
因此,
z = G 1 ( s ) = G 1 ( T ( r ) ) z=G^{-1}(s)= G^{-1}(T(r))

其离散形式为:
z q = G 1 ( s k ) = G 1 ( T ( r k ) ) z_q=G^{-1}(s_k)=G^{-1}(T(r_k))

即先对输入图像进行直方图均衡化,将均衡化后的图像作为输出图像均衡化结果,然后对其作输出图像均衡化的逆变换获得输出图像。

在实际使用过程中,我们不需要对 G G 求出其逆变换的确切形式。事实上,在对图像进行直方图均衡化的过程中,由于我们处理的是离散值,最终会获得一个原图像像素值 z q z_q 与均衡化图像像素值 s k s_k 一一对应的表格,在求逆变换的时候,只需要查询该表,就能找到 s k s_k 对应的原图像像素值 z k z_k 。需要注意的是,若存在多个 z q z_q s k s_k 对应,我们通常取最小值。

comparison between 直方图均衡化和直方图匹配(p206):

The image is characterized by large dark areas, resulting in a histogram with a large concentration of pixels in the dark end of the intensity scale. There is an object in the background, but it is hard to discern what it is. We should be able to see the details in the dark area by expanding the histogram using histogram equalization. If the objective were simply to reveal the content hidden in the dark areas of the image, we would be finished. However, suppose that the image is going to be used for publication in a glossy magazine. The image we just obtained is much too noisy. The reason is that a very narrow range of the darkest end of the intensity scale was expanded into a much higher range of intensity values in the output image. Thus, histogram equalization in this case expanded the noisiest end of the intensity scale. What we need is a transformation that expands the low end of the scale, but not quite as much. This is typical of instances in which histogram specification can be quite useful.

总之,直方图均衡化可以增强对比度,如果想看清楚原图像较黑的地方(反映在直方图上就是亮度较低的地方呈现特别尖锐的山峰),通过直方图均衡化能呈现更多的黑色区域的细节。但是直方图均衡化将原来直方图上较狭窄的低亮度值区域扩展到较大的范围,容易产生更多的噪声(Typically, the darkest areas of an image are its noisiest due to imaging sensor limitations at low light levels.)。通过直方图匹配指定直方图的形状,能够缓解直方图均衡化所带来的问题。

精确直方图规定化(exact histogram specification)

由于处理的是离散值以及近似的影响,直方图均衡化所得到的直方图并不是精确的均匀分布。同理,上述的直方图匹配所得到的直方图也与指定的直方图间存在差异。为了获得精确的指定直方图,需要进行精确直方图匹配(规定化)。

这里简单讲一下原理,详情见P209。

精确直方图规定化所指定的直方图以未归一化直方图(即unnormalized histogram,使用亮度值出现的次数而不是频率)的形式给出,且要满足条件:
j = 0 L 1 h ( j ) = M N \sum_{j=0}^{L-1} h(j)=MN
然后选取 K K 个邻域,对图像中的每个像素计算邻域平均,则每个像素我们可以获得一个 K K 维的向量,其中向量的第 i i 个元素为第 i i 个邻域所获得的平均值。
对于图像的 M N MN 个像素,我们可以获得一个 M N × K MN×K 维的数组,其中第 j j 行是图像的第 i i 个像素(将数组进行按列线性索引,如原来 ( x , y ) (x,y) 的元素对应于 α = M y + x \alpha=My+x ,下标从0开始)所对应的 K K 维的邻域平均值向量。然后对这个 M N MN 个行向量按字典序排序(MATLAB函数sortrows),获得对应的 M N MN 个像素的排序。
然后对这个新的像素排序按指定的直方图分组,比如第 i i 组含 h ( i ) h(i) 个像素,并为这第 i i 组的所有像素分配像素值 i i 。最后获得精确直方图规定化的图像

关于精确直方图规定化的作用: 事实上,采用精确直方图规定化获得精确均匀分布直方图,其视觉效果与直方图均衡化获得近似均匀分布直方图的视觉效果一样。那么精确直方图规定化的用处是确定直方图均衡化确实有用,然后我们就可以用更加简单的方式获得同样的处理效果啦。(毕竟精确直方图规定化确实比较繁琐。。。。)

均衡化有时候会失效:(P218) 实验表明,如果图像存在一大片连续的暗区域,采用直方图均衡化并不能获得很好的效果。给出的一种方法是,采用掩模,将亮度值为0的区域去除掉,然后对剩下的区域采用均衡化。另一种方法是,指定直方图,然后。。。获得了更好的效果。(关于怎么指定的???)

局部直方图处理

猜你喜欢

转载自blog.csdn.net/LilyZJ/article/details/88750251