天天看點

關于尋找shape特征(feature)的方法總結

哈哈, 剛剛在知乎看到類似的問題, https://www.zhihu.com/question/39513724 , 某位答主和我一樣廢話比較多

關于尋找shape特征(feature)的方法總結

, 我要是也能有人家一樣的技術就好了. 這個連結涉及到模闆比對的實際問題, 高票答主提到的ESM, 結構特征ASM的, 我都是第一次看到. 即便是我之前在下面提到的ICP算法也沒有實際去應用過, 計算機視覺的道路任重而道遠啊.

                                                                                                                ----------------2016. 9.11   15:46

---------------------------------------------------------------------------------------------------------------------------------------------------

這兩天等待投遞履歷回應的期間又從頭看起了算法書,  

主要複習的是computer and machine vision 和 computer vision algorithms and applications, 

加上對應opencv2 cookbook 涉及到的大部分算法

關于特征的部分我這裡做個總結,  盡量做全,  總結的可能會有不準确還希望讀者有自己的判斷, 歡迎留言探讨

HOG那篇論文中提到了Matching Shape

以及google到的 Matching Shape with a Reference Point 

和                     Hierarchical Matching of Deformable Shapes

我前面的部落格内容大部分都是圍繞着直線、圓、橢圓、多邊形這類的shape特征寫的,  像sift,surf,daisy之類的隻寫了一篇,  因為一開始隻是想翻譯, 措辭比較花時間, 沒能寫完.  還有一個重要的原因,  我認為像sift這樣的東西,  本身就是實驗得來的,  用的時候可能隻管效果,  可能不怎麼關心你這個是 harris-based  還是 hessian-based,  可能不會關心你這個是不是binary descriptor. 也許我需要精度高的用了sift,  也許我要實時強的orb,  甚至用freak.  也許什麼時候計算機能力提高sift也能實時,  總之還是要看描述子本身的特性.  覺得這方面先讀懂sift就夠了, 大家又不去設計descriptor,  用到哪再看哪好了.

----------------------------------------------------------------

注:   實際上上面這段話還是有些偏頗的,  最近看的論文,  有人會修改descriptor.  另外二值描述子相對來說更快

                                                                                                        ------------2016.6.27

---------------------------------------------------------------

對于有噪點存在的shape特征,  一般都是用hough變換或者是ransac,  

其他方法我反正在computer and machine vision這本書裡沒有見過,  在algorithms and applications裡也隻多提了個vanishing point,  實際上也不是找shape特征, 找的是透視投影的視點,  可以用霍夫變換去找這樣的視點.

對于能給出一般方程表示出的曲線,  ransac和hough變換都能找到,  可能要注意的是如果參數次元過高,  可能需要降維簡化計算

對于不能給出一般方程的,  如果像簡單的線、圓特征組合,  ransac和hough可能還能使用,  如果是複雜曲線, 用這兩個找參數的思路可能就不行了.

下面我來說一個這兩天在CSE586課件裡面看到的檢測方法(shape alignment)

關于尋找shape特征(feature)的方法總結

圖檔來源:  http://www.cse.psu.edu/~rtc12/CSE586/

對于這兩條線,  我們要找到一個使下面式子取最小值的變換(平移+旋轉+尺度,  x1, x2代表兩條直線, T(x2)表示變換x2)

關于尋找shape特征(feature)的方法總結

圖檔來源: http://www.cse.psu.edu/~rtc12/CSE586/

有時候我們可能會不知道T,  這時就需要ICP算法(Iterative Closest Point)

算法介紹: 張正友 Iterative Point Matching for Registration of Free-Form Curves and Surfaces  

                 wiki      https://en.wikipedia.org/wiki/Iterative_closest_point

最後一種方法,  correlation(這個詞我不知道該怎麼翻譯)

correlation我之前在特征比對SSD提到過,  一開始求最小 sum square difference經過推導 到求 最大的correlation

也就是用Correlation-based Algorithms,  有求差的,  有求差的平方的,  具體不細講了用到的話找這方面看看就好

correlation可能計算量要比前面大一些,  而且對于旋轉之類的變換基本沒有辦法(遇到無法估計的R,T), 遇到縮放也比較麻煩, 要将待檢測的圖像進行一系列的縮小或放大,  多尺度的尋找要多很多計算量

ps :  關于特征檢測,  一般就是用sliding window(滑窗), bounding box(外接矩形),  對于多尺度,  有改變滑窗大小的,  有改變待檢測圖像大小的,  bounding box一般直接resize就行,我不知道有沒有bounding box+ sliding window 的,  對于機器學習來說,  輸入的特征向量的維數需要一緻. 對于深度學習,  可能就沒有這樣的要求, 我看到的都是用滑窗

繼續閱讀