点击上方
“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
![](http://mmbiz.qpic.cn/mmbiz_jpg/ow6przZuPIENb0m5iawutIf90N2Ub3dcPuP2KXHJvaR1Fv2FnicTuOy3KcHuIEJbd9lUyOibeXqW8tEhoJGL98qOw/640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1)
图像直方图是图像的基本属性之一,也是图像像素数据分布的统计学特征,常见的图像直方图可以分为二值图像的直方图表示如下:
上图a是4x4的二值图像,b是对应的直方图,可以看出X轴表示像素范围(0-黑色、1-白色),Y轴表示像素值出现的频次,即分布。
对灰度图像来说,它的像素值取值范围会扩展到0~255之间,其直方图可以表示如下:
从上面的图中可以发现灰度图像的直方图依然是X轴表示像素值范围、Y轴表示各个像素值出现频次,即像素分布。
彩色图像有红色、绿色、蓝色三个通道,其直方图表示稍微复杂一点,要对每个通道进行直方图计算跟表示,图示如下:
可以看出彩色图像的三个通道各自对应一个直方图分布。
OpenCV中支持的两种阈值计算的二值化方法
-
THRESH_OTSU
-
THRESH_TRIANGLE
均是基于图像直方图实现图像二值化分割,其中OTSU阈值分割(大津)对直方图为双峰的灰度图像效果比较好,图示如下:
而三角法对直方图分布单峰的图像分割效果比较好,图示如下下:
直方图均衡化是一种通过提升图像对比度实现图像增强的方法,它跟最基础的基于像素差值放缩改变对比度的方法效果更好。图示如下:
从上图中可以看出,最左侧列是输入图像,是低对比度图像,左侧二列为直接改变像素值获得对比度提升图像,左侧三列是通过直方图均衡化完成对比度提升,最右侧一列也是通过直方图均衡化完成,不过是基于局部直方图均衡化。OpenCV中支持两种直方图均衡化方法分别是:
特别需要注意的是OpenCV的直方图均衡化函数都只支持单通道八位的图像、对
RGB彩色图像来说,要实现直方图均衡化提升对比度必须先转换到HSV色彩空间,然后对亮度通道V进行直方图均衡化之后再转换到RGB色彩空间显示
。图示如下:
图像直方图还可以实现图像相似性简单分析与查找,其原理是对两张图像生成的直方图分布数据,进行归一化之后比较,根据数据像素程度,从而判定图像内容的相似程度,该方法可靠性虽然不高,但胜在快捷方便。OpenCV中支持的直方图比较的方法有如下:
相关函数为:
compareHist(
InputArray H1,
InputArray H2,
int method
)
参数解释
图像反向投影的最终目的是获取ROI然后实现对ROI区域的标注、识别、测量等图像处理与分析,是计算机视觉与人工智能的常见方法之一。反向投影通常是彩色图像投影效果会比灰度图像效果要好,原因在于彩色图像带有更多对象细节信息,在反向投影的时候更加容易判断、而转为灰度图像会导致这些细节信息丢失、从而导致分割失败。最常见的是基于图像直方图特征的反向投影,正是因为直方图反向投影有这样能力,所以在经典的MeanShift与CAMeanShift跟踪算法中一直是通过直方图反向投影来实现已知对象物体的定位。
需要注意的是,直方图反向投影是基于颜色的,所以会对RGB彩色图像转换到HSV色彩空间,然后基于H跟S两个通道生成2D直方图数据分布,如下图所示:
除了图像像素分布直方图,还有一些其他类型基于图像梯度跟角度的直方图类型,总结如下:
-图像像素直方图
-图像梯度直方图
-图像角度直方图
后面两种类型的直方图在SIFT跟HOG特征提取的算法中都有应用,但是同时直方图只是数据统计信息,没有包含图像空间信息,所以通过直方图无法正确描述图像的结构化信息。它的缺点图示如下: