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)

OpenCV 例程 300篇247. 特征检测之最大稳定极值区域(MSER)

基于OpenCV的图像分割处理!

基于OpenCV立体视觉标定和校正

基于opencv,开发摄像头播放程序