一.? 視頻穩(wěn)像
視頻去抖動鬼廓,也叫視頻穩(wěn)像(Video Stabilization)趁怔。視頻穩(wěn)像系統(tǒng)的重點在于基于視頻系列的運動估計郑兴,其中包括全局運動估計和局部運動估計坐儿。因此律胀,根據(jù)運動估計的方法不同,視頻穩(wěn)像的算法也是不同的貌矿。
視頻穩(wěn)像的算法一般可以分為四大類:
1. 塊匹配法:目前視頻穩(wěn)像系統(tǒng)中最常用的一種算法炭菌。該方法將當前幀分成塊,塊內(nèi)的每個像素都具有同一運動矢量逛漫,然后對每一塊都在參考幀的特定范圍內(nèi)搜索最佳匹配黑低,從而估計出視頻序列的全局運動矢量。
2. 投影法:一般是利用圖像的灰度分布信息進行全局運動信息的估計酌毡。
3. 特征法:將一副圖像分割為幾個區(qū)域克握,在每個區(qū)域內(nèi)選擇一定數(shù)量的代表點進行匹配。
4. 光流法:依據(jù)時域空間圖像亮度梯度來進行光流場的估計枷踏,它是在假設(shè)整個圖像的灰度是連續(xù)變化的前提下進行的菩暗。
其中,投影法的效果是最差的旭蠕。因為單純的灰度分布不能很好的反映出運動量的變化停团。經(jīng)過測試,發(fā)現(xiàn)基于光流法的方法是最好的下梢。
二. 基于光流法的視頻穩(wěn)像
下面是計算光流法的視頻去抖動算法的基本步驟:
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. 將變換矩陣應(yīng)用在視頻上
3. 一般的算法到這里就結(jié)束了。但是出現(xiàn)的視頻是有黑邊的孽江。所以讶坯,要進行裁剪。
??? 裁剪的測略就是要遍歷一邊處理后的視頻岗屏,然后取所有幀的公共區(qū)域辆琅。公共區(qū)域做成一個mask漱办,然后求這個mask的
??? 最大內(nèi)接矩形并且該矩形的寬和高要平行于視頻的寬和高。
4. 將這個mask套在處理后的視頻上婉烟。
三. 可比較的視頻穩(wěn)像算法來源
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娩井。上傳視頻到y(tǒng)outube,然后調(diào)用其接口對視頻進行穩(wěn)像似袁,然后下載下來洞辣。網(wǎng)上有講解內(nèi)部算法怎么做的。
??? https://www.youtube.com/watch?v=QdXugkXBTbc
3.? Adobe的After effect的視頻穩(wěn)定化插件昙衅。
4. VirtualDub的deshaker filter扬霜。