運動與視訊

運動估計

運動估計是「推斷事物如何在影格之間移動」這整類任務的統稱,無論移動的是個別物體、相機本身,還是整個場景。光流是其中一種答案(稠密的逐像素場),但運動也可以用粗略得多、緊湊得多的方式描述,而正確的表示法完全取決於應用:視訊編解碼器想要便宜且易壓縮的運動,防手震想要全域相機運動,三維重建系統則想要與場景幾何一致的運動。

區塊比對(block matching)是部署最廣的形式,因為它驅動了視訊壓縮。影格被切成區塊(例如 16×16),對每個區塊,編碼器在一張參考影格中搜尋最相似的區塊,通常最小化絕對差和(SAD)或平方差和(SSD);指向最佳匹配的位移就是運動向量(motion vector)。MPEG、H.264/AVC、H.265/HEVC 都用它做影格間預測:與其儲存整個區塊,不如儲存一個運動向量加上一小份殘差。關鍵在於,編解碼器的運動向量是為了「最小化位元數」而選,而非為了物理準確,因此它可能指向一個視覺上相似但實則錯誤的位置。

參數化模型把運動壓縮得更徹底,做法是假設整個區域服從同一個變換:2 參數的平移、6 參數的仿射模型(平移、旋轉、縮放、剪切),或 8 參數的單應性(homography,一個平面投影對映,適合相機旋轉或一個平面表面)。這寥寥數個參數可以被穩健地擬合,常搭配 RANSAC 來剔除離群值,並且是影片防手震、全景拼接與全域運動補償的骨幹。分層(layered)與以分割為基礎的模型走得更遠,為不同的移動物體指派不同的參數化運動。整個光譜由稠密、非參數化(光流)一路延伸到稀疏、高度參數化(單一個單應性)。

別把編解碼器的運動向量當成真實運動。它們是由率失真最佳化(rate-distortion optimization,在可接受誤差下用最少位元)選出的,因此若把它們當作物理運動使用(例如做動作分析)可能會被誤導——儘管壓縮域方法的確會把它們當成一個免費又快速的運動線索來利用。