輸入圖像序列 lists:
- 讀取第一幀圖像,灰化,并且框定ROI區域
- 以ROI中心(center)點為中心,計算第一幀圖像的高斯響應圖g(整幅圖計算,距離ROI中心越遠響應值越小)
- 将步驟2中計算得到的高斯響應圖對應于ROI區域的部分取出來,記為g1
- 取第一幀圖像中ROI區域,進行預處理(均值化為0,歸一化),記為f1
- 将g1,f1進行快速傅裡葉變換,訓練,得到Ai ,Bi
-
如果是第一幀:
Ai Bi 乘學習率進行Ai,Bi更新,用pos存下跟蹤位置(x ,y的起始坐标和寬帶、高度),clip存下更詳細的跟蹤位置(上下左右四個坐标),即為第一幀的目标定位。
-
如果不是第一幀,記目前幀為f:
計算濾波器Hi =Ai/Bi,f進行灰化,取f對應clip的區域進行預處理(均質化為0,歸一化等),得到fi(fi是clip大小的區域,位置以pos為中心)
對fi進行FFT變換得到Fi,再求響應圖:
Gi = Hi * Fi
Gi進行反FFT變換,得到gi
在gi中找出響應值最大的點maxg,用maxg的位置更新pos和clip
再取目前幀目标位置(pos區域),更新Ai ,Bi ,
畫出跟蹤結果,之後進行下一幀跟蹤。
這裡說一下我的疑惑:
代碼中,clip基本隻用來檢測ROI是否超出圖像範圍。但是其實用pos也可以達到同樣的目的。不知道這個clip_pos的變量作用到底是什麼。
還有一個問題,pre_training中,更新了num_pretrain次Ai,Bi ,我看不懂這是什麼原理。用一幀圖像多次計算就可以提升性能?
希望懂的大佬不吝賜教。
附上MOSSE代碼,可直接運作:
https://download.csdn.net/download/qq_32048913/11644401