1

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

目前我这样使用它:

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

因为我正在查看小图像和快速性能,所以我将功能数量减少到大约 25 个。这似乎仍然适用于我的应用程序。问题从第二个参数开始。它的默认值为 1.2。不久前我将它设置为 1,但发现它的速度要快得多,而且值更高。问题是,我开始遇到这个问题:

OpenCV 错误: cv_batchDistance 中的断言失败 ((type == CV8U && dtype == CV_32S) ||dtype == CV_32F),文件............stat.cpp,第 2480 行

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

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

我对其余参数不感兴趣。

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

如果有人可以帮助我处理这些参数,我将不胜感激。

4

1 回答 1

0

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

于 2014-03-26T14:26:58.983 回答