我正在尝试使用 OpenCV(用于 C++)的 BRISK 实现来检查照片中是否包含图像(或图像的一部分)。例如,我拍了一张照片,然后尝试将其与数据库中的一组图像匹配,我想选择最佳对应图像(如果所有图像都不够好,则显示错误消息)。
所以,我目前只是在测试 OpenCV。我只是采用了框架中包含的示例 (matching_to_many_images),并将检测器和描述符从 SURF 更改为 BRISK。
但是,我得到了奇怪的结果。这些是匹配的结果(BruteForce Hamming):
第一个场景完全不同,但是匹配度很高! 第二个场景很相似,但有些匹配是错误的。
我认为这是一个参数问题——因为在 BRISK 的演示视频中,结果很重要。
最佳答案
您看过 BRISK 的 OpenCV 文档吗?我不确定你现在使用的是什么参数,但你可以指定阈值和 Octave 音阶,以及模式。文档在 http://docs.opencv.org/modules/features2d/doc/feature_detection_and_description.html#brisk
您也可以尝试不同的特征匹配算法,尽管在 BRISK 论文中他们似乎也使用了汉明距离
最后,出现错误的特征匹配并不意外;尝试不同的场景以及不同的特征参数,看看你的结果如何
关于c++ - 在 OpenCV 中为 BRISK 设置参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15489642/