opencv | 图像直方图的应用场景

ゝ一纸荒年。 2022-08-30 13:52 382阅读 0赞

编辑 深度学习初学者 转载自:OpenCV学堂

引言

之前写过很多图像直方图相关的知识跟OpenCV程序演示,这篇算是把之前的都回顾一波。做好自己的知识梳理。

图像直方图

图像直方图是图像的基本属性之一,也是图像像素数据分布的统计学特征,常见的图像直方图可以分为二值图像的直方图表示如下:

cf9e1a1f6f40eea8926ac663710a454b.png

上图a是4x4的二值图像,b是对应的直方图,可以看出X轴表示像素范围(0-黑色、1-白色),Y轴表示像素值出现的频次,即分布。

对灰度图像来说,它的像素值取值范围会扩展到0~255之间,其直方图可以表示如下:

8fc768adc5ed3b083362f3de9d2a46f5.png

从上面的图中可以发现灰度图像的直方图依然是X轴表示像素值范围、Y轴表示各个像素值出现频次,即像素分布。

彩色图像有红色、绿色、蓝色三个通道,其直方图表示稍微复杂一点,要对每个通道进行直方图计算跟表示,图示如下:

06ae63be5533ace0c1814653d1684b00.png

可以看出彩色图像的三个通道各自对应一个直方图分布。

直方图阈值化

OpenCV中支持的两种阈值计算的二值化方法

  • THRESH_OTSU
  • THRESH_TRIANGLE

均是基于图像直方图实现图像二值化分割,其中OTSU阈值分割(大津)对直方图为双峰的灰度图像效果比较好,图示如下:

ab4517fcd7895980b2f1527998e9b684.png

而三角法对直方图分布单峰的图像分割效果比较好,图示如下下:

7a78434dfbee189fe15738e38969a63f.png

直方图均衡化

直方图均衡化是一种通过提升图像对比度实现图像增强的方法,它跟最基础的基于像素差值放缩改变对比度的方法效果更好。图示如下:

e7c192cfb944bc32aa7f22921db00151.png

从上图中可以看出,最左侧列是输入图像,是低对比度图像,左侧二列为直接改变像素值获得对比度提升图像,左侧三列是通过直方图均衡化完成对比度提升,最右侧一列也是通过直方图均衡化完成,不过是基于局部直方图均衡化。OpenCV中支持两种直方图均衡化方法分别是:

  • 正常的直方图均衡化(全局直方图均衡化)
  • 对比度受限的自适应直方图均衡化(CLAHE-局部自适应直方图均衡化)

特别需要注意的是OpenCV的直方图均衡化函数都只支持单通道八位的图像、对RGB彩色图像来说,要实现直方图均衡化提升对比度必须先转换到HSV色彩空间,然后对亮度通道V进行直方图均衡化之后再转换到RGB色彩空间显示。图示如下:

a17363b81b66c7f6d87bbc3b9580aace.png

直方图对比

图像直方图还可以实现图像相似性简单分析与查找,其原理是对两张图像生成的直方图分布数据,进行归一化之后比较,根据数据像素程度,从而判定图像内容的相似程度,该方法可靠性虽然不高,但胜在快捷方便。OpenCV中支持的直方图比较的方法有如下:

7fcc42443d62b2726ee491abd8836d1b.png

相关函数为:

  1. compareHist(
  2. InputArray H1,
  3. InputArray H2,
  4. int method
  5. )

参数解释

  • H1表示第一张图的直方图
  • H2表示第二张图的直方图
  • method表示直方图比较的方法,支持卡方、相关性,交叉、巴氏距离

直方图反向投影

图像反向投影的最终目的是获取ROI然后实现对ROI区域的标注、识别、测量等图像处理与分析,是计算机视觉与人工智能的常见方法之一。反向投影通常是彩色图像投影效果会比灰度图像效果要好,原因在于彩色图像带有更多对象细节信息,在反向投影的时候更加容易判断、而转为灰度图像会导致这些细节信息丢失、从而导致分割失败。最常见的是基于图像直方图特征的反向投影,正是因为直方图反向投影有这样能力,所以在经典的MeanShift与CAMeanShift跟踪算法中一直是通过直方图反向投影来实现已知对象物体的定位。

bf93ec82a7f6ddd169958bea59b57223.png

需要注意的是,直方图反向投影是基于颜色的,所以会对RGB彩色图像转换到HSV色彩空间,然后基于H跟S两个通道生成2D直方图数据分布,如下图所示:

b805e9328f947680709add6f90f26fdd.png

其它类型图像直方图与直方图缺陷

除了图像像素分布直方图,还有一些其他类型基于图像梯度跟角度的直方图类型,总结如下:

-图像像素直方图
-图像梯度直方图
-图像角度直方图

后面两种类型的直方图在SIFT跟HOG特征提取的算法中都有应用,但是同时直方图只是数据统计信息,没有包含图像空间信息,所以通过直方图无法正确描述图像的结构化信息。它的缺点图示如下:

3a007562f2b90c32d265ed2eb5a0a7bb.png

上图说明直方图数据完全一致的图像,但是图像的空间结构完全不同,根本没有相似性可言,所以图像直方图信息只是图像的基本属性之一,但是不是图像的唯一特征。同样作为图像的基本属性之一,直方图应用范围非常广泛,是最基础的图像特征向量数据之一,常规的直方图归一化即可得到PDF数据。

  1. 猜您喜欢:等你着陆!【GAN生成对抗网络】知识星球! CVPR 2021 | GAN的说话人驱动、3D人脸论文汇总
  2. CVPR 2021 | 图像转换 今如何?几篇GAN论文
  3. CVPR 2021】通过GAN提升人脸识别的遗留难题
  4. CVPR 2021生成对抗网络GAN部分论文汇总
  5. 经典GAN不得不读:StyleGAN
  6. 最新最全20篇!基于 StyleGAN 改进或应用相关论文
  7. 100篇!CVPR 2020最全GAN论文梳理汇总!附下载 | Python进阶》中文版附下载 | 经典《Think Python》中文版附下载 | Pytorch模型训练实用教程》附下载 | 最新2020李沐《动手学深度学习》
  8. 附下载 | 《可解释的机器学习》中文版
  9. 附下载 |《TensorFlow 2.0 深度学习算法实战》
  10. 附下载 | 100篇!CVPR 2020最全GAN论文梳理汇总!附下载 |《计算机视觉中的数学方法》分享

发表评论

表情:
评论列表 (有 0 条评论,382人围观)

还没有评论,来说两句吧...

相关阅读

    相关 OpenCV直方图

    直方图是根据灰度图像绘制的,而不是彩色图像。直方图的左边区域像是了暗一点的像素数量右侧显示了亮一点的像素的数量。从这幅图上你可以看到灰暗的区域比两的区域要大,而处于中间部分的

    相关 OpenCV-Python图像像素直方图

    图像直方图是反映一个图像像素分布的统计表,其横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的。纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数的百分比。

    相关 图像直方图

    灰度直方图的定义 灰度直方图定义为数字图像中各灰度级与其出现的频数之间的统计关系,用公式表示为 P(k)=nkn,k=0,1,...,L−1 且 ∑k=0L−1P

    相关 Opencv灰度直方图

    灰度直方图是一个帮助分析图像很有力的工具   灰度直方图这个程序主要有几个函数和结构体先说一下:   1.  CreateHIst          CvHistog