【发布时间】:2016-07-20 03:16:09
【问题描述】:
我正在实现一个涉及Bag of Features 模型的content-based image retrieval 应用程序。我使用cv::SIFT 作为特征检测器。
无论如何,应用程序的性能不是很好,我正在尝试从第一步算法改进它们,即检测特征。
阅读cv::SIFT::create() documentation我看到了3个引起我注意的参数:
- nfeatures – 要保留的最佳特征的数量。特征按其分数排序(在 SIFT 算法中测量为本地 对比)
- contrastThreshold – 用于过滤半均匀(低对比度)区域中的弱特征的对比度阈值。越大的 阈值,检测器产生的特征越少。
- edgeThreshold – 用于过滤边缘特征的阈值。请注意,其含义与 contrastThreshold,即edgeThreshold越大,越少 特征被过滤掉(更多特征被保留)。
这意味着增加第一个和第三个参数,同时减少第二个参数,应该会提高算法精度(具有较低的时间性能)?
我特别想知道第一个参数,例如,如果我们设置nfeatures=2000,它将准确检测2000 功能,无论它们是否“有趣”。这意味着它会检测到“无趣”(如此糟糕)的关键点吗?
【问题讨论】:
标签: c++ opencv image-processing computer-vision sift