逐帧组合两个重叠视频以形成单个帧

时间:2015-12-23 06:59:08

标签: python opencv video video-capture opencv-stitching

我从两台独立的摄像机获取视频输入,输出视频之间有一些重叠区域。我试过一个水平组合视频输出的代码。以下是该代码的链接:

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

直观地解释问题:

Overlap

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

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

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

1 个答案:

答案 0 :(得分:1)

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

Overlap regions

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

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

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

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

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

您可以通过智能区域对其进行改进,以比较选择。

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

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

代码在这里Code

相关问题