我正在用OpenCV做一些相机和视频稳定的工作。
假设我确切地知道(以米为单位)我的相机从一帧移动到另一帧的量,我想用这个来返回第二帧。
我确信在做翻译矩阵之前,我必须对这个数字做一些数学运算,但我有点不知所措。。。有什么帮助吗?
谢谢。
编辑:好的,我会更好地解释:我想从视频中删除相机的移动(抖动),我知道相机从一帧到另一帧移动了多少(和方向)。所以我想做的是使用我所掌握的信息将第二帧移回它应该在的位置。我必须为每两帧制作一个转换矩阵,并将其应用于第二帧。但当我怀疑的时候:由于我掌握的信息是单位,是相机的运动,现在我正在处理图像和像素,我想我必须做一些操作,这样转换才是正确的,但我不确定它们到底是什么
知道相机移动了多少还不足以创建合成帧。为此,你还需要世界的3D模型,我想你还没有。
为了证明这一点,假设相机的运动是纯平移的,你看到的是两个物体,一个非常远——几公里外,另一个非常近——几厘米外。非常远的对象在新帧中几乎不会移动,而非常近的对象可能会急剧移动,甚至从第二帧的视野中消失,您需要知道每个点的视角变化了多少,为此您需要3D模型。
在旋转的情况下,具有传感器信息可能会有所帮助,但对平移没有那么有用。