運動估計 是什麼?
Motion Estimation:運動估計 的完整解釋
從視頻序列中估計場景或相機的運動,包括物體運動、相機運動(ego-motion)及場景流等。
運動估計(Motion Estimation)是從視頻中恢復運動信息的過程,涵蓋多個相關但不同的子任務,包括相機運動(ego-motion)、物體運動、以及全局場景流的估計。
運動估計的多個層次
- 像素級運動(光流):為每個像素估計運動向量,前面已詳述。
- 物體級運動:估計物體的中心、速度、角速度等。
- 相機運動(Ego-Motion):相機在 3D 空間的平移與旋轉,可表示為 6-DOF(6 自由度)剛體運動或相機位姿變化。
- 場景流(Scene Flow):同時估計像素的 3D 位置與 3D 運動速度,是光流的 3D 推廣。
相機運動估計
相機運動可透過特徵匹配、光流或直接方法估計:
- 特徵匹配法:在相鄰幀間找對應的特徵點,透過極線幾何(epipolar geometry)與本質矩陣(essential matrix)求解相機旋轉與平移。
- 直接法(Direct Method):最小化光度誤差(photometric error)直接優化相機位姿,例如 DSO(Direct Sparse Odometry)。
- 半直接法:結合特徵與光度誤差,如 SVO(Semi-Direct Visual Odometry)。
典型應用於 SLAM(Simultaneous Localization and Mapping)系統,如 ORB-SLAM、TUM-VI 等。
物體運動估計
物體級的運動估計通常基於:
- 邊界框追蹤:檢測器獲得物體邊界框,卡爾曼濾波或其他追蹤器預測下一幀位置。
- 光學流統計:計算物體邊界框內的光流統計量(平均、中位數等)。
- 運動分割:分離相機運動與物體運動,識別動態物體。
- 姿態與速度估計:對人體、車輛等特定物體,估計其 3D 姿態與速度。
場景流估計
場景流是光流在 3D 的推廣,同時輸出:
- 每個像素的深度(Z 座標)
- 每個像素的 3D 運動速度向量 (Vx, Vy, Vz)
典型方法:
- Flownets3D:基於光流網路,額外預測深度。
- FlowNet3D:端到端 3D 運動估計(基於點雲)。
- 無監督學習:結合光度一致性、幾何一致性與周期一致性的約束,無需標註資料。
技術方法
傳統方法
- 特徵檢測與匹配(SIFT、SURF 等)
- 8 點算法求本質矩陣
- RANSAC 除外值處理
- 三角化恢復 3D 結構
深度學習方法
- 卷積網路端到端估計運動
- 自編碼器或 Transformer 架構
- 多任務學習:同時估計光流、深度、物體偵測
- 自監督學習:無需監督信號
評估指標
- 光流誤差:終端點誤差(EPE)、角度誤差等(見光流條目)。
- 相機位姿誤差:相對位姿誤差(RPE, Relative Pose Error)、絕對位姿誤差(APE, Absolute Pose Error)。
- 物體追蹤誤差:中心誤差、邊界框 IoU、多目標追蹤指標(如 MOTA)。
- 場景流誤差:3D 運動向量誤差、深度誤差、EPE3D 等。
應用場景
- 自動駕駛:估計自車位置、預測周邊物體軌跡。
- 無人機導航與避障:估計無人機自身運動,建立環境地圖。
- 視頻穩定化:估計相機抖動,補償並穩定視頻。
- 動作捕捉:估計演員身體各部位的 3D 運動。
- 視覺里程計(VO)與 SLAM:實時定位與製圖基礎。
- 視頻補幀(Frame Interpolation):利用光流或場景流估計中間幀。
- 動作識別:基於運動軌跡的人物動作分類。
主要挑戰
- 遮擋與出現:快速運動導致像素遮擋,難以追蹤。
- 視角變化:大幅度視角變化使特徵匹配困難。
- 光照變化:光照不穩定破壞光度約束與特徵一致性。
- 紋理缺失:無紋理區域(如白牆)無法進行光流估計。
- 動態背景:複雜運動場景(多物體、複雜光流)的分割困難。
運動估計的跨域應用
- 運動估計 + 物體檢測 = 物體追蹤
- 運動估計 + 語義分割 = 動作識別
- 運動估計 + 深度估計 = SLAM / VO
- 運動估計 + 光流 = 場景流
實務部署建議
在生產系統中,應根據應用的實時性要求選擇算法:即時應用(視頻直播、無人機避障)傾向於特徵與傳統方法結合;離線分析(視頻編輯、動作捕捉後製)則採用高精度深度方法。相機標定對運動估計精度至關重要,建議定期重新標定。此外,多傳感器融合(結合 IMU、雷達)可顯著改善在挑戰環境下的估計穩健性。