多路视频实时全景拼接算法

本文原载于我们的主页,转载于此。

多路视频实时全景拼接算法是我们比较成熟的产品算法,具体Demo可参见我们的Youku主页

多路视频实时全景拼接算法_第1张图片

功能

本算法模块对来自多路摄像机的视频图像进行实时的无缝拼接融合,形成一路具有更宽视角的视频。特别的,可以输出360度全景视频,甚至360度*180度的球面全景。

算法分为两部分,一部分为标定过程,在进行实时拼接前,通过拍摄场景图片,计算各相机的畸变系数和相机之间的变换系数;另一部分为实时拼接过程,利用前面计算出的变换系数对来自各相机的图像进行实时去畸变、拼接,曲面投影,MultiBand融合。

根据用户需要,算法可以将全景图投影到圆柱面、球面等曲面上。

性能

模块基于CUDA实现,使用CUDA显卡完成计算,CPU开销很低。

测试环境:
GTX750Ti,I7 4790k 睿频4GHz,8G DDR3 2400MHz,Win8 64.

六路1920*1080拼接,输出6912*1024:
17fps,CPU总占用率百分之15(包含测试程序中未优化的视频解码、显示等开销)。
四路704*576拼接,输出1824*544;
80fps,CPU总占用率百分之12(包含测试程序中未优化的视频解码、显示等开销)。

适用场景与约束
首先,算法要求各相机间的相对位置、角度在实时拼接过程中保持固定,且相邻相机的视野有一定重合区域。
理论上能够变换到同一视角下进行无缝拼接的场景有两种,一种是多摄像机共中心放置,中心开花状;一种是摄像机位置任意,但场景是一个平面。当场景为远景,且场景-摄像机距离远大于摄像机之间的距离时,也可以近似看做第二种情形。上述情形之外的情况均不可拼,这是一个原则性的限制。

理论上算法对输入视频路数、输出分辨率没有限制,实际应用中这个限制来自于显卡计算能力和显存大小。
由于基于CUDA,所以算法可以扩展到多显卡并行处理(目前仍是单显卡架构),这样就可以实现大规模拼接与融合的处理。

应用
本算法可以应用于安防监控、智能交通、卫星照片拼接、虚拟场景等领域。

优势
本模块较同类产品的突出优势是性能,由于基于CUDA显卡计算,模块具有高度的实时处理能力,能保证在简单的单显卡上实现出高分辨率多路视频拼接融合的功能,或者在多显卡计算环境下实现大规模视频/图片拼接融合的任务。
基于CUDA计算的另一个优势是,较FPGA等方案,开发周期更短,易维护且成本低廉。目前Nvidia已经推出基于Tegra的嵌入式开发组件Jetson TK1,本模块可以容易的从PC平台移植到嵌入式平台。


你可能感兴趣的:(产品,算法/理论)