局部特征(Local Feature)
文章首发:xmoon.info
对于图像处理时经常需要提取特征点分析图片结构,将照片进行拼接,实现全景拍摄,那么在照片特征点提取时所采用的具体算法是什么呢?
解决思路
- 提取特征点
- 匹配特征点
- 使用RANSAC方法将两张图片的对应的特征点转换的方式拟合出来,在对图片采用相同的转换方式进行转换,在进行拼接
特征点——Corner
好的特征点是什么样的?
- 可重复性:在一张图可以被观测到的,在其他同场景的图也可以被观测到
- 显著性:检测的特征点需要是在某一类图像中“独有的”,尽量剔除“普遍性”的点,目的是为了将不同类的图区分开
- 简洁和高效:尽可能的减少计算量,提高计算效率
- 局部性:匹配特征时要匹配特征点之间的相对关系,通过局部特征相对位置来判断是否为同一张图,来拟合转动镜头角度,图像位置
什么样的点满足条件
通过观察图片的特征,发现存在“角”的地方承载着更多的信息,角点是梯度在两个或以上方向上有变化的点。
Basic Idea
- 使用一个较小的窗口在图像上延各个方向滑动
- 不同的变化趋势显示了不同的特征
- 图像内部所在的窗口延各个方向都没有变化;边缘所在的窗口延边缘方向无变化;角点所在窗口会在各个方向上都有显著的变化
数学描述
- 和是平移量
- 求平移后的窗口与平移前的窗口的对应位置差的平方,再累加
- 乘上窗口权重,考虑每个点对窗口影响的不同程度,例如第二种的高斯函数权重,就是考虑中间的点的差值在整个窗口的影响度更大
-
二阶泰勒展开:为了能够直接观察到与之间的联系
取在的二阶展开作为近似解
计算化简泰勒展开式
其中分别表示点在方向,方向的偏导,是由一个二阶矩矩阵加权求和得到
矩阵
类比方程决定方程特性的是。则决定特性的是,分析矩阵就可以得到的特性
函数图像延竖直方向截取为一个椭圆,当梯度为零时,截面为圆,此时窗口位于图像内部;当延某一方向梯度为零时,界面为一个“正椭圆”,此时窗口位于边;当窗口位于角时,界面椭圆的形状反映了当前窗口下角的特性
-
正交矩阵:使所截取的椭圆旋转角度,变为一个“正椭圆”
- 当任意一个趋于0,用表示,任意一个趋于0,都表示这个点不是角点
- 椭圆的半轴长度反应的是梯度变化的快慢,越长则梯度变化越快(将展开就可以得到椭圆的半轴表示为)
-
可视化
-
特征值简化——角点响应函数R
将特征转化给,最后判断只需判断就可以确定是否为角点
Harris检测器
- 计算每个像素处的高斯导数
- 计算每个像素周围的高斯窗口中的二阶矩矩阵M
- 计算角点响应函数R
- 设置门限R
- 寻找响应函数的局部最大值(非最大抑制)
Harris的特性
- 当光线强度,明暗改变时,只是改变了部分角点的值,还有大部分的点可以用于检测,可以进行检测,
- 当改变位置,角度时,没有改变相对位置,可以检测
-
当改变窗口大小时,大窗口下是角点,而小窗口下是线或者边缘,无法检测
学习资源:北京邮电大学计算机视觉——鲁鹏