1

我从 2 个独立的摄像机获取视频输入,输出视频之间有一些重叠区域。我已经尝试了一个水平组合视频输出的代码。这是该代码的链接:

https://github.com/rajatsaxena/NeuroscienceLab/blob/master/positiontracking/combinevid.py

直观地解释问题:

重叠

红色部分表示两个图像帧之间的重叠区域。我需要输出看起来像第二张图像,第一帧为蓝色,第二帧为绿色(如第三幅图所示)

我能想到但无法实施的解决方案是,使用 SIFT/SURF 找出两帧的最大距离关键点,然后完全获取第一个视频帧,然后从第二个视频帧中选择非重叠区域并水平组合它们以获得拼接的输出。

让我知道任何其他可能的解决方案。谢谢!

4

1 回答 1

2

我在一小时前读了这篇文章。我尝试了一些非常简单的方法。不完美,但在某些情况下应该可以正常工作。例如,如果您将两个摄像头并排放置在一个框架上。

重叠区域

我从手机上拍了两张照片(彩色图像)。程序从两个源图像中选择矩形区域并调整大小结束提取此 roi 矩形。这个想法是通过归一化相关性找到“最佳”重叠 Rect 区域。

M1和M2是mat roi来比较,matchTemplate(M1, M2, res, TM_CCOEFF_NORMED);

之后,我发现这个重叠的 Rect 使用它来裁剪源图像并通过 hconcat() 函数组合在一起。

我的代码是用 C++ 编写的,但在 python 中复制它真的很简单。它不是最好的解决方案,而是最简单的解决方案之一。如果您的相机固定在它们之间的稳定位置。我认为这是一个很好的解决方案。我手里拿着手机:)

您也可以在视频上使用这种简单的方法。速度仅取决于您比较的矩形候选者的数量。

您可以通过智能区域来改进这一点以比较选择。

另外,我正在考虑另一个使用光流的想法,方法是同时将来自相机的图像放在彼此后面进行排序。从一张图像中可能的重叠区域中提取好的特征以在第二张图像的区域中跟踪和找到它们。

冲浪和筛分对此非常有用,但这是我心中最简单的想法。

代码在这里代码

于 2015-12-23T10:08:20.737 回答