我从两台独立的摄像机获取视频输入,输出视频之间有一些重叠区域。我试过一个水平组合视频输出的代码。以下是该代码的链接:
https://github.com/rajatsaxena/NeuroscienceLab/blob/master/positiontracking/combinevid.py
直观地解释问题:
红色部分显示两个图像帧之间的重叠区域。我需要输出看起来像第二个图像,第一帧是蓝色,第二帧是绿色(如第三图所示)
我能想到但无法实现的解决方案是,使用SIFT / SURF找出两个帧的最大距离关键点,然后完全拍摄第一个视频帧,从第二个视频帧中选择非重叠区域并水平组合他们得到缝合的输出。
让我知道任何其他解决方案。谢谢!
答案 0 :(得分:1)
我在一小时前看过这篇文章。我尝试了一些非常简单的方法。不完美但在某些情况下应该运作良好。例如,如果您将两个摄像头放在一个并排放置的框架上。
我从手机上拍摄了2张图片(彩色图片)。程序从两个源图像中选择矩形区域,并调整大小结束提取此roi矩形。我们的想法是通过归一化相关找到“最佳”重叠矩形区域。
M1和M2是比较的, matchTemplate(M1,M2,res,TM_CCOEFF_NORMED);
之后,我发现这个重叠的Rect使用它来裁剪源图像并通过hconcat()函数组合在一起。
我的代码是用C ++编写的,但在python中复制它非常简单。它不是最好的解决方案,而是最简单的解决方案之一。如果您的相机固定在它们之间的稳定位置。我认为这是一个很好的解决方案。 我拿着手机:)
您也可以在视频中使用这种简单的方法。速度仅取决于您比较的矩形候选项的数量。
您可以通过智能区域对其进行改进,以比较选择。
此外,我正在考虑另一个想法,即通过将来自相机的图像同时放在彼此后面的序列来使用光流。从一个图像中可能的重叠区域提取良好的特征,以在第二图像的区域中跟踪和找到它们。
冲浪和筛选对此非常有用,但这是我脑海中最简单的想法。
代码在这里Code