ORB特征点检测算法
角点是图像中灰度变化在两个方向上都比较剧烈的点。与边缘(只有一个方向变化剧烈)或平坦区域(灰度变化很小)不同,角点具有方向性和稳定性。
tips:像素梯度计算
ORB算法流程简述
1.关键点检测(使用FAST)
使用 FAST(Features from Accelerated Segment Test)算法快速检测图像中的角点作为关键点。
2.关键点筛选(Harris评分)
FAST检测的角点很多,ORB使用 Harris 角点响应函数来评分,然后选出前 N 个响应值最大的点作为最终的关键点。
3.方向赋值(构造旋转不变性)
对每个关键点周围的像素区域计算灰度质心方向,并将该方向赋予关键点,用于后续描述符的旋转补偿。
4.特征描述子(使用BRIEF)
使用 BRIEF(Binary Robust Independent Elementary Features)描述子对关键点进行描述。ORB对BRIEF进行改进,使其具有方向不变性,即对BRIEF描述子的采样点进行旋转处理。
5.特征匹配
使用 Hamming 距离进行二进制描述子之间的匹配。通常配合暴力匹配(Brute-Force)或 FLANN 进行快速匹配。
Fast角点检测算法
1.循环遍历图像中的每个像素点
将图像中的每个像素点作为潜在的角点候选点 p,对其周围像素进行检测。
2.初步筛选
取像素点 p 周围的第 1、5、9、13 个点(这四个点在像素环上形成一个正方形的四个顶点)与像素点 p 比较:
如果其中至少有三个点都比 p 的强度大一定阈值 t,或者都比 p 的强度小一定阈值 t,则进入下一步。
否则,该像素点 p 不是角点候选点。
3.后续验证
对初步筛选出的角点候选点 p 进行更严格的验证,检查像素环(半径为3的圆环上取16个像素)上连续有 n 个像素点的强度是否都比 p 的强度大 t 或者都比 p 的强度小 t:
如果满足条件,则 p 是一个角点候选点。
否则,p 不是角点候选点。
为了进一步提高关键点的质量和稳定性,使检测出的关键点更具有代表性和鲁棒性,从而提升后续特征匹配和图像处理的效果,会在使用 FAST 算法检测出角点候选点后,结合 Harris 算子的思路来进一步优化和筛选关键点
Haris角点检测算法
矩阵M就是图像的结构张量,描述了图像局部的梯度信息
特征点方向确定
为了实现旋转不变性,ORB为每个关键点计算一个主方向,使得特征描述子可以随着图像的旋转同步旋转。
ORB使用**灰度质心法(Intensity Centroid)**来估计关键点的方向。
具体步骤:
取关键点周围一个固定大小的图像块(例如31×31);
计算图像块的质心位置(C_X,C_Y)
将关键点位置作为原点,计算质心相对该点的方向向量;
最终方向角:
θ = a r c t a n 2 ( C y − y 0 , C x − x 0 ) θ=arctan2(C_y-y_0, C_x-x_0) θ=arctan2(Cy−y0,Cx−x0)
其中(x_0,y_0)是关键点坐标。
这样,ORB就为每个关键点赋予了一个方向角 θ,以用于旋转 BRIEF 描述子的采样模式。
特征点描述
特征描述子(BRIEF with rotation)
原始BRIEF描述子:
随机从关键点周围采样像素点对,比较它们的灰度大小。
若 (I(P_1)-I(P_2) ),则记为1;反之为0。
每对像素比较结果构成一个比特位,最终形成长度为128或256位的二进制向量。
ORB的改进:
旋转补偿:将原始BRIEF的采样模板旋转 θ 角度,使得描述子具有旋转不变性;
学习优选的点对组合:ORB用学习方式选出最能区分特征的点对组合,以提升识别能力和抗噪性。
特征点匹配
使用**汉明距离(Hamming Distance)**衡量两个二进制描述子之间的相似度。
汉明距离 = 两个描述子中不相同的比特数。
匹配方法常见的有:
Brute-Force Matcher:暴力搜索所有描述子对,找出最小距离;
KNN匹配 + 比率测试(Lowe’s ratio test):找两个最邻近匹配,如果最近的距离远小于次近的距离,说明匹配可信;
FLANN(近似最近邻搜索):加速匹配,适合大规模匹配。