1. 程式人生 > >meanshift 的跟蹤原理解析

meanshift 的跟蹤原理解析

寫在開頭:

             研究了一下午的meanshift 原理,終於弄得有點頭緒了。望參考,如有不對之處,請留言,謝謝!!

meanshift 是什麼玩意, 它能幹啥就不在這裡廢話了。

                                                              

這張圖熟悉的不能再熟悉的了,作為一下,喜歡用自己程式碼實現一些演算法的大笨狗,我需要知道,

    (1)這些點(小黑點)是怎麼計算得到的?

    (2)他們的計算過程是怎麼實現的?

對於第二個問題,我想好多人都已經解釋的很明白了,這裡不再說了。

針對第一個問題,我查了好多資料,學到了一點自己的見解:

     a. 針對meanshift 的計算過程, 有人臉box(就是需要跟蹤的區域),還有就是原圖(就是輸入影象,這個影象中包含了人臉)

     剛開始box標記在人臉上(第一幀,完全正確!),接下來的一幀 --- 新的一幀中(人臉移動了,但是box還在原處),現在就要移動box跟蹤人臉,

    也就是在新的一幀中找人臉(如果直接檢測就完全不需要跟蹤啦。跟蹤的目的就是減少檢測的次數,因為檢測太費勁!)

     那麼就需要找出這一幀(新的一幀)中哪個區域與人臉(第一幀的box)比較相似了!!!

至此有了一個大的概念,在新的一幀中差找與人臉最相似的區域,並將box移動過去。

   又會有兩個問題:

      (1)相似不相似怎麼計算?

      (2)相似不相似怎麼表現呢?

   對於第一個問題:

      有個叫什麼皮爾遜相關性計算的公式,這裡就不在細說。大概的意思是這樣的,判斷兩個影象的相似性,可以通過計算兩個影象直方圖分佈來計算。

   

 計算box影象與影象塊1的相關性,可以得到一個[0,1]之間的數。

這樣得到一個相關性圖(概率圖),每一個畫素的值都是[0,1]的小數。這也沒法看啊!!!怎麼辦???

勞動人民的智慧還是不錯滴,將[0,1]對映到[0,255]就產生一張灰度圖了。相關性越高的地方,在灰度圖中就越亮。也就是第一張圖中的各種點。我感覺這個灰度圖就是反向投影圖!!!不再解釋,被其他部落格的人坑了好長時間!

下面將計算第一個點是如何邁出它的第一步的:


似不似算出來的移動有點大,有點大,不用怕,第二次迭代的時候就修正過來啦!!!

貌似,我這種只是一種可見的方式,肯定還會有其他的移動方式,比如計算質心什麼玩意的。對不對,大笨狗始終是大笨狗。

opencv官方文件中的meanshift迭代過程:

     

(by 終結大笨狗,如有問題,請留言指出)