![a406f79edeb79e895ca92c23ca059ebc.png](https://i-blog.csdnimg.cn/blog_migrate/dd63e75bea0a456d1d4e4d5a23839fdd.png)
我们已经介绍了特征点提取的几种算法
Encoder:【计算机视觉】2. 特征点检测:Harris, SIFT, SURF, ORBzhuanlan.zhihu.com![3a3be6cee02350a6f8b4fe54d0b351cd.png](https://i-blog.csdnimg.cn/blog_migrate/e66f4eaf4ca759d4f13ffb14c5a1f74a.png)
在本文中我们将介绍其他特征的识别方法,这些特征同样也在计算机视觉中有着应用。典型的是,检测边缘的Canny边缘检测算法,检测直线或圆的Hough变换,以及实际场景中特征检测的典型应用,即基于HOG特征的行人检测。另外一个典型应用,即基于LBP特征的人脸检测与识别(结合SVM),由于内容较多,将专门用一篇文章来介绍。
Encoder:基于LBP特征和SVM的人脸识别zhuanlan.zhihu.com![10769c5071e3ae00c524ca9e4575d017.png](https://i-blog.csdnimg.cn/blog_migrate/0c82c4ba237e6185119fdab13878c1b2.jpeg)
Canny边缘检测
将一维信号用不同尺度的两阶微分滤波器进行滤波,并标出过零点的位置,则以下点的集合称为过零点指纹图或零交叉图
Thm. [过零点定理] 给定过零点指纹图,f(x)可在相差一个常数因子的意义下唯一确定用高斯二阶微分滤波器得到的过零点指纹图具有单调性:当σ增大时,成对的零交叉点交汇在一起消失。
Canny的边缘最优化准则
- [检测标准(最大信噪比准则)] 要有好的检测结果,不丢失,也不应有虚假的边缘;
- [定位标准(最优过零点准则)] 实际边缘位置与检测到的边缘位置间的偏差最小;
- [单响应标准(多峰值响应准则)] 对实际上的同一边缘要有低的响应次数。
Canny以一维形式为例,给出了三条准则的数学表达式,将寻找最优滤波器的问题转换为泛函的约束优化问题。Canny边缘检测通过阈值化确定突出的边缘,若滤波结果超出或低于阈值,则噪声引起的单边缘虚假响应会使检测出的边缘不连续,Canny通过滞后阈值化处理解决该问题:
- 图像的响应大于高阈值,它一定是边缘
- 图像的响应小于低阈值,它一定不是边缘
- 图像的响应在高低阈值之间,如果它与大于高阈值的像素相连,它也可能是边缘
- 高、低阈值可根据对信噪比的估计确定
滤波器的尺度选择一直是边缘检测的一大难题,对于Canny边缘检测,不同的尺度对应着不同方差的高斯操作。我们常常采用特征综合方法,先用最小尺度的滤波器去检测边缘,并把边缘标记出来,把检测结果与高斯函数作用,估计下一个较大尺度的滤波器检测该边缘的位置,用较大尺度滤波器与原图像卷积,如果在刚才预测的地方检测出边缘,那么只有当它的幅度远大于小尺度滤波器时才接受这个边缘点。
边缘图像阈值化方法基于图像的边缘幅度信息,通过选择合适的阈值,排除小边缘值的干扰。
有方向边缘数据的非最大抑制根据8-邻接将边缘量化为8个方向,在边缘图像中,对于每个非0幅值的像素,考察由边缘方向指出的两个邻接像素,如果两个邻接像素的幅值有一个超过当前考察像素的幅值,则将当前考察像素标记出来,处理边缘图像上的所有像素,重新扫描图像,将标记像素置为0。
边缘检测算子输出的滞后过滤设置高阈值t1和低阈值t0,将幅值超过t1的所有边缘标注为正确边缘,扫描幅值在区间[t0,t1]内的所有像素,如果该像素与已标注为边界的另一个像素接壤,则将它也标记出来。
边缘松弛法通过考虑邻域中边缘像素的性质提高边缘的质量。边缘松弛法基于特定邻域中边缘的强度,从而使每个边缘像素的确信度得到增加或者降低,两个较强边缘像素间的弱边缘很可能是边界的一部分,一个没有前后关系支持的较强边缘很可能不是边界。
裂缝边缘(crack edge)是在像素间创建的结构,每个像素有4个裂缝边缘,裂缝边缘的方向指向亮度增大的方向,幅值是相关像素对亮度差的绝对值。中心边缘e在每个端点处有一个顶点,用从顶点出发的边缘数目来评价顶点(顶点类型),用顶点类型对i-j描述边缘e的类型。
可能的边缘上下文情况(i≤ j)
- [0-0] 孤立边缘:对边缘信度产生负面影响
- [0-1] 不确定:弱正面,或对边缘信度无影响
- [0-2,0-3] 死结:对边缘信度产生负面影响
- [1-1] 连续:对边缘信度产生强正面影响
- [1-2,1-3] 连续至边界交叉:对边缘信度产生中等正面影响
- [2-2,2-3,3-3] 边界间架桥:对边缘信度无影响
Hough变换
Hough变换的基本原理是基于点-线的对偶性质,如果我们设直线的法向量模值为ρ,相角为θ,那么直线上的任一点(x,y)满足ρ=x cosθ+y sinθ,如图所示:
![cf817296ab12665f78e050be86c04b30.png](https://i-blog.csdnimg.cn/blog_migrate/c5ddda3ae2ec8223f2b0a6ff4cf10863.jpeg)
如果以任意x,y为参数,θ为自变量,ρ为因变量,那么上式就是周期为2π的正弦曲线簇,曲线簇有且只有唯一交点,其对应的ρ, θ值即为直线的ρ, θ参数。由于三角函数的周期性,我们对θ进行细分(例如以10°为步长,则需进行36次循环),将参数空间细分为m×n个累加单元,初始化累加器矩阵Q,例如考虑ρ ∈[-20,20]且为整数,则m=41;以10°为步长,则n=36;对每一组ρ, θ值,遍历图像上的点并进行“投票”,就能将直线检测出来。
直角坐标系中的一个点映射到参数空间中为一条正弦曲线;参数空间中的一个点对应直角坐标系中的一条直线;直角坐标系中的共点线映射到参数空间中为一条曲线;直角坐标系中的共线点映射到参数空间后为一个交于同一点的曲线簇。
推广1:如果我们要在图像中检测R条直线,那么就要在累加器矩阵Q中取出前R个最大值单元。
推广2:我们知道圆的标准方程$(x-a)^2+(y-b)^2=r^2$,在半径已知的情形下,曲线簇在二维参数空间(a,b)中的形态是一簇等半径的圆,它们有且只有一个共同交点,交点对应的(a,b)值即为所求。在半径未知的情形下,曲线簇在三维参数空间(a,b,r)中的形态是一簇减去底面的圆锥表面,需要对应任意给定的半径来求取交点。
推广3:椭圆、双曲线、抛物线等等形状也可以写成参数方程的形式,同样可以利用Hough变换进行检测,称为广义Hough变换。
推广4:基于概率的Hough变换,并不对所有点进行运算,而是对图像的随机子集中的点进行运算。
HOG特征与行人检测
HOG特征(histogram of oriented gradient,梯度方向直方图),能够提取人体的外形信息和运动信息,形成丰富的特征集,一般用于行人目标的检测。HOG的基本思想是,局部目标的外表和形状可以被局部梯度或边缘方向的分布很好的描述,即使不知道对应的梯度和边缘的位置,将图像分为细胞单元(cells),计算细胞单元的梯度方向直方图,把细胞单元组合成块(block)并归一化,形成HOG描述子。
为了减少光照影响,首先需要将整个图像进行规范化(归一化)。在图像的纹理强度中,局部的表层曝光贡献的比重较大,所以这种压缩处理能够有效地降低图像局部的阴影和光照变化。因为颜色信息作用不大,通常先转化为灰度图,进行γ压缩,使得
随后,计算图像横坐标和纵坐标方向的梯度,并据此计算每个像素位置的梯度方向值;求导操作不仅能够捕获轮廓,人影和一些纹理信息,还能进一步弱化光照的影响。
接着,我们将图像分成若干个“单元格cell”,例如每个cell为6×6个像素。假设我们采用9个bin的直方图来统计这6×6个像素的梯度信息。也就是将cell的梯度方向360度分成9个方向块。例如:如果这个像素的梯度方向是20~40度,直方图第2个bin的计数就加一,这样,对cell内每个像素用梯度方向在直方图中进行加权投影(映射到固定的角度范围),就可以得到这个cell的梯度方向直方图了,就是该cell对应的9维特征向量(因为有9个bin)。
由于局部光照的变化以及前景-背景对比度的变化,使得梯度强度的变化范围非常大。这就需要对梯度强度做归一化,即
HOG的优点:
- HOG表示的是梯度/边缘的结构特征,可以描述局部的形状信息
- 位置和方向的量化一定程度上可以抑制平移和旋转的影响
- 局部区域归一化直方图可以部分抵消光照变化带来的影响
- 分块分单元的处理方法使得图像局部像素点之间的关系可以很好得到的表征
HOG的缺点:
- 描述子生成过程冗长,导致速度慢,实时性差
- 很难处理遮挡问题
- 由于梯度的性质,HOG对噪点相当敏感