将两个重叠的视频逐帧组合成一个帧

Combine two overlapping videos frame by frame to form a single frame

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

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

形象地说明问题:

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

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

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

我一小时前读过这个 post。我尝试了一些非常简单的方法。不完美,但在某些情况下应该运作良好。例如,如果您将两个相机并排放置在一个框架上。

我从 phone 中拍摄了 2 张图像(彩色图像)。 Program select Rectangles region from both source images and resize end 提取这个 roi 矩形。这个想法是通过归一化相关找到 "best" 重叠的 Rect 区域。

M1 和 M2 是可以比较的, matchTemplate(M1, M2, res, TM_CCOEFF_NORMED);

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

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

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

您可以通过智能区域进行改进以比较 select离子。

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

Surf 和 sift 对此非常有用,但这是我脑海中最简单的想法。

代码在这里Code