OpenCV 直方图处理:直方图均衡和规定化(匹配)

如题所述

第1个回答  2022-07-21
灰度直方图是图像中像素灰度集的一种统计反应。它能够描述图像中灰度的分布情况,直观地展现出图像中灰度所占多少。直方图横轴表示像素的灰度范围(比如说 0~255),纵轴表示的是像素的数量或者密度。亮暗、对比度、图像中的内容不同,直方图的表现也会不同。本文主要参考《冈萨雷斯》一书。

有的图像的灰度分布不均匀,出现过亮过暗,或者对比度过低的情况,这样的图像细节不明显,在肉眼观察时会丢失一些信息。这时可以使用直方图均衡技术对图像进行变换,变成肉眼易于分辨的细节分明的图像。

图像是离散的,所以实际中使用的是离散形式

那么使用上面的公式,就可以将直方图变换成这个样子,这样的图像一般具有比较好的细节表现。

一般来说,直方图均衡能够自动地确定变换函数,且输出结果比较好,当时需要自动增强时是一种好方法。但有的情况下,使用直方图均衡并不是最好的办法。有时候我们可以指定特定的直方图,而不是均匀分布的直方图,并让原图像的直方图变换成我们指定的形式。这个过程称为直方图匹配或者直方图规定化。

在推导过程中,直方图规定化的过程如下:

1.对原图像进行直方图均衡。和上面一样。

2.对事先规定的直方图也进行均衡。z为最终输出图像像素的灰度值。

我这里做个图解释一下

同样的,写成离散形式。

感觉OpenCV在直方图处理这方面并不怎么走心。这里使用的是另一篇 博客 的类封装和算法实现。

直方图规定化中要注意两点:

References:
《数字图像处理》 —— 冈萨雷斯
图像处理基础(8):图像的灰度直方图、直方图均衡化、直方图规定化(匹配)
相似回答