ORB(定向FAST和旋转的BRIEF) OpenCV-Python v4.7.0

目标

在这一章中

  • 我们将看到ORB的基础知识

理论

作为一个OpenCV的爱好者,关于ORB最重要的是它来自 “OpenCV实验室”。这个算法是由Ethan Rublee, Vincent Rabaud, Kurt Konolige和Gary R. Bradski在2011年的论文 《ORB: An efficient alternative to SIFT or SURF》 中提出的。正如标题所说,它是SIFT和SURF在计算成本、匹配性能以及主要是专利方面的一个很好的替代品。是的,SIFT和SURF是有专利的,你应该为其使用付费。但ORB不是!!!ORB基本上是融合了SIFT和SURF的优点!

ORB基本上是融合了FAST关键点检测器和BRIEF描述器,并做了许多修改以提高性能。首先,它使用FAST来寻找关键点,然后应用Harris corner measure来寻找其中的前N个点。它还使用金字塔来产生多尺度特征。但有一个问题是,FAST并不计算方向。那么,旋转不变性如何呢?作者想出了以下修改。

它计算强度加权的中心点,并将角放在中心位置。从这个角点到中心点的矢量方向给出了方向。为了提高旋转不变性,计算了x和y的矩,这些矩应该在半径为r的圆形区域内,其中r是补丁的大小。

现在对于描述符,ORB使用BRIEF描述符。但是我们已经看到,BRIEF在旋转方面的表现很差。所以ORB所做的是根据关键点的方向来 "引导 "BRIEF。对于任何由位置(xi,yi)的n个二进制测试组成的特征集,定义一个2×n矩阵,S包含这些像素的坐标。然后利用补丁的方向,θ,找到它的旋转矩阵,旋转S,得到转向(旋转)版本Sθ。

ORB将角度离散为2π/30(12度)的增量,并构建一个预先计算的BRIEF模式的查询表。只要关键点的方向θ在不同的视图中是一致的,正确的点集Sθ将被用来计算其描述符。

BRIEF有一个重要的特性,即每个比特特征的方差很大,平均值接近0.5。但是一旦它沿着关键点的方向被定向,它就失去了这个特性,而变得更加分散。高方差使一个特征更具有鉴别力,因为它对输入的反应是不同的。另一个理想的属性是让测试不相关,因为这样每个测试都会对结果有所贡献。为了解决所有这些问题,ORB在所有可能的二元测试中进行贪婪的搜索,以找到那些既具有高方差和平均值接近0.5,又不相关的测试。其结果被称为rBRIEF

对于描述符的匹配,使用了多探针LSH,它改进了传统的LSH。论文说,ORB比SURF和SIFT快得多,ORB描述符比SURF效果更好。ORB在低功耗设备中是一个很好的选择,可用于全景图的拼接等。

OpenCV中的ORB

像往常一样,我们必须用函数cv.ORB()或使用feature2d通用接口来创建一个ORB对象。它有许多可选的参数。最有用的是nFeatures,它表示要保留的特征的最大数量(默认为500),scoreType表示是用Harris score还是FAST score对特征进行排序(默认为Harris score)等。另一个参数,WTA_K,决定产生导向BRIEF描述符的每个元素的点数。默认情况下,它是两个,即一次选择两个点。在这种情况下,使用NORM_HAMMING距离进行匹配。如果WTA_K是3或4,需要3或4个点来产生BRIEF描述符,那么匹配距离由NORM_HAMMING2定义。

下面是一个简单的代码,显示了ORB的使用情况

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('simple.jpg',0)
# 启动ORB检测器
orb = cv.ORB_create()
#  用ORB找到关键点
kp = orb.detect(img,None)
# 用ORB计算描述符
kp, des = orb.compute(img, kp)
# 只画关键点的位置,而不是尺寸和方向
img2 = cv.drawKeypoints(img, kp, None, color=(0,255,0), flags=0)
plt.imshow(img2), plt.show()

请看下面的结果:

在这里插入图片描述
ORB的特征匹配,我们将在另一章进行。

其他资源

  1. Ethan Rublee, Vincent Rabaud, Kurt Konolige, Gary R. Bradski: ORB:SIFT或SURF的有效替代品。ICCV 2011: 2564-2571(Ethan Rublee, Vincent Rabaud, Kurt Konolige, Gary R. Bradski: ORB: An efficient alternative to SIFT or SURF. ICCV 2011: 2564-2571)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值