角点
角点是图像亮度发生剧烈变化或图像边缘曲线上曲率极大值的点
角点的检测方法主要分为两类:基于图像边缘的方法、基于图像灰度的方法
(1)基于图像边缘的方法
一般需要先对图像边缘进行编码,因此计算量较大,并且受图像分割和边缘提取的效果影响较大。
此类方法前期有Rosenfeld和Freeman的成果,后期有CSS(角点检测相关资源)。但不是现在的主流
(2)基于图像灰度的方法
该类方法计算点的曲率和梯度来检测角点,是目前研究的重点。
Moravec算子:最早的角点检测算子,通过计算当前点4(8)个方向的灰度变化来确定角点,计算简单,但不具备旋转不变性(相关步骤及分析见《图像局部不变性特征与描述》阅读笔记(1)-- 背景)
Forstner算子:首先使用Robert算子计算各方向的梯度,构成一个协方差矩阵,通过两个阈值筛选角点。Forstner角点计算简单,定位准确,但由于需要指定阈值,受亮度、对比度影响(具体算法参考http://blog.youkuaiyun.com/carson2005/article/details/40370901)
Harris算子:将边缘响应构成的二维矩阵视为几何上的椭圆,通过考察特征值(椭圆的长轴短轴)确定角点。具有旋转不变性,对亮度、对比度变化也有很好的鲁棒性(见Harris角点检测(1))
Harris-Laplace算子在不同尺度空间中检测Harris角点,然后对每个角点,看其在LOG空间中是不是局部极值,如果是,则定为角点(见Harris角点检测(2)-- Harris-Laplace)。该算子增加了尺度不变性
Harris-Affine算子进一步实现了Harris的仿射不变性。Harris-Laplace使用的二阶Laplace矩阵可以处理各向同性的尺度变化(缩放),但对于每个方向缩放比率不同的仿射变换无能为力。Harris-Affine使用非标准高斯核(几何上看是椭圆的)替代Harris-Laplace的标准高斯核(圆形):
算法步骤
(1)Harris-Laplace算法获得初始角点
(2)对每个初始角点,采用如下步骤
需要说明的是,Harris-Laplace的计算复杂度已经比较高了,Harris-Affine计算量更大。
SUSAN算子:不再沿用微分的思想,而是通过统计圆形模板内与中心点相似点的个数确定。计算简单,抗噪性好,具有旋转、平移不变性(具体算法见SUSAN角点检测)
边缘
边缘是像素亮度变化的不连续产生的,是前背景之间的边界。
边缘检测的方法都是通过计算图像的微分来实现:
利用一阶微分 -- Sobel, Prewitt, Kirsch, Canny
转换成矩阵形式:,这个就是Roberts边缘检测卷积核
对于3*3的模板,有
当c=1时,有,这个就是Prewitt边缘检测卷积核
当c=2时,有,这个就是Sobel边缘检测卷积核
Canny边缘检测算法使用Sobel卷积核,是边缘检测算法中的代表性方法(具体分析见Canny边缘检测)
利用二阶微分 -- Marr, Lindeberg
因此,有
二阶微分对噪声较为敏感LOG算法使用高斯分布来平滑和突出阶跃点