一.? 視頻穩像
視頻去抖動,也叫視頻穩像(Video Stabilization)。視頻穩像系統的重點在于基于視頻系列的運動估計,其中包括全局運動估計和局部運動估計。因此,根據運動估計的方法不同,視頻穩像的算法也是不同的。
視頻穩像的算法一般可以分為四大類:
1. 塊匹配法:目前視頻穩像系統中最常用的一種算法。該方法將當前幀分成塊,塊內的每個像素都具有同一運動矢量,然后對每一塊都在參考幀的特定范圍內搜索最佳匹配,從而估計出視頻序列的全局運動矢量。
2. 投影法:一般是利用圖像的灰度分布信息進行全局運動信息的估計。
3. 特征法:將一副圖像分割為幾個區域,在每個區域內選擇一定數量的代表點進行匹配。
4. 光流法:依據時域空間圖像亮度梯度來進行光流場的估計,它是在假設整個圖像的灰度是連續變化的前提下進行的。
其中,投影法的效果是最差的。因為單純的灰度分布不能很好的反映出運動量的變化。經過測試,發現基于光流法的方法是最好的。
二. 基于光流法的視頻穩像
下面是計算光流法的視頻去抖動算法的基本步驟:
1. 計算變換矩陣
a.? Get previous to current frame transformation (dx, dy, da) for all frames
???? 主要是利用cv2.goodFeaturesToTrack的good feature來計算這個偏移量。
b.? Accumulate the transformations to get the image trajectory
c.? Smooth out the trajectory using an averaging window
d.? Generate new set of previous to current transform, such that the trajectory ends up being the same as the smoothed trajectory vector
2. 將變換矩陣應用在視頻上
3. 一般的算法到這里就結束了。但是出現的視頻是有黑邊的。所以,要進行裁剪。
??? 裁剪的測略就是要遍歷一邊處理后的視頻,然后取所有幀的公共區域。公共區域做成一個mask,然后求這個mask的
??? 最大內接矩形并且該矩形的寬和高要平行于視頻的寬和高。
4. 將這個mask套在處理后的視頻上。
三. 可比較的視頻穩像算法來源
1. Joint Video Stitching and Stabilization from Moving Cameras
Heng Guo, Shuaicheng Liu, Tong He, Shuyuan Zhu, Bing Zeng, Moncef Gabbouj.
IEEE Transactions on Image Processing (TIP), vol. 25, no. 11, pp. 5491-5503, 2016.
2. Youtu的video stabilization。上傳視頻到youtube,然后調用其接口對視頻進行穩像,然后下載下來。網上有講解內部算法怎么做的。
??? https://www.youtube.com/watch?v=QdXugkXBTbc
3.? Adobe的After effect的視頻穩定化插件。
4. VirtualDub的deshaker filter。