opencv ORB各参数的含义

本文详细介绍了ORB(oriented FAST and rotated BRIEF)特征检测器的各项参数及其意义,包括最大特征点数量、尺度参数等,帮助读者更好地理解和使用ORB。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ORB中有很多参数可以设置,在OpenCV中它可以通过ORB来创建一个ORB检测器。

ORB::ORB(int nfeatures=500, float scaleFactor=1.2f, int nlevels=8, int edgeThreshold=31, int firstLevel=0, int WTA_K=2, int scoreType=ORB::HARRIS_SCORE, int patchSize=31)

下面介绍一下各个参数的含义:

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

scaleFactor - 金字塔图像之间的尺度参数,类似于SIFT中的 k 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描述子的特征点邻域大小

### Python OpenCV ORB 默认参数设置 在Python中使用OpenCV库时,ORB(Oriented FAST and Rotated BRIEF)是一种高效且免费的特征检测与描述算法。通过`cv2.ORB_create()`函数可创建ORB对象,默认情况下此函数会采用一组预定义的参数。 默认参数配置如下所示[^1]: - `nfeatures`: 设置要保留的最大关键点数量,默认值为500。 - `scaleFactor`: 图像金字塔缩放因子,默认值约为1.2。 - `nlevels`: 图像金字塔层数,默认值为8。 - `edgeThreshold`: 边缘阈值,在离图像边界一定范围内忽略关键点,默认值为31像素。 - `firstLevel`: 使用的第一层图像金字塔索引,默认值为0。 - `WTA_K`: 计算 Brief 描述子时使用的 WTA(Winner-Take-All)策略中的 k 值,默认值为2。 - `scoreType`: 关键点得分类型,可以选择 Harris 或 Fast-Hessian,默认为Harris角点响应分数(`cv2.ORB_HARRIS_SCORE`)。 - `patchSize`: 被考虑用于提取描述符的关键点半径大小,默认值为31像素。 - `fastThreshold`: FAST 特征探测器的阈值,默认值为20。 下面是一个简单的代码示例展示如何实例化带有默认参数ORB对象并获取其属性: ```python import cv2 # 创建ORB对象,不指定任何自定义参数即使用默认参数 orb = cv2.ORB_create() print(f"Default nfeatures: {orb.getNFeatures()}") print(f"Default scaleFactor: {orb.getScaleFactor():.2f}") print(f"Default nlevels: {orb.getNLevels()}") print(f"Default edgeThreshold: {orb.getEdgeThreshold()}") print(f"Default firstLevel: {orb.getFirstLevel()}") print(f"Default WTA_K: {orb.getWTA_K()}") print(f"Default scoreType: {'HARRIS' if orb.getScoreType()==cv2.ORB_HARRIS_SCORE else 'FAST'}") print(f"Default patchSize: {orb.getPatchSize()}") print(f"Default fastThreshold: {orb.getFastThreshold()}") ``` 上述脚本将打印出ORB对象所持有的各个内部参数的实际取值情况,这些就是当调用者未提供特定初始化选项时系统自动选用的标准设定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值