我正试图在OpenCV中后期处理视频。由于我的相机不是固定的(必须是移动的),由于振动和平移,产生的视频非常抖动。因此,我尝试查看的每一帧都有模糊,如果它甚至可以检测到一些模糊的图像,这将使我的检测不那么准确。
我在网上搜索过,似乎有很多关于用陀螺仪补偿相机运动的讨论。
有什么相机可以帮助解决这个问题吗?我一直在使用GoPro。
有什么算法可以帮助处理视频吗?
我没有图像稳定的背景,也不知道从哪里开始。如有任何建议,不胜感激。
图像稳定算法通常如下工作:
- 查找从上一帧到当前帧的转换(通常对所有帧使用光流)。变换由一些参数组成,如
dx
(沿水平方向的移动)、dy
(垂直方向)和da
(旋转角度)。基本上,它是一个严格的欧几里得变换,没有缩放和共享 - 对变换进行累加,以获得每个帧的x、y、角度的"轨迹"
- 使用滑动平均窗口平滑轨迹。用户定义窗口半径,其中半径是用于平滑的帧数
- 创建一个新的转换,使
new_transformation = transformation + (smoothed_trajectory – trajectory)
- 将新变换应用于图像序列
这里有两个版本的想法:
- http://nghiaho.com/uploads/code/videostab.cpp
- http://nghiaho.com/uploads/videostabKalman.cpp