Opencv學習筆記(二)meanshift之我見

       

         今天看到了opencv cookbook一書的第四章,看到了meanshift這個概念。其實以前也看到過這個概念,知道可以用meanshift來做目標跟蹤和圖像分割。但那時候只知道這個東西叫做均值漂移,並不知道它是怎麼做圖像分割的。冥冥之中感覺這玩意兒對我現在寫的論文有幫助,今天對着Dorin Comaniciu 等人2002年寫的《Mean Shift:A Robust Approach Toward Feature Space Analysis》研究了一下,大致理清了它的概念。

        公式就不寫了。meanshift其實原理挺簡單的,就是隨便找個種子點,然後開始在該種子點鄰域內尋找其目標點的密度中心,那麼種子點到密度中心點的向量方向就是密度上升方向了,更新密度中心點爲種子點,迭代,直到到達截止條件(opencv裏的meanshift把截止條件定爲迭代次數和截止精度,當然這兩者可以隨意組合)。

        改進的meanshift使用了核函數(區別種子點附近和遠處點的權重)和權重係數(區別不同樣本的權重),但基本原理還是一樣的。

        這篇論文很長,但作爲牛逼的論文嘛,在實現該方法的同時,它系統地證明了meanshift算法是沿着最大密度梯度方向搜索的,並且隨着多次迭代,種子點趨於穩定。

        其實在上面講述的時候去掉了一個背景,就是所有樣本都採樣自概率密度函數,但這並不影響理解其原理。

        

        通過分析meanshift的原理,其目的就是尋找的是局部最優點,這樣很容易聯想到其在圖像分割或聚類上的應用。

        對於其應用到圖像處理上來,其樣本可認爲是(x,y),x值二維座標,y是顏色空間(p維,maybe  1or3),那麼總維數是      p+2。

         meanshift也可用作圖像平滑,但是對每一個像素點操作用迭代截止值代替,算法複雜度肯定很高了。

         目前用meanshift的很多其實還是目標跟蹤,先預先取一個目標矩形框,在目標動的時候,就會迭代更新密度中心點到當前目標的密度中心,這樣只是一個固定的矩形框的局部範圍搜索,算法複雜度肯定可以接受,實時性就不錯了。但是通過分析發現用meanshift做跟蹤的話,目標突然消失又突然出現,這個算法肯定傻逼了,所以換句話說,目標必須連續移動。

        好吧,其實我最初是想做一幅複雜背景圖片裏的前景區域(可能有很多顏色和前景類似物體,但假定它們的size比前景物體要小很多)的提取,該算法的局部收斂讓我很鬱悶,誰能給我個好的建議啊,感激不盡啊!!!



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章