OpenCV:Orb参数

时间:2014-01-26 11:18:11

标签: c++ opencv orb

我想知道orb特征检测器的参数。我使用它作为关键点提取器和描述符。作为匹配器,我使用BFMatcher。

目前我这样使用它:

ORB orb(25, 1.0f, 2, 10, 0, 2, 0, 10);

因为我正在查看小图像和快速性能,所以我将功能数量减少到大约25个。这对我的应用程序似乎仍然可以正常工作。问题从第二个参数开始。其默认值为1.2。我刚才将它设置为1,但发现它的速度更快,值更高。问题是,我开始遇到这个问题:

  

OpenCV错误:断言失败((= = CV8U&& dtype == CV_32S)|| dtype == CV_32F)cv_batchDistance,file .......... stat.cpp,line 2480

接下来是金字塔等级的参数。默认值是8.我将它设置为2,这给了我另一个很好的性能提升。但是如果我将它设置为1,它将抛出与上面相同的错误。

由于我正在使用小图片,我试图将其设置为较低的值。但它似乎没有改变任何东西。这同样适用于最后一个参数(patchSize)。它声明这些参数应大致匹配。

我对其余参数不感兴趣。

正如我在其他问题中所解释的那样,我正在尝试跟踪视频中的对象。为此我将为每个边界框提取其功能,并尝试将其与下一个功能的边界框进行匹配。通过这样做,我试图建立帧之间的关系。到目前为止它运作良好。但我需要更快。如果有超过一些边界框需要太长时间,因为我想实时拥有@ 30FPS。

如果有人能帮我解决这些问题,我会很感激。

1 个答案:

答案 0 :(得分:0)

根据文档,参数4和8的值表示关键点应该与边界有多远。由于您使用的是小图片,因此10个像素可能是一个不错的选择,但如果您想要更多居中的关键点则需要更大的值。第二个参数必须大于1,我不知道您选择了什么值,但您可以尝试2.您对参数编号7不感兴趣,但您可以将其设置为1而不是0,因为1对应于FAST_SCORE,其计算速度比HARRIS_SCORE快。如果您添加代码,有人可以帮助您解决错误。