OpenCV:图像稳定
Posted
技术标签:
【中文标题】OpenCV:图像稳定【英文标题】:OpenCV: image stabilization 【发布时间】:2015-02-20 15:28:55 【问题描述】:我正在尝试在 OpenCV 中发布处理视频。由于我的相机不是固定的(必须是移动的),因此生成的视频由于振动和平移而非常抖动。因此,我尝试查看的每一帧都有模糊,如果它甚至可以检测到一些模糊图像,这将使我的检测不太准确。
我在网上搜索了一下,似乎有很多关于用陀螺仪补偿相机运动的讨论。
有没有相机可以帮助解决这个问题?我一直在使用 GoPro。
是否有任何算法可以帮助处理视频?
我没有图像稳定方面的背景,也不知道从哪里开始。希望有任何建议。
【问题讨论】:
陀螺仪是测量设备。您需要使用陀螺仪拍摄视频才能使用其中的数据。我建议你使用某种对象机架或光流来做到这一点,但我完全不知道最先进的稳定算法。 docs.opencv.org/trunk/modules/videostab/doc/videostab.html @AnderBiguri - 是的,我意识到这一点。这就是为什么我要了解有哪些算法选项,因为我没有陀螺仪可以使用。我会研究光流,谢谢! 谢谢大卫,我将开始阅读这些内容。 【参考方案1】:图像稳定算法通常工作如下:
查找从前一帧到当前帧的转换(通常对所有帧使用光流)。变换由一些参数组成,例如dx
(沿水平方向的移动)、dy
(垂直)、da
(旋转角度)。基本上它是一个刚性欧几里得变换,没有缩放也没有共享。
累积变换以获得每帧 x、y、角度的“轨迹”。
使用滑动平均窗口平滑轨迹。用户定义窗口半径,其中半径是用于平滑的帧数。
创建一个新的转换,这样new_transformation = transformation + (smoothed_trajectory – trajectory)
。
对图像序列应用新的变换
这里你有这个想法的两个版本:
http://nghiaho.com/uploads/code/videostab.cpp http://nghiaho.com/uploads/videostabKalman.cpp【讨论】:
以上是关于OpenCV:图像稳定的主要内容,如果未能解决你的问题,请参考以下文章
OpenCV 例程 300篇247. 特征检测之最大稳定极值区域(MSER)