關於L K跟蹤演算法的理解

2021-06-27 12:59:23 字數 844 閱讀 6079

最近一直在除錯l-k跟蹤演算法,其實opencv中都有相應的示例**,直接搬過來用就可以了,但是我一開始還是不太懂是什麼意思,後來從乙個人的部落格上看到了他的注釋才算模模糊糊弄明白(

然而在用的時候遇到乙個奇怪的問題。我們根據專案的需要,最後要將程式封裝成乙個靜態鏈結庫,所以只能留給使用者乙個介面。當我把整個程式封裝好後,發現當我第一次執行的時候,跟蹤程式執行良好,但是一旦跟蹤點為零,我重新執行程式(執行程式沒有關閉,只是相當於又迴圈了一次)時,竟然沒有跟蹤點或者很少的跟蹤點。我一直找不到原因。直到昨天我在看書的時候注意到l-k演算法最後乙個引數flags,我覺得《學習opencv》中的講解太過於籠統,在我參考的部落格中他是這麼解釋的:

cv_lkflow_pyr_a_ready , 在呼叫之前,第一幀的金字塔已經準備好

cv_lkflow_pyr_b_ready , 在呼叫之前,第二幀的金字塔已經準備好

cv_lkflow_initial_guesses , 在呼叫之前,陣列 b 包含特徵的初始座標

我覺得還是有一定的道理的。可能就是我的這種模糊才造成我後面的困擾。這個引數在一般的示例中都是一開始給乙個初始值為0,當第一幀結束後給值為cv_lkflow_pyr_a_ready,我犯的錯就在於:當我再次執行程式的時候,因為沒有重新給flags賦值為0,所以flags的值為cv_lkflow_pyr_a_ready,這就意味著,在引數prya中其實是有金字塔值的,而再次執行的時候,我獲取到的其實已經不是那個時候的了,應該重新計算金字塔,所以我才一直出錯。我不知道我的表述有沒有人懂,可能表述的有點混亂,最主要的是要提醒大家不要忽視flags這個引數,當其為0的時候,可以重新計算金字塔。而為1或2的時候你的金字塔其實已經有一部分存在了。具體引數的解釋可以見我給的鏈結,該博文講述的已經很詳細了。

多目標跟蹤中SORT演算法的理解

多目標跟蹤中sort演算法的理解 在跟蹤之前,對所有目標已經完成檢測,實現了特徵建模過程。1.第一幀進來時,以檢測到的目標初始化並建立新的 標註id。2.後面幀進來時,先到卡爾曼濾波器中得到由前面幀box產生的狀態 和協方差 求 所有目標狀態 與本幀檢測的box的iou,通過匈牙利指派演算法得到io...

關於KMP演算法的理解

上次因為haipz組織的比賽中有道題必須用到kmp演算法,因此賽後便了解了下它,在仔細拜讀了孤 影神牛的文章之後有種茅塞頓開的感覺,再次orz。附上鏈結 對於整個kmp演算法,最精髓的部分便是關於next陣列的生成。一開始ruijia liu的書上貼上的 感覺完全不能理解,但是看神犇的分析覺得似乎明...

關於CPD演算法的理解

最近看了 point set registration coherent point drift 來記錄一下對這個演算法的理解。cpd演算法使用的數學模型為高斯混合模型 gmm 關於高斯混合模型的理解可以參考下面這篇部落格 首先定義了一系列變數 其中點集x和點集y是兩個需要配準的點雲,t為變換矩陣。...