計算機視覺中的傳統特征提取方法總結
瀏覽:2897
來源 | 機器學習AI算法工程
前言:本文對計算機視覺傳統方法中的一些特征提取方法進行了總結,主要包括有:SIFT(尺度不變特征變換)、HOG(方向梯度直方圖)、SURF、ORB、LBP、HAAR。
目錄
[2] HOG(方向梯度直方圖)
[3] SIFT和HOG的比較
[4] SIFT/HOG與神經網絡特征提取的比較
[5] 其他傳統特征提取的方法(SURF、ORB、LBP、HAAR)
圖像為什么要灰度化?
2.顏色,易受光照影響,難以提供關鍵信息,故將圖像進行灰度化,同時也可以加快特征提取的速度。
仿射不變性
什么是局部特征?局部特征應該具有的特點?
SIFT(尺度不變特征變換)
1.1 SIFT特征提取的實質
1.2 SIFT特征提取的方法
模擬圖像數據的多尺度特征,大尺度抓住概貌特征,小尺度注重細節特征。通過構建高斯金字塔(每一層用不同的參數σ做高斯模糊(加權)),保證圖像在任何尺度都能有對應的特征點,即保證尺度不變性。
2. 關鍵點搜索和定位:
確定是否為關鍵點,需要將該點與同尺度空間不同σ值的圖像中的相鄰點比較,如果該點為max或min,則為一個特征點。找到所有特征點后,要去除低對比度和不穩定的邊緣效應的點,留下具有代表性的關鍵點(比如,正方形旋轉后變為菱形,如果用邊緣做識別,4條邊就完全不一樣,就會錯誤;如果用角點識別,則穩定一些)。去除這些點的好處是增強匹配的抗噪能力和穩定性。最后,對離散的點做曲線擬合,得到精確的關鍵點的位置和尺度信息。
3. 方向賦值:
為了實現旋轉不變性,需要根據檢測到的關鍵點的局部圖像結構為特征點賦值。具體做法是用梯度方向直方圖。在計算直方圖時,每個加入直方圖的采樣點都使用圓形高斯函數進行加權處理,也就是進行高斯平滑。這主要是因為SIFT算法只考慮了尺度和旋轉不變形,沒有考慮仿射不變性。通過高斯平滑,可以使關鍵點附近的梯度幅值有較大權重,從而部分彌補沒考慮仿射不變形產生的特征點不穩定。注意,一個關鍵點可能具有多個關鍵方向,這有利于增強圖像匹配的魯棒性。
4. 關鍵點描述子的生成:
關鍵點描述子不但包括關鍵點,還包括關鍵點周圍對其有貢獻的像素點。這樣可使關鍵點有更多的不變特性,提高目標匹配效率。在描述子采樣區域時,需要考慮旋轉后進行雙線性插值,防止因旋轉圖像出現白點。同時,為了保證旋轉不變性,要以特征點為中心,在附近領域內旋轉θ角,然后計算采樣區域的梯度直方圖,形成n維SIFT特征矢量(如128-SIFT)。最后,為了去除光照變化的影響,需要對特征矢量進行歸一化處理。
如果對上述純文字理解困難,可以參考文章:
SIFT特征提取算法
1.3 SIFT特征提取的優點
1. SIFT特征是圖像的局部特征,其對旋轉、尺度縮放、亮度變化保持不變性,對視角變化、仿射變換、噪聲也保持一定程度的穩定性;
2. 獨特性(Distinctiveness)好,信息量豐富,適用于在海量特征數據庫中進行快速、準確的匹配;
3. 多量性,即使少數的幾個物體也可以產生大量的SIFT特征向量;
4. 高速性,經優化的SIFT匹配算法甚至可以達到實時的要求;
5. 可擴展性,可以很方便的與其他形式的特征向量進行聯合;
6. 需要較少的經驗主義知識,易于開發。
1.4 SIFT特征提取的缺點
1.5 SIFT特征提取可以解決的問題:
近來不斷有人改進,其中最著名的有 SURF(計算量小,運算速度快,提取的特征點幾乎與SIFT相同)和 CSIFT(彩色尺度特征不變變換,顧名思義,可以解決基于彩色圖像的SIFT問題)。
HOG(方向梯度直方圖)
2.1 HOG特征提取的實質
2.2 HOG特征提取的方法
2.3 HOG特征提取特點
SIFT和HOG的比較
不同點:
SIFT 特征通常與使用SIFT檢測器得到的興趣點一起使用。這些興趣點與一個特定的方向和尺度相關聯。通常是在對一個圖像中的方形區域通過相應的方向和尺度變換后,再計算該區域的SIFT特征。
HOG特征的單元大小較小,故可以保留一定的空間分辨率,同時歸一化操作使該特征對局部對比度變化不敏感。
結合SIFT和HOG方法,可以發現SIFT對于復雜環境下物體的特征提取具有良好的特性;而HOG對于剛性物體的特征提取具有良好的特性。
筆者曾做過一個自然場景分類的實驗,發現SIFT的準確率比HOG高,而如果檢測像人這種剛性的object,HOG的表現要比SIFT好。
SIFT/HOG與神經網絡特征提取的比較
4.1 神經網絡提取到的特征
早期,兩個科學家Bruno Olshausen和 David Field通過實驗研究了這個問題,發現一個復雜圖像往往由一些基本結構組成。比如下圖:一個圖可通過用64種正交的edges(可以理解成正交的基本結構)來線性表示。比如樣例的x可以用1-64個edges中的三個按照0.8,0.3,0.5的權重調和而成。而其他基本edges沒有貢獻,均為0 。
4.2 傳統特征提取方法與神經網絡特征提取的比較
觀點2: 深度學習的數據需求量大對于視覺來說是個偽命題。許多研究成果已經表明深度學習訓練得到的模型具有很強的遷移能力,因此在大數據集上訓練完成的模型只要拿過來在小數據集上用就可以,不需要完全重新訓練。這種方式在小數據集上的結果往往也比傳統方法好。
觀點3:還是需要重新訓練的,只能說大數據集訓練好的模型提供了一個比較好的參數初始化。而且卷積前幾層提取特征僅僅是對分類問題是對的,但是對于一些dense prediction還是不一樣,畢竟提取特征不一定有用,還是task dependent。
觀點4:深度學習是一種自學習的特征表達方法,比SIFT/HOG這些依靠先驗知識設計的feature的表達效果高。早在13年大家都發現神經網絡的最后一層的local特征和SIFT性質差不多,但是表達能力強太多。SIFT能做的事情CNN都能做,表達效果也強,那深度學習取代SIFT是遲早的事情(或者說已經發生的事情)。深度神經網絡識別率的提高不需要建立在需求大量訓練樣本的基礎上,拿pre-train好的模型直接用就可以了。在一些沒有訓練樣本的應用(圖像分割(image stithing)/ 立體匹配(stereo mathing)) ,可以把卷積層的activation提取出來做stitching的local feature(感覺是一個可以探索的方向)。未來還有SIFT/SURF這種固定特征提取算法的生存空間嗎?除非是嵌入式這種計算資源極端受限的情況,但是現在大家都在試著implement CNN FPGA甚至ASIC了。
觀點5:2016年ECCV上舉辦的一個local feature的工作會,發現在核心匹配問題上,CNN并沒有什么突破性的進展。在Oxford大學的VGG組提供的Hpatch數據集上,發現rootsiftpca效果最好,如圖:
可以參考以下知乎話題,查看更多觀點:
https://www.zhihu.com/question/48315686
其他傳統特征提取的方法(SURF、ORB、LBP、HAAR)
圖像特征檢測描述(一):SIFT、SURF、ORB、HOG、LBP特征的原理概述及OpenCV代碼實現
5.1 SURF
SURF主要是把SIFT中的某些運算作了簡化。SURF把SIFT中的高斯二階微分的模板進行了簡化,使得卷積平滑操作僅需要轉換成加減運算,這樣使得SURF算法的魯棒性好且時間復雜度低。SURF最終生成的特征點的特征向量維度為64維。
5.2 ORB
ORB特征檢測主要分為以下兩個步驟:
①方向FAST特征點檢測: FAST角點檢測是一種基于機器學習的快速角點特征檢測算法,具有方向的FAST特征點檢測是對興趣點所在圓周上的16個像素點進行判斷,若判斷后的當前中心像素點為暗或亮,將候定其是否為角點。FAST角點檢測計算的時間復雜度小,檢測效果突出。FAST角點檢測為加速算法實現,通常先對回周上的點集進行排序,排序使得其計算過程大大得到了優化。FAST對多尺度特性的描述是還是通過建立圖像金字塔實現的,而對于旋轉不變性即方向的特征則引入灰度質心法用于描述特征點的方向。
②BRIEF特征描述: BRIEF描述子主要是通過隨機選取興趣點周圍區域的若干點來組成小興趣區域,將這些小興趣區域的灰度二值化并解析成二進制碼串,將串特征作為該特征點的描述子,BRIEF描述子選取關鍵點附近的區域并對每一位比較其強度大小,然后根據圖像塊中兩個二進制點來判斷當前關鍵點編碼是0還是1.因為BRIEF描述子的所有編碼都是二進制數的,這樣就節省了計算機存儲空間。
5.3 LBP
LBP算法根據窗口領域的不同分為經曲LBP和圓形LBP兩種。下面分別介紹:
①經典LBP: 經典LBP算子窗口為3×3的正方形窗口,以窗口中心像素為閾值,將其相鄰8領域像素灰度與中心像素值比較,若中心像素值小于周圍像素值,則該中心像素位置被標記為1,否則為0(顯然這種規則下,對于中心點大于或等于這兩種情況,算法無法區分,后續經過改進引入LBP+與LBP-因子用來區分這兩種情況)。圖像經過這種遍歷操作后,圖像就被二值化了,每一個窗口中心的8鄰域點都可以由8位二進制數來表示,即可產生256種LBP碼,這個LBP碼值可以用來反映窗口的區域紋理信息。LBP具體在生成的過程中,先將圖像劃分為若干個子區域,子區域窗口可根據原圖像的尺寸進行調整,而不一定非得為3×3的正方形窗口。一般對于512×640的圖像,子區域窗口區域選取大小為16×16。
②圓形LBP: 經典LBP用正方形來描述圖像的紋理特征,其缺點是難以滿足不同尺寸和頻率的需求。Ojala等人對經典LBP進行了改進,提出了將3×3的正方形窗口領域擴展到任意圓形領域。由于圓形LBP采樣點在圓形邊界上,那么必然會導致部分計算出來的采樣點坐標不是整數,因此這里就需要對得到的坐標像素點值進行處理,常用的處理方法是最近鄰插值或雙線性插值。
放一張SIFT/HOG/LBP優缺點、適用范圍對比圖:
5.4 HAAR
訓練過程: 輸入圖像->圖像預處理->提取特征->訓練分類器(二分類)->得到訓練好的模型;
測試過程:輸入圖像->圖像預處理->提取特征->導入模型->二分類(是不是所要檢測的物體)。
Haar-like特征是很簡單的,無非就是那么幾種,如兩矩形特征、三矩形特征、對角特征。后來,還加入了邊緣特征、線特征、中心環繞特征等。使用積分圖可以加速計算特征。最后,使用集成的方法Adaboost進行訓練。
特征提取之Haar特征
為什么在行人檢測中,HOG特征比Haar特征更精確?
Conclusion
傳統特征提取 / CNN特征提取不同點: 傳統特征提取方法的檢測算子一般是人為設計好的,是經過大量的先驗知識總結得到的;CNN特征提取相當于在訓練一個個filter(過濾器、卷積核),這些filter相當于傳統特征提取方法中的檢測算子。因此,CNN特征提取是利用神經網絡的自主學習得到的。
技術鄰APP
工程師必備
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP
1




















