↑↑↑关注后"星标"Datawhale
每日干货 & 每月组队学习,不错过
Datawhale干货
作者:王程伟,Datawhale成员,南昌航空大学
特征点又叫兴趣点或者角点。常被用于目标匹配,目标跟踪,三维重建等应用中。点特征主要指图像中的明显点,如突出的角点、边缘端点、极值点等等。特征点具有以下三种特性:旋转不变性;光照不变性;视角不变性。用于点特征提取的算子称为兴趣点提取(检测)算子。常用的有Harris角点检测;FAST特征检测;SIFT特征检测;SURF特征检测。
预备数学
实对称矩阵
如果有n阶矩阵A,其矩阵的元素都为实数,且矩阵A的转置等于其本身,则称A为实对称矩阵。
性质:
实对称矩阵A的不同特征值对应的特征向量是正交的;
n阶实对称矩阵A必可相似对角化,且相似对角阵上的元素即为矩阵本身特征值。
对角化:
优点:满秩的对角方阵,可以直接看出特征值,特征向量等重要特征。
卷积算子—Sobel算子
主要用于边缘检测,分别对水平和垂直方向上的边缘敏感。对图像任意一点使用会产生对应的梯度矢量或者其法矢量。对噪声具有平滑抑制作用,但是得到的边缘较粗,且可能出现伪边缘。
该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。如果以A代表原始图像, 及 分别代表经横向及纵向边缘检测的图像,其公式如下:
梯度计算公式
梯度方向计算公式
如果 等于零,代表图像该处拥有纵向边缘,左边比右边要暗。
基础知识
1、角点
使用一个滑动窗口在下面三幅图中滑动,可以得出以下结论:
左图表示一个平坦区域,在各方向移动,窗口内像素值均没有太大变化;
中图表示一个边缘特征(Edges),如果沿着水平方向移动(梯度方向),像素值会发生跳变;如果沿着边缘移动(平行于边缘) ,像素值不会发生变化;
右图表示一个角(Corners),不管你把它朝哪个方向移动,像素值都会发生很大变化。
所以,右图是一个角点。
2、角点类型
下图展示了不同角点的类型,可以发现:如果使用一个滑动窗口以角点为中心在图像上滑动,存在朝多个方向上的移动会引起该区域的像素值发生很大变化的现象。
3、图像梯度
“像素值发生很大变化”这一现象可以用图像梯度进行描述。在图像局部内,图像梯度越大表示该局部内像素值变化越大(灰度的变化率越大)。而图像的梯度在数学上可用微分或者导数来表示。对于数字图像来说,相当于是二维离散函数求梯度,并使用差分来近似导数:
在实际操作中,对图像求梯度通常是考虑图像的每个像素的某个邻域内的灰度变化,因此通常对原始图像中像素某个邻域设置梯度算子,然后采用小区域模板进行卷积来计算,常用的有Prewitt算子、Sobel算子、Robinson算子、Laplace算子等。
Harris角点检测算法
1、算法思想
算法的核心是利用局部窗口在图像上进行移动,判断灰度是否发生较大的变化。如果窗口内的灰度值(在梯度图上)都有较大的变化,那么这个窗口所在区域就存在角点。
这样就可以将 Harris 角点检测算法分为以下三步:
当窗口(局部区域)同时向 (水平)和 (垂直) 两个方向移动时,计算窗口内部的像素值变化量 ;
对于每个窗口,都计算其对应的一个角点响应函数 ;
然后对该函数进行阈值处理,如果 ,表示该窗口对应一个角点特征。
2、算法步骤
第一步 — 建立数学模型
第一步是通过建立数学模型,确定哪些窗口会引起较大的灰度值变化。让一个窗口的中心位于灰度图像的一个位置