python-opencv Tutorials 一码人翻译(37)---- 特征检测和描述---ORB (Oriented FAST and Rotated BRIEF)

目标

在这一章,

我们将看到ORB的基础知识

理论

作为一个OpenCV爱好者,关于这个球体最重要的一点是它来自于“OpenCV实验室”。这一算法是由伊桑鲁布利、文森特拉博、库尔特科诺利奇和加里r布拉德斯基在他们的纸球中提出的:在2011年,这是一种有效的筛选或冲浪的替代品。正如标题所言,在计算成本、匹配性能和主要专利方面,这是一个不错的选择。是的,筛选和冲浪都是专利的,你应该为它的使用付钱。但是球体不是!!!

ORB基本上是快速keypoint检测器和简短描述符的融合,并进行了许多修改以提高性能。首先,它快速地找到关键点,然后应用哈里斯角度量来发现其中的N个点。它还使用金字塔来产生多尺度特征。但有一个问题是,FAST不能计算方向。那么旋转不变性呢?作者提出了以下修改。

 

简介有一个重要的属性,每个位特征都有一个大的方差,一个平均值接近0。5。但是一旦它沿着关键点方向,它就失去了这个性质,变得更加分散。高方差使特征更具鉴别性,因为它对输入有不同的响应。另一个可取的特性是让测试不相关,因为每个测试都将对结果做出贡献。为了解决所有这些问题,ORB在所有可能的二进制测试中进行了贪婪的搜索,以找到具有高方差和接近0。5的值,并且不相关。结果被称为r简报。

对于描述符匹配,在传统的LSH上进行改进的多探针LSH是被使用的。这篇文章说,ORB比冲浪和筛选快得多,而且ORB描述符比冲浪更好。在低功率设备的全景拼接等方面,ORB是一个不错的选择。

ORB的OpenCV

像往常一样,我们必须创建一个ORB对象,其中包含函数、cv.ORB()或者使用特性2d通用接口。它有许多可选参数。最有用的是nFeatures表示最大数量的功能被保留(默认500),scoreType表示是否哈里斯分数或快速分数等级的功能(默认情况下,哈里斯分数)等。另一个参数,WTA_K决定面向生产的每个元素的点数量的简短的描述符。默认情况下是2,即一次选择2个点。在这种情况下,为了匹配,通常使用法线距离。如果wtak是3或4,它需要3或4个点来产生简短的描述符,那么匹配距离是由normhamming2定义的。

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

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt

img = cv.imread('sp.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()

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值