2012-05-20 71 views
0

我正在做关键点检测和匹配opencv来缝合两个图像。关键点检测和匹配opencv中的大图像

当图像很小时,效果很好。但是当处理更大的图像时,检测到的关键点数量会增加,因此需要花费大量时间来匹配它们。但为了拼接图像,似乎我们不需要这么多关键点。为了提高效率,是否有办法只检测有限的关键点?

在代码中,我使用SiftFeatureDetector和SiftDiscriptorExtractor来检测关键点并提取描述符。

问候。

回答

1

我的建议:

重新大小的图像,使他们变得更小,然后执行特征匹配。 一旦你有一个快速解决方案(Homography)应用它,比下一个匹配将快得多。

您确实有办法轻松控制功能的数量。您可以提高阈值,因此将选择较少的功能。 你甚至可以在while()循环中包装阈值。它提高了阈值,直到特征量小于N(但比一些M大)。

看完整的代码示例我张贴在这里:

Calculate offset/skew/rotation of similar images in C++

+0

1,重新大小是一个很好的方式。在detector.detect(img,feature,mask)中使用mask参数将产生相同的结果,对吧? 2,控制探测器获得的特征量。探测似乎并不容易,因为阈值不能在函数中设置,对吗? – beaver

+0

使用面罩是一种好方法,但我不确定你知道面罩应该是什么。你怎么能提前知道哪里可以找到好的功能?关于功能的数量,在我发布的例子中有一行:Ptr detector = new SurfFeatureDetector(2000); 2000是你需要改变的数字,通过将这条线与检测器 - >检测并将检测到的特征量相关联 – DanielHsH