OpenCv 3d拼接全景图

OpenCv 3d Stitching Panorama

我有 7 张来自 gopro 的图像(装备中有 5 个相机,一个用于顶部,一个用于底部,它们都是 gopro 相机)。我想将所有这些图像拼接在一起以创建 3d 全景图。我已经能够使用 opencv stitching_detailed.cpp 在 Rig 中拼接 5 张图像。 Link 到文件:

https://raw.githubusercontent.com/opencv/opencv/master/samples/cpp/stitching_detailed.cpp

但我不确定如何缝合顶部和底部(对我来说现在底部不是那么重要但我必须对顶部做些什么)。知道如何做到这一点吗?请让我知道我是否可以使用相同的 stitching_detailed.cpp 来缝制顶部。

以下 Link 包含我正在使用的图像。它还包含我在 rig 中拼接图像得到的结果。

https://drive.google.com/folderview?id=0B_Bl8s2ePunQcnBaM3A4WDlDcXM&usp=sharing

所以首先您需要了解 stitching_detailed.cpp 的工作原理。 1. 使用 SURF/ORB/SIFT 左右在每个图像中检测特征关键点。然后对于每个图像对,找到最佳特征匹配并计算单应性矩阵并获得每对图像的内点数

(*finder)(img, features[i]); 


 BestOf2NearestMatcher matcher(try_cuda, match_conf);
 matcher(features, pairwise_matches);
  1. 所有这些对都被传递到 leaveBiggestComponent 以获得属于全景图的最大图像集。

  2. 相机参数或每张图像都是从上面获得的集合中计算出来的,然后进行变形和混合。

第 1 步将为每对查找单应性并生成内点数。第 2 步将删除所有置信度因子(内点数)小于阈值的图像对。由于 cam7 img 的特征太少,并且几乎没有与任何其他图像重叠的区域,它会在 leavebiggestcomponent 步骤中被拒绝。

你可以在这个link中看到特性和mtaching(我用过orbfeatures)

https://drive.google.com/open?id=0B2wDitsftUG9QnhCWFIybENkbDA

我也没有改变图像大小,但我想将图像大小减小一点(可能减半)会产生更多的特征点

您可以做的是减少拼接取帧的时间间隔。为了获得好的效果,图像之间必须至少有 40% 的重叠区域。