数字图像,图像=矩阵,[m*n]从[0,255]的灰度值
角点检测:物体边缘的拐点
->应用:图像匹配与检索、图像物体形变恢复(摄像机标定)、三维重建
Harris角点检测(早期,原理简单,视频跟踪,快速检测)
- 1988年-Harris+Stepehns
- 图像中一个局部窗口在不同方向少量平移后窗口内图像灰度值的平均变化
- 动机:特征点具有局部差异性
- 以每个点为中心取一个窗口,例如,5×5/7×7的像素,描述特征点周围环境
- 此点具有差异性->窗口往任意方向移动,则周围环境变化较大->具有局部差异性
分类:
- 光滑 - flat
- 边缘 - edge
- 角点 - corner
一个方向上的灰度变化
越大越可能为角点
- 竖直和水平方向的偏移,
- w(x,y)窗口中心,高斯滤波/均值滤波
- x+u,y+v中心加偏移,
- x,y中心灰度值
改进——多个反向上的像素变化:
- 泰勒展开公式
所以:
- 加和符号:表示窗口内每个像素
- w:表示权重,权值1或者以点为中心的高斯权重(离点越近权重越大)
- I:表示像素,RGB/灰度
- u,v:窗口移动的方向
- H:harris矩阵,由两个方向上的梯度构建而成
- 图像梯度:
- Harris矩阵:
- 图像水平梯度、图像垂直梯度
Harris矩阵H 的特征值分析
- 两个特征值反映相互垂直方向上的变化情况,分别代表变化最快和最慢的方向,特征值大变化快,特征值小变化慢
-
- λ1 ≈ λ2 ≈ 0, 两个方向上变化都很小,兴趣点位于光滑区域
- λ1 > 0 , λ2 ≈ 0 ,一个方向变化快,一个方向变化慢,兴趣点位于边缘区域
- λ1 , λ2 > 0 , 两个方向变化都很快,兴趣点位于角点区域(容易判断)
Harris角点准则代替矩阵分解:
- 反映特征值情况,trace为迹
- k的值越小,检测子越敏感
- 只有当λ1和λ2同时取得最大值时,C才能取得较大值
- 避免了特征值分解,提高检测计算效率
- 非极大值抑制(Non-maximal Suppression) 选取局部响应最大值,避免重复的检测
算法流程:
- 0)滤波、平滑,避免出现阶跃函数
- 1)计算图像水平和垂直方向的梯度
- 2)计算每个像素位置的Harris矩阵
- 3)计算每个像素位置的Harris角点响应值
- 3+)非极大值抑制
- 4)找到Harris角点响应值大于给定阈值且局部最大的位置作为特征点
检测结果:
求导:使用Sobel梯度算子
和sobel算子做卷积计算,3*3与 3*3卷积改写中心值
Harris确定角点
判断:
Python代码
import