局部特征点算法简介
1,概念簡介
圖像特征可以包括顏色特征、紋理特征、形狀特征以及局部特征點等。其中局部特點具有很好的穩定性,不容易受外界環境的干擾。在對圖像進行特征提取時,通常要將圖像灰度化,這是因為顏色,易受光照影響,難以提供關鍵信息,故將圖像進行灰度化而計算梯度,同時也可以加快特征提取的速度。
局部特征從總體上說是圖像或在視覺領域中一些有別于其周圍的地方;局部特征通常是描述一塊區域,使其能具有高可區分度;局部特征的好壞直接會決定著后面分類、識別是否會得到一個好的結果。局部特征應該具有的特點: 可重復性、可區分性、準確性、有效性(特征的數量、特征提取的效率)、魯棒性(穩定性、不變性)。所以它只適合于對圖像進行匹配,檢索等應用。對于圖像理解則不太適合。而后者更關心一些全局特征,如顏色分布,紋理特征,主要物體的形狀等。全局特征容易受到環境的干擾,光照,旋轉,噪聲等不利因素都會影響全局特征。相比而言,局部特征點,往往對應著圖像中的一些線條交叉,明暗變化的結構中,受到的干擾也少。
斑點與角點是兩類局部特征點。斑點通常是指與周圍有著顏色和灰度差別的區域,如草原上的一棵樹或一棟房子。它是一個區域,所以它比角點的噪能力要強,穩定性要好。而角點則是圖像中一邊物體的拐角或者線條之間的交叉部分。
2,角點檢測
角點檢測的方法是極多的,其中具有代表性的算法是Harris算法與FAST算法:
Harris算法詳解:https://www.cnblogs.com/ronny/p/4009425.html
FAST算法詳解:https://www.cnblogs.com/ronny/p/4078710.html
3,斑點檢測
斑點檢測的方法主要包括利用高斯拉普拉斯算子檢測的方法(LOG),以及利用像素點Hessian矩陣(二階微分)及其行列式值的方法(DOH)。
高斯拉普拉斯算子檢測的方法(LOG)詳解:https://www.cnblogs.com/ronny/p/3895883.html
DoH方法就是利用圖像點二階微分Hessian矩陣:
行列式的值DoH:
Hessian矩陣行列式的值,同樣也反映了圖像局部的結構信息。與LoG相比,DoH對圖像中的細長結構的斑點有較好的抑制作用。
無論是LoG還是DoH,它們對圖像中的斑點進行檢測,其步驟都可以分為以下兩步:
1)使用不同的σ生成
模板,并對圖像進行卷積運算;
2)在圖像的位置空間與尺度空間中搜索LoG與DoH響應的峰值。
2.1 SIFT(尺度不變特征變換)
在不同的尺度空間上查找關鍵點(特征點),并計算出關鍵點的方向。SIFT所查找到的關鍵點是一些十分突出、不會因光照、仿射變換和噪音等因素而變化的點,如角點、邊緣點、暗區的亮點及亮區的暗點等。該算法具有一定的仿射不變性,視角不變性,旋轉不變性和光照不變性,所以在圖像特征提高方面得到了最廣泛的應用。
該算法大概可以歸納為三步:
1)高斯差分金字塔的構建;
它用組與層的結構構建了一個具有線性關系的金字塔結構,讓我們可以在連續的高斯核尺度上查找特征點。它比LoG高明的地方在于,它用一階高斯差分來近似高斯的拉普拉斯核,大大減少了運算量
2)特征點的搜索;
特征點搜索中,主要的關鍵步驟是極值點的插值,因為在離散的空間中,局部極值點可能并不是真正意義上的極值點,真正的極植點可以落在了離散點的縫隙中。所以要對這些縫隙位置進行插值,然后再求極值點的坐標位置。一關鍵環節是刪除邊緣效應的點,因為只忽略那些DoG響應不夠的點是不夠的,DoG的值會受到邊緣的影響,那些邊緣上的點,雖然不是斑點,但是它的DoG響應也很強。所以我們要把這部分點刪除。我們利用橫跨邊緣的地方,在沿邊緣方向與垂直邊緣方向表現出極大與極小的主曲率這一特性。所以通過計算特征點處主曲率的比值即可以區分其是否在邊緣上。這一點在理解上可以參見Harris角點的求法
3)特征描述:
特征點的方向的求法是需要對特征點鄰域內的點的梯度方向進行直方圖統計,選取直方圖中比重最大的方向為特征點的主方向,還可以選擇一個輔方向。在計算特征矢量時,需要對局部圖像進行沿主方向旋轉,然后再進鄰域內的梯度直方圖統計。
sift特征提取算法詳解:https://blog.csdn.net/happyer88/article/details/45817305
SIFT算法在一定程度上可解決: 目標的旋轉、縮放、平移(RST) ;圖像仿射/投影變換(視點viewpoint); 光照影響(illumination); 目標遮擋(occlusion);雜物場景(clutter); 噪聲。
2.2 SURF
基于SIFT算法的思路,提出了加速魯棒特征(SURF),該算法主要針對于SIFT算法速度太慢,計算量大的缺點,使用了近似Harr小波方法來提取特征點,這種方法就是基于Hessian行列式(DoH)的斑點特征檢測方法。通過在不同的尺度上利用積分圖像可以有效地計算出近似Harr小波值,簡化了二階微分模板的構建,搞高了尺度空間的特征檢測的效率。
SURF算法在積分圖像上使用了盒子濾波器對二階微分模板進行了簡化,從而構建了Hessian矩陣元素值,進而縮短了特征提取的時間,提高了效率。其中SURF算法在每個尺度上對每個像素點進行檢測,其近似構建的Hessian矩陣及其行列式的值分另為:
其中Dxx,Dxy和Dyy為利用盒子濾波器獲得的近似卷積值。如果c(x,y,σ)大于設置的門限值,則判定該像素點為關鍵字。然后與SIFT算法近似,在以關鍵點為中心的3×3×3像素鄰域內進行非極大值抑制,最后通過對斑點特征進行插值運算,完成了SURF特征點的精確定位。而SURF特征點的描述,則也是充分利用了積分圖,用兩個方向上的Harr小波模板來計算梯度,然后用一個扇形對鄰域內點的梯度方向進行統計,求得特征點的主方向。
SURF算法詳解參考:SURF算法與源碼分析、上:https://www.cnblogs.com/ronny/p/4045979.html;SURF算法與源碼分析、下:https://www.cnblogs.com/ronny/p/4048213.html
4,應用(圖像匹配)
由于成像時光照,環境,角度的不一致,我們獲取的同一物體的圖像是存在差異的,如同上圖中的兩輛小車的圖像一樣,角度不同,成像就不同。我們直接利用圖像進行比較是無法進行判斷小車是否為同一類的。必須進行特征點的提取,再對特征點進行匹配。
圖像的變換一般來說包括了光照變化與幾何變化,光照變化表現是圖像上是全局或局部顏色的變化,而幾何變化種類就比較多了,可以是平移、旋轉、尺度、仿射、投影變換等等。所以我們在研究局部特征點時才要求特征點對這些變化具有穩定性,同時要有很強的獨特性,可以讓圖像與其他類的圖像區分性強,即類內距離小而類間距離大。
5,傳統方法與神經網絡特征提取的比較
對于一副圖像,像素級的特征沒有任何價值,而如果特征是一個具有結構性(或者說有含義)的時候,比如摩托車是否具有車把手,是否具有車輪,就很容易把摩托車和非摩托車區分,學習算法才能發揮作用。一個復雜圖像往往由一些基本結構組成。比如下圖:一個圖可通過用64種正交的edges(可以理解成正交的基本結構)來線性表示:
小塊的圖形可以由基本edge構成,更結構化,更復雜的,就需要更高層次的特征表示,高層表達由低層表達的組合而成,這就是神經網絡每層提取到的特征。
傳統特征提取方法的研究過程和思路是非常有用的,因為這些方法具有較強的可解釋性,它們對設計機器學習方法解決此類問題提供啟發和類比。有部分人認為現有的卷積神經網絡與這些特征提取方法有一定類似性,因為每個濾波權重實際上是一個線性的識別模式,與這些特征提取過程的邊界與梯度檢測類似。同時,池化(Pooling)的作用是統籌一個區域的信息,這與這些特征提取后進行的特征整合(如直方圖等)類似。通過實驗發現卷積網絡開始幾層實際上確實是在做邊緣和梯度檢測。不過事實上卷積網絡發明的時候,還沒有這些特征提取方法。
總結
- 上一篇: 常用的色彩空间简介
- 下一篇: 在这里遇见你是哪首歌啊?