学习笔记:在Opencv下基于ORB的图像特征提取

1、什么是ORB特征提取

看这篇文章 http://www.cnblogs.com/ronny/p/4083537.html”

2、Opencv ORB的参数含义

 

#nfeatures - 最多提取的特征点的数量;

#scaleFactor - 金字塔图像之间的尺度参数,类似于SIFT中的k;

#nlevels – 高斯金字塔的层数;

#edgeThreshold – 边缘阈值,这个值主要是根据后面的patchSize来定的,靠近边缘edgeThreshold以内的像素是不检测特征点的。

#firstLevel - 看过SIFT都知道,我们可以指定第一层的索引值,这里默认为0。

#WET_K - 用于产生BIREF描述子的 点对的个数,一般为2个,也可以设置为3个或4个,那么这时候描述子之间的距离计算就不能用汉明距离了,而是应该用一个变种。OpenCV中,如果设置WET_K = 2,则选用点对就只有2个点,匹配的时候距离参数选择NORM_HAMMING,如果WET_K设置为3或4,则BIREF描述子会选择3个或4个点,那么后面匹配的时候应该选择的距离参数为NORM_HAMMING2。

#scoreType - 用于对特征点进行排序的算法,你可以选择HARRIS_SCORE,也可以选择FAST_SCORE,但是它也只是比前者快一点点而已。

#patchSize – 用于计算BIREF描述子的特征点邻域大小。

 

3、代码示例

 

import cv2
import numpy as np
import matplotlib.pyplot as plt

img1 = cv2.imread('test.jpg',0)
img2 = cv2.imread('test3.jpg',0)

orb = cv2.ORB_create()

kp1,des1 = orb.detectAndCompute(img1,None)
kp2,des2 = orb.detectAndCompute(img2,None)

bf = cv2.BFMatcher(cv2.NORM_HAMMING,crossCheck = True)

matches = bf.match(des1,des2)

matches = sorted(matches,key=lambda x:x.distance)

img3= cv2.drawMatches(img1,kp1,img2,kp2,matches[:50],None,flags=2)

plt.imshow(img3)
plt.show()

  

4、应用的局限性

http://blog.csdn.net/wangyaninglm/article/details/44805709/

转载于:https://www.cnblogs.com/TransTown/p/7392656.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值