cmt跟蹤演算法分析
clustering of static-adaptive correspondences for deformable object tracking
基本原理
對於物體的跟蹤,基本的思路就是能夠不斷檢測到物體的特徵,從而不斷地得到物體的位置實現跟蹤。常見的有三種方法:
第一種 基於整體的模型來跟蹤,比如說tld,通過不斷地更新模型(學習)來實現對物體特徵的良好表示;
第二種 基於物體的區域性來跟蹤,就是將物體分解為多個部分,對每一部分進行單獨的跟蹤,採用光流等方法;
第三種 基於物體的特徵點來跟蹤,就是實時的檢測物體的特徵點,與一開始的特徵點進行匹配的方法來實現物體的跟蹤;
cmt跟蹤演算法採用的是第三種思路,利用特徵點。問題在於如何判斷下一幀的圖此中哪些特徵點是與當前框中的特徵點相匹配,只要很好地找到下一幀中物體的特徵點,跟蹤也就完成。因此,為了解決這個問題,作者做了乙個看起來很簡單的創新:就是計算特徵點的相對位置,以框住中心來計算,對於不變形的物體而言,不管物體怎麼移動旋轉,其上面的特徵點相對中心的距離是在縮放比例下確定的,因此可以由此來排除不是的特徵點。
作者獲取下一幀的特徵點做了兩部分工作:一部分是計算前一幀框中的特徵點的光流,從而得到當前幀的特徵點位置;另一部分是直接計算當前幀的特徵點,並與上一幀的特徵點進行匹配,得到相匹配的特徵點,然後把兩個得到的特徵點都融合在一起,就得到了下一幀初步的特徵點,然後再對特徵點進行篩選,採用的就是上一段的方法。
演算法流程
要求:後繼的物體框能夠保持框住初始框框住的物體
步驟:
step 2:將初始框內的特徵描述賦給k1
step 3:從第二幀開始
step 5:將特徵點p與o匹配,獲取匹配的特徵點m
step 6:利用上一幀的特徵點使用光流法跟蹤得到這一幀的特徵點的位置t
step 7:融合特徵點m和特徵點t得到這一幀總的特徵點k』
step 8:根據k』估計特徵點相對初始幀特徵的縮放比例
step 9:根據k』估計特徵點相對初始幀特徵的旋轉比例
step 10:根據step 7,8,9得到的資料計算每乙個特徵點的vote
step 11:採用聚類的方法選取最大的類也就是最一致的votec
step 12:將votec轉換回特徵點得到最後這一幀的有效特徵點
step 13:判斷votec的長度是否大於最小閾值,如果是則計算最後新的旋轉矩形框的引數,如果不是也就是框太小了則輸出0
step 1、2初始化
在cmt.cpp的**中可以比較清晰的理解,就是使用opencv的fast或者brisk特徵檢測及特徵描述。然後關鍵是儲存有效的資料在資料庫用於之後的匹配。
step 3,4,5,6分析
跟蹤和匹配,基本思路就是先使用上一幀的特徵點points_prev通過光流計算這一幀的對應位置points_tracked,然後反過來使用points_tracked計算對應的上一幀的位置points_back,然後對比points_prev和points_back之間的距離,按道理應該是接近0才對,但是因為光流計算有誤差,因此,有的可能比較大,作者設定了乙個閾值thr_fb 30,如果大於該閾值,表示得到的資料有誤,刪除該點。這麼做目的是為了使跟蹤得到的結果更可靠。
通過跟蹤和特徵匹配來獲取這一幀的特徵點,將跟蹤和匹配的點融合在一起
step 8、9估計縮放比率和旋轉角度
在開始已經儲存了初始的特徵點,而且是正則化的特徵點points_normalized,計算兩兩之間的相對距離和相對角度。對於新的特徵點,同樣也是計算他們的相對距離和相對角度,並與初始的資料相除或相減,就得到變化。最後取他們的中位數作為整體的縮放比率和旋轉角度。
step 10、11、12、13
去掉不好的特徵點
vote的基本思想就是這些特徵點相對中心的相對距離在把縮放、旋轉考慮進去之後是相對不變的,也就是按道理下一幀的特徵點相對中心的距離是不變的。但是由於影象本身的變化,不可能得到完全一樣的相對位置,這個時候,有一些會距離中心近,有一些會偏差很大。
cmt演算法評價
缺點:
1)沒有跟新模型的過程,導致物體角度變化大時找不到特徵點;
2)特徵點太多時會導致速度變慢;
3)特徵點少時就跟蹤不上;
4)移動物體在很多情況下特徵點會發生變化,很容易導致跟蹤不上;
有點:1)**簡單,c++和python都有,使用opencv實現;
2)速度還是比較快的;
3)跟蹤效果特別靜態物體簡直近乎完美;
CVPR 2015 Oral概覽 第二天上午
第二天上午兩大主題 富有新意活力的影象與語言部分,以及在傳統中更上層樓的多視幾何。d2 am a.image and language show and tell a neural image caption generator 看圖說話 神經網路影象標題生成器 google 輸入,輸出一句描述性語...
公元2023年11月25日。陰。
最近的專案比較拖沓。領導終於忍不住地講起了未來的展望,又是廣闊的平台又是高階的技術,拉著我們到處蹭培訓。然並卵。專案a本身開發對業務資料不是很熟悉,另外對測試闡述的不夠到位,而測試也沒有一再地詢問關鍵的壓力點在 導致目前雖然好像測試了好久但是並沒有測試到關鍵點。終於今天暴露出來了,其實這個是一件喜大...
Git學習(一)(2023年11月12日)
環境 win10 已安裝git工具 如未配置環境變數需先配置環境變數 如何配置環境變數 1 我的電腦 屬性 高階系統設定 環境變數 系統變數 找到path然後在變數值結尾增加路徑 c program files x86 git bin git安裝路徑一定要看好!win r開啟命令視窗輸入 sh lo...