我有来自gopro的7张照片(钻机中有5个摄像头,一个用于顶部,一个用于底部,它们都是gopro摄像头)。我想将所有这些图像拼接在一起以创建一个3d全景图。我已经能够使用opencv stitching_detailed.cpp在Rig中缝合5个图像。链接到文件:
https://raw.githubusercontent.com/opencv/opencv/master/samples/cpp/stitching_detailed.cpp
但是我不确定如何缝合顶部和底部(对我来说,现在底部不是那么重要,但我必须做一些关于顶部的事情)。知道如何做到这一点?如果我也可以使用相同的stitching_detailed.cpp来缝合顶部,请告诉我。
以下链接包含我正在使用的图像。它还包含我在装备中缝合图像时得到的结果。
https://drive.google.com/folderview?id=0B_Bl8s2ePunQcnBaM3A4WDlDcXM&usp=sharing
答案 0 :(得分:2)
首先,您需要了解stitching_detailed.cpp的工作原理。 1.使用SURF / ORB / SIFT左右在每个图像中检测特征关键点。然后,对于每个图像对,找到最佳特征匹配并计算单应矩阵并获得每对的内部数量
(*finder)(img, features[i]);
BestOf2NearestMatcher matcher(try_cuda, match_conf);
matcher(features, pairwise_matches);
所有这些对都被置于leaveBiggestComponent中以获取属于全景图的最大图像集。
相机参数或每张图像都是从上面获得的集合中计算出来的,并且完成了变形和混合。
步骤1将找到每对的单应性并生成多个内点。步骤2将移除所有那些置信因子(内部数)小于阈值的图像对。由于cam7 img具有如此少的特征并且几乎没有与任何其他图像重叠的区域,因此它将在leavebiggestcomponent步骤中被拒绝。
您可以在此链接中看到功能和相关(我使用了orbfeatures)
https://drive.google.com/open?id=0B2wDitsftUG9QnhCWFIybENkbDA
此外我还没有改变图像尺寸,但我想减少图像尺寸(可能减半)会产生更多的特征点
您可以做的是缩短拼接框架的时间间隔。为了获得良好的结果,图像之间必须至少有40%的重叠区域。