8.5. ORB(定向快速旋转简报)

8.5.1. 目标

在本章中,
-我们将看到球体的基本知识

8.5.2. 理论

作为一个OpenCV爱好者,ORB最重要的是它来自“OpenCV实验室”。这个算法是由伊桑·鲁布利、文森特·拉伯德、库尔特·科诺里奇和加里·布拉德斯基在他们的论文中提出的 球:一个有效的替代筛网或冲浪的方法 2011年。顾名思义,它在计算成本、匹配性能以及主要专利等方面是SIFT和SURF的一个很好的替代品。是的,SIFT和SURF都是专利,你应该支付使用费。但球不是!!!

ORB基本上是一个快速关键点检测器和简短描述符的融合,通过许多修改来提高性能。首先用快速法寻找关键点,然后用Harris角点法寻找其中的N个顶点。它还使用棱锥体生成多尺度特征。但有一个问题是,FAST不能计算方向。那么旋转不变性呢?作者提出了以下修改。

它计算位于中心角点的面片的强度加权质心。矢量从这个角点到质心的方向给出了方向。为了提高旋转不变性,用半径为圆形的x和y计算力矩 \(r\) 在哪里 \(r\) 是补丁的大小。

现在对于描述符,ORB使用简短的描述符。不过,我们已经看到,这场比赛在轮换中表现不佳。所以ORB所做的就是根据关键点的方向来“引导”BRIEF。对于任何功能集 \(n\) 位置上的二进制测试 \((x_i, y_i)\) ,定义 \(2 \times n\) 矩阵, \(S\) 包含这些像素的坐标。然后用面片的方向, \(\theta\) ,找到其旋转矩阵并旋转 \(S\) 获取转向(旋转)版本 \(S_\theta\) .

将角度离散为 \(2 \pi /30\) (12度),并构造一个预计算简要模式的查找表。只要关键点方向 \(\theta\) 在各个视图之间是一致的,正确的点集 \(S_\theta\) 将用于计算其描述符。

BRIEF有一个重要的特性,即每一位特征都有一个大的方差和接近0.5的平均值。但一旦它沿着关键点方向定向,它就失去了这个属性,变得更加分散。高方差使特征更具区分性,因为它对输入的响应是不同的。另一个可取的特性是使测试不相关,从那时起,每个测试都将有助于结果。为了解决所有这些问题,ORB在所有可能的二进制测试中运行贪婪搜索,以找到方差和均值都接近0.5且不相关的测试。结果被称为 瑞夫 .

在说明符匹配方面,采用了多探针LSH算法,改进了传统的LSH算法。论文说ORB比SURF快得多,SIFT和ORB描述符比SURF工作得更好。在低功耗全景拼接等设备中,ORB是一个很好的选择。

8.5.3. OpenCV中的球体

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

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

>>> import numpy as np
>>> import cv2 as cv
>>> from matplotlib import pyplot as plt
>>> img = cv.imread('/cvdata/simple.jpg',0)
>>> # Initiate ORB detector
>>> orb = cv.ORB_create()
>>> # find the keypoints with ORB
>>> kp = orb.detect(img,None)
>>> # compute the descriptors with ORB
>>> kp, des = orb.compute(img, kp)
>>> # draw only keypoints location,not size and orientation
>>> img2 = cv.drawKeypoints(img, kp, None, color=(0,255,0), flags=0)
>>> plt.imshow(img2), plt.show()
../_images/sec08-orb_1_0.png
(<matplotlib.image.AxesImage at 0x7f431b8c7e80>, None)

结果如下:

球体特征匹配,我们将在另一章中做。

8.5.4. 额外资源

  1. 伊桑·鲁布利,文森特·拉伯德,库尔特·科诺里奇,加里·R·布拉德斯基:球体:一种有效的筛网或冲浪的替代品。ICCV2011:2564-2571。

8.5.5. 练习