3

我有两个重叠区域约为 25% 的图像 - 但拼接失败。我该如何处理这个问题?

我尝试使用 orb 和 surf,以及更改阈值。还有其他我应该考虑的选择吗?

Mat pano;
Stitcher stitcher = Stitcher::createDefault(try_use_gpu=false);
//Stitcher::Status status = stitcher.stitch(imgs, pano);

//stitcher.setWarper(new PlaneWarper());
stitcher.setWarper(new SphericalWarper());
stitcher.setFeaturesFinder(new detail::SurfFeaturesFinder(1000,3,4,3,4));
//stitcher.setFeaturesFinder(new detail::OrbFeaturesFinder());
stitcher.setRegistrationResol(0.1);
stitcher.setSeamEstimationResol(0.1);
stitcher.setCompositingResol(0.6);
stitcher.setPanoConfidenceThresh(1);
stitcher.setWaveCorrection(true);
stitcher.setWaveCorrectKind(detail::WAVE_CORRECT_HORIZ);
stitcher.setFeaturesMatcher(new detail::BestOf2NearestMatcher(false,0.3));
stitcher.setBundleAdjuster(new detail::BundleAdjusterRay());
tstart = clock();      
Stitcher::Status status = stitcher.stitch(imgs, pano);
4

1 回答 1

1

25% 的重叠绝对是不够的。40% 会给出更好的结果,但仍然不够好。如果您想要良好的重叠,请尝试使用 60% 到 80% 之间的值。重要的是,您要拼接在一起的序列中的下一个图像与前一个图像的中心区域重叠,因为存在/不应该有任何失真。例如,80% 的重叠不仅会发生这种情况,而且两个图像的中心区域也非常接近,因此只要图像的纹理质量允许,您就可以忽略失真并找到大量匹​​配项。我的建议是首先查看库本身提供的示例。您可以在https://github.com/Itseez/opencv/tree/master/samples/cpp/stitcher.cpphttps://github.com/Itseez/opencv/blob/master/samples/cpp/stitching_detailed.cpp。然后深入研究源本身(https://github.com/Itseez/opencv/blob/master/modules/stitching/src/stitcher.cpp)并在参考手册中查找提供的文档也很好OpenCV(在线或下载为 PDF)。

于 2014-04-19T09:04:28.470 回答