特征点/区域
局部特征点的要求
可重复性和正确性:平面内几何变换不变,平面外几何变化不变,光照鲁邦。
局部性:特征是局部的,对遮挡物不敏感。
数量:要有足够多的特征点/区域来覆盖整个物体
特异性:区域需包含“感兴趣的”结构
有效性:接近实时
特征响应
在任何方向移动窗口,灰度值有较大的改变。
灰度改变度量/特征响应度量
基于灰度
优点:直接用图像灰度值,计算速度块,对噪声不敏感。
角点:特征点与其邻域内足够多的像素点处于不同区域
FAST
邻域Np:Bresenham圆上的16个像素。
特征响应度量:圆上有n个连续的像素点的灰度值都大于或小于中心点的值。
16个像素的轮询顺序决定检测速度(决策树决定轮询顺序)
ORB
在FAST基础上加速。
邻域Np:只包括上下左右四个像素点,效果与和16个像素比较相同。
特征响应度量:至少有一对连续像素的灰度高于Ip+t或小于Ip-t则将p作为关键点。
搜索时间缩减了四倍。
使用图像金字塔保证尺度不变。
使用执行标定方向保证旋转不变。
基于灰度一阶导数——Harris角点检测器
角点
两条直线的交点,轮廓的高曲率点。
窗口函数w(x,y)
可以是二值(窗口内为1,窗口外为0),也可以是高斯函数。
移动后[u,v]灰度值的变换SSD
梯度近似SSD
使用泰勒展开,变化后的灰度值 近似为 变化前的灰度加上梯度。
Ix为x方向梯度,Iy为y方向梯度。
自相关矩阵
自相关矩阵特征值与变化率的关系
M的特征向量决定方向,特征值λ的大小决定与特征值λ对应特征向量的模长。
在SSD中,特征向量的模长可以视为变化的快慢,也就是特征值越大,变化越快。
特征向量决定方向,特征值决定变化快慢。
特征值1表示水平方向变化率,特征值2表示竖直方向变化率。
在水平边缘上,特征值2远大于特征值1。在竖直边缘上,特征值1远大于特征值2。
在角点,任意方向的变化率都非常大,故所有的特征值都很大。
Harris角点检测器
Harris角点检测器中,因为计算特征值分解的计算量大,不直接计算特征值。
利用公式,将对特征值的运算,转换为对矩阵元素的运算
利用自相关矩阵
R=ac-b2-α(a+c)2
Harris角点检测器步骤
1.计算图像x方向和y方向的梯度Ix,Iy(梯度)
2.计算每个像素点的梯度的乘积。(梯度乘积)
3.计算每个像素点的梯度的乘积的累积(直接用每个像素点梯度乘积的累积求自相关矩阵M,这里使用高斯核)(累积梯度)
x方向梯度乘积累积,x方向和y方向梯度乘积的累积,y方向的梯度乘积累积。
4.定义每个像素点的矩阵M(自相关矩阵)
5.计算每个像素点的角点响应R
6.对响应R做阈值处理和非极大值抑
基于灰度的二阶导数
Harris角点检测器的问题
Harris具有平移不变性,旋转不变性,但是不具有尺度不变性
自动尺度选择
理想的特征尺度函数是突出剧烈的图像不连续性:图像与突出边缘核进行卷积。高斯核的拉普拉斯算子(LoG)是最优的。
因此在高斯金字塔/拉普拉斯金字塔上计算LoG。
二维高斯核拉普拉斯算子
一阶导
二阶导
高斯核的拉普拉斯算子LoG的导数进行卷积分析(为了简便,以一维为例)
使用高斯拉普拉斯LoG一阶导进行卷积时,边缘点就是响应值最大的点。
使用高斯拉普拉斯LoG二阶导进行卷积时,边缘点就是响应值过0的点。
LoG斑点检测
假设一组一维的像素出现斑点,也就是某段区域灰度突然变大。(这里为了简便)
从上述推论可知,使用高斯核的拉普拉斯算子(二阶导)进行卷积的时候,过0点就是其边缘点。
所以在检测斑点的时候,要检测各个边界,也就是过0点。
但是使用不同σ的LoG,得到的过0点位置不同。
当LoG的尺度与斑点的宽度匹配时,LoG的幅值在斑点的中心取得最大值。
因为σ可以调节的,所以LoG算子可以检测不同尺寸图片上的斑点。
二维上的过0点的响应最大值(例如一个圆)
LoG的过0点应该和圆对齐,从而推导出合适的σ参数。
所以有如下结论
边缘:灰度值跃迁,与二阶LoG卷积后的过0点。
斑点:两个阶跃之间的区域,也就是两个过0点之间的区域。
本征尺度:调整σ,过0点逐渐靠近,最终合并成一个最大值,得到的响应最大尺度。
目标:使得两个过0点逐渐接近,逐渐形成最大值,这个最大值就是斑点。
LoG可以通过调整σ,检测到不同尺寸图像的斑点。
斑点检测基本步骤
求二维LoG的梯度
再做归一化(归一化见下一节推导)
找到响应最大的尺度,也就是找到合适的σ
代入归一化的LoG即可求得。
归一化的高斯核拉普拉斯算子
用不同尺度的LoG和信号卷积,寻找幅值的最大值,选择最佳尺度。
但是随着尺度的增大,LoG的曲线由双波谷逐渐融合成单波谷。且最大幅度逐渐减小,响应尺度也不断减少,无法判断尺度是否合适,因此需要进行尺度归一化
归一化方式:对于一阶高斯核的导数的响应值乘以σ,保证σ不变。对于二阶高斯核的导数的响应值乘以σ2,从而对σ不变。
尺度归一化后的效果
尺度不变检测器DoG(Difference of Gaussian)
可以将LoG近似为DoG计算效率更高
检测尺度归一化的LoG在尺度空间的极值,近似于检测DoG在尺度空间的极值,且DoG效率更高。
DoG与LoG的关系
k-1是常量,不影响函数极值点
k的选择
k趋近于1时,近似程度越高,但是需要计算更多的DoG
Lowe的SIFT基本步骤
构造尺度空间——高斯金字塔:使用高斯函数和与原图像卷积,然后下采样
尺度空间极值检测:使用DoG检测。
关键点定位
关键点方向确定
关键点描述
构造高斯金字塔
对图像采用不同尺度σ的高斯函数进行平滑。
平滑操作会减少图像中的高频信息。这样也就没必要再用相同数量的像素表示,可以缩小尺寸。对图像进行下采样,逐渐形成金字塔。
平滑图像
相邻金字塔的尺度因子为2倍。
注:大尺度的高斯平滑可通过连续小尺度σ1,σ2高斯平滑,这样可以加速卷积运算。
L(x,y,σ) = g(σ) * I(x,y) = [ g(σ1) * g(σ2) ] * I(x,y) = g(σ1) * [ g(σ2)*I(x,y) ],其中σ2=σ12+σ22
下采样
水平和竖直分辨率变为原来的一半
初始
预先模糊输入图像作为第0组第0层图像,相当于丢弃了最高的空域的采样率。
SIFT中Lowe将初始图像的尺度设定为σ-1=0.5,先将图像的尺度扩大一倍,生成第-1组图像。
构造图像金字塔
尺度空间:八度(o)和八度中的第几层(s)组成尺度空间。
一个八度中图像的长宽都相等,也就是变量八度控制图像尺寸。
一个八度中不同层(s)的图像模糊程度不同,也就会层(s)控制模糊程度。
每个八度(Octave)内有S+3层(Interval)。
相邻八度尺度相差2倍,同一组相邻层尺度相差k倍。
第0个八度的尺度:
σ0,kσ0,...,ksσ0,ks+1σ0,ks+2σ0
第1个八度的尺度:
2 σ0,2 kσ0,...,2 ksσ0,2 ks+1σ0,2 ks+2σ0
第2个八度的尺度:
4 σ0,4 kσ0,...,4 ksσ0,4 ks+1σ0,4 ks+2σ0
....
第n个八度的尺度:
2n σ0,2n kσ0,...,2n ksσ0,2n ks+1σ0,2n ks+2σ0
上一个八度的导数第三层 和 下一个八度的第0层相同:
也就是
ksσ0=2 σ0,得到:
构造高斯差分金字塔
在高斯金字塔中,每两个相邻层进行相减,生成了高斯差分金字塔。
第一个八度中高斯差分图像的尺寸为:(系数2都是n/3次方)
第二个八度中高斯差分图像的尺寸为:
去除边缘效应
DoG算子会产生较强的边缘响应,需要剔除不稳定的边缘响应点。
类似于Harris角点检测器,使用DoG算子定义Hessian矩阵
为了能够剔除边缘点,det(H)和trace(H)的比值要小于一定阈值:
通常r取10。
极值点检测
每个八度的S+3个金字塔图像,得到S+2DoG图像,只能检测S个尺度的极值点。
Lowe建议S=3,也就是检测同尺度的8个相邻点,和上下相邻尺度对应的18个点,一共26个点进行比较。
标签:特征值,LoG,特征,检测,尺度,灰度,图像,高斯 From: https://www.cnblogs.com/RedNoseBo/p/17436498.html