3、相机运动模型:2D仿射变换、单应性矩阵、3D旋转与平移、运动分解
运动相机在拍摄过程中,机身始终处于六自由度(6DoF)的随机运动中。EIS(电子防抖)系统的本质,是在没有物理云台辅助的前提下,通过数学模型描述相机的运动轨迹,进而对每一帧画面进行逆向补偿。因此,理解相机运动模型是设计稳像算法的第一道门槛。本章将从2D平面变换出发,逐步过渡到3D空间刚体运动,并最终建立从3D运动到2D像素位移的完整映射链路。
3.1 2D仿射变换:平面运动的基础表达
核心原理:仿射变换是描述图像平面内线性变换加平移的最简模型,包含旋转、缩放、剪切和平移,共6个自由度(DoF)。其矩阵形式为:
[ x' ] [ a1 a2 tx ] [ x ]
[ y' ] = [ a3 a4 ty ] [ y ]
[ 1 ] [ 0 0 1 ] [ 1 ]
其中 a1~a4 描述线性变换(旋转+缩放+剪切),tx/ty 描述平移。在EIS中,仿射变换常用于帧间运动估计的初值计算,因为它计算量小、数值稳定,适合作为特征点匹配后的粗对齐模型。
判断方法:当相机运动以平面旋转(绕光轴)和平面内平移为主,且场景深度变化不大时,仿射模型足够。若视频画面出现明显的透视变化(如拍摄建筑物仰视),仿射模型会产生较大残差,此时应升级为单应性矩阵。
| 变换类型 | 自由度 | 矩阵形式 | EIS适用场景 |
|---|---|---|---|
| 平移 | 2 | [1 0 tx; 0 1 ty; 0 0 1] | 纯水平/垂直抖动 |
| 欧氏变换 | 3 | [cosθ -sinθ tx; sinθ cosθ ty; 0 0 1] | 旋转+平移 |
| 相似变换 | 4 | [s·cosθ -s·sinθ tx; s·sinθ s·cosθ ty; 0 0 1] | 含缩放(变焦) |
| 仿射变换 | 6 | [a1 a2 tx; a3 a4 ty; 0 0 1] | 含剪切/非均匀缩放 |
3.2 单应性矩阵:平面场景的精确映射
核心原理:单应性矩阵H是一个3×3的非奇异矩阵,描述了两个平面之间的射影映射关系。当场景为平面(如墙面、地面)或相机仅做纯旋转(无平移)时,任意两帧之间的像素对应关系都可以用H精确描述:
[ x' ] [ h1 h2 h3 ] [ x ]
[ y' ] = [ h4 h5 h6 ] [ y ]
[ 1 ] [ h7 h8 h9 ] [ 1 ]
H共有8个自由度(通常令h9=1归一化)。在EIS中,H的估计通常采用直接线性变换(DLT)算法,配合RANSAC剔除误匹配点。
操作流程:
- 提取特征点(ORB/SIFT)并匹配相邻帧
- 使用RANSAC迭代求解H矩阵
- 计算重投影误差,剔除离群点
- 用内点重新优化H(Levenberg-Marquardt)
案例拆解:假设运动相机在骑行场景中拍摄,路面纹理丰富。相邻帧间存在明显的透视变化(近处路面移动快,远处移动慢)。若使用仿射模型,残差可达5~8像素;改用单应性矩阵后,残差降至0.5像素以内。但需注意:当场景包含不同深度的物体(如路旁树木与远处山体)时,单一H无法同时满足所有像素,此时需要引入3D运动模型。
3.3 3D旋转与平移:刚体运动的完整描述
核心原理:运动相机的真实运动是3D空间中的刚体运动,包含旋转矩阵R(3×3正交阵,行列式为1)和平移向量t(3×1)。旋转矩阵属于特殊正交群SO(3),可用欧拉角、旋转向量或四元数表示。在EIS中,通常使用旋转向量(李代数so(3))进行优化,避免万向锁问题。
运动分解:将相机运动分解为旋转分量和平移分量是EIS的关键步骤。旋转分量导致图像整体平移和透视变化,平移分量则导致视差(不同深度物体移动速度不同)。对于运动相机(焦距短、视角广),旋转是导致画面抖动的主要因素,通常占80%以上的能量。
// 旋转矩阵(绕Z轴旋转θ)
Rz(θ) = [ cosθ -sinθ 0 ]
[ sinθ cosθ 0 ]
[ 0 0 1 ]
// 平移向量
t = [ tx, ty, tz ]^T
判断方法:通过陀螺仪(IMU)数据可以直接获取旋转角速度,积分后得到旋转矩阵。若没有IMU,则需通过视觉方法估计本质矩阵E(E = [t]×R),再分解出R和t。但单目视觉的平移量存在尺度模糊,需结合IMU或已知场景尺度。
| 运动分量 | 图像表现 | EIS处理策略 | 传感器支持 |
|---|---|---|---|
| 旋转(Roll) | 画面绕中心旋转 | 反向旋转补偿 | 陀螺仪Z轴 |
| 旋转(Pitch/Yaw) | 画面整体平移+透视 | 单应性变换补偿 | 陀螺仪X/Y轴 |
| 平移(Tx/Ty) | 视差/近景移动快 | 裁剪+局部补偿 | 加速度计(需积分) |
| 平移(Tz) | 缩放/前向运动 | 缩放补偿 | 加速度计Z轴 |
3.4 运动分解与EIS补偿策略
核心原理:运动分解是将估计出的3D运动拆分为“有意运动”(用户摇摄、跟随)和“无意抖动”(高频振动)的过程。EIS的目标是保留有意运动,滤除无意抖动。常用的分解方法包括:
- 频域分解:对旋转角速度做低通滤波,截止频率通常设为2~5Hz。低于截止频率的运动视为有意运动,高于则视为抖动。
- 路径平滑:在3D轨迹空间(位置+姿态)上应用滑动窗口平均或卡尔曼滤波,生成平滑的虚拟相机路径。
- 自适应分解:根据运动幅度动态调整滤波强度。例如,剧烈运动时增大平滑力度,平稳拍摄时减小平滑力度以避免“果冻效应”。
实战场景:假设运动相机以30fps录制,陀螺仪采样率为1kHz。某帧检测到绕Y轴旋转角速度为0.8 rad/s(约46°/s),经低通滤波后,有意运动分量为0.2 rad/s,抖动分量为0.6 rad/s。EIS系统将0.6 rad/s的旋转量转换为像素位移(像素位移 = 焦距 × 角速度 × 帧间隔),然后对图像进行反向单应性变换。
常见误区:
- 过度平滑:滤波强度过大导致画面“漂移”或“延迟感”,尤其在快速摇摄时。
- 忽略平移分量:近距离拍摄时,平移引起的视差不可忽略,仅补偿旋转会导致边缘模糊。
- 单应性滥用:在深度变化大的场景中强行使用全局单应性,会产生“鬼影”。此时应使用网格化局部单应性或光流场补偿。