图像匹配中的特征点检测之斑点检测(一)
斑點檢測
- 一、斑點檢測
- 二、斑點檢測中的幾種算子
- 1、LoG算子
- 2、SIFT
- 3、DAISY
- 4、SURF
- 5、KAZE
- 三、算子之間對比
一、斑點檢測
? ? ? ?全局特征容易受到噪聲干擾,而局部特征比較穩定,適合用于圖像匹配。圖像匹配的研究目標是精確判斷兩幅圖像之間的相似性,圖像之間的相似性的定義又隨著不同的應用需求而改變。例如:1)在物體檢索系統中,同一物體的不同圖像是相近的。2)在物體類別檢索系統中,相同類的物體之間是相近的。局部特征點的應用主要表現在第一種相似性上,也就是說我們需要設計某種圖像匹配算法來判斷兩幅圖像是否是對同一物體或場景所成的圖像。
? ? ? ?局部特征點分為斑點和角點,斑點是指與周圍有著顏色和灰度差別的區域,角點則是圖像中一邊物體的拐角或者線條之間的交叉部分,由于斑點是一個區域,比角點的穩定性好。
? ? ? ?在視覺領域,斑點檢測的主要思路都是檢測出圖像中比它周圍像素灰度值大或比周圍灰度值小的區域。一般有兩種方法來實現這一目標:
二、斑點檢測中的幾種算子
1、LoG算子
LoG(Laplacian of Gaussian)為高斯拉普拉斯算子?2G\nabla ^{2}G?2G, ?2\nabla ^{2}?2是拉普拉斯算子(?2/?x2+?2/?y2)(\partial^{2}/\partial x^{2}+\partial^{2}/\partial y^{2})(?2/?x2+?2/?y2),G是標準差為σ的二維高斯函數
G(x,y)=12πσ2e?x2+y22σ2G(x,y)=\frac{1}{2\pi \sigma ^{2}}e^{-\frac{x^{2}+y^{2}}{2\sigma ^{2}}} G(x,y)=2πσ21?e?2σ2x2+y2?
則?2G\nabla ^{2}G?2G為
?2G(x,y)=?2G(x,y)?x2+?2G(x,y)?y2=[x2+y2?2σ2σ4]e?x2+y22σ2\begin{aligned} \nabla ^{2}G(x,y)&=\frac{\partial^2 G(x,y)}{\partial x^2}+\frac{\partial^2 G(x,y)}{\partial y^2}\\ &=[\frac{x^{2}+y^{2}-2\sigma^2}{\sigma^4}]e^{-\frac{x^{2}+y^{2}}{2\sigma ^{2}}} \end{aligned} ?2G(x,y)?=?x2?2G(x,y)?+?y2?2G(x,y)?=[σ4x2+y2?2σ2?]e?2σ2x2+y2??說明:該式省略了常數項1/2πσ21/2 \pi \sigma^21/2πσ2
下圖顯示了一個LoG的圖像和三維圖
LoG算子檢測斑點的原理:
圖像與某一個二維函數進行卷積運算實際就是求取圖像與這一函數的相似性。同理,圖像與高斯拉普拉斯函數的卷積實際就是求取圖像與高斯拉普拉斯函數的相似性。當圖像中的斑點尺寸與高斯拉普拉斯函數的形狀趨近一致時,圖像的拉普拉斯響應達到最大。
LoG算子與輸入圖像f(x,y)卷積,然后尋找零交叉來確定邊緣位置,其中
[?2G(x,y)]?f(x,y)=?2[G(x,y)?f(x,y)][\nabla ^{2}G(x,y)]*f(x,y)=\nabla ^{2}[G(x,y)*f(x,y)] [?2G(x,y)]?f(x,y)=?2[G(x,y)?f(x,y)]先使用一個高斯濾波器平滑圖像,然后計算該結果的拉普拉斯。
2、SIFT
SIFT(Scale-invariant Feature Transform)方法主要分為三步:
找到極值點(響應值計算+搜索策略)
非極大值抑制(刪除邊緣點)
亞像素化
計算特征點主方向
建立描述子
歸一化
? ? ? ? 第一步采用高斯差分金字塔(DoG),用組與層的結構構建了一個具有線性關系的金字塔結構,讓我們可以在連續的高斯核尺度上查找特征點。它比LoG高明的地方在于,它用一階高斯差分來近似高斯的拉普拉斯核,大大減少了運算量。
假設整個尺度空間一共有O組,每組有S+3層圖像。共O*(S+3)張尺度圖像:
1)產生S張查找特征點的圖像,需要S+3層尺度圖像。
每一個高斯差分圖像G(x,y,σ)都需要兩幅尺度空間的圖像L(x,y,kσ)與L(x,y,σ)進行差分生成,故S+3張尺度空間圖像,只能得到S+2張高斯差分圖像;而在某一層上查找局部極值點的時候需要用到上一層與下一層的高斯差分圖像,故S+2張高斯差分圖像,最后得到S張用來查找特征點的圖像。
2)取上一組的倒數第三張圖像隔行采樣后作為下一組的第一張圖像。
對于尺度空間第o組,第s層的圖像,它的尺度為σ=σ0ko+s/S,s∈[0,1,...,S+2]\sigma=\sigma_{0}k^{o+s/S},s\in[0,1,...,S+2]σ=σ0?ko+s/S,s∈[0,1,...,S+2]。第o組倒數第三張的尺度為σ=σ0ko+S/S=σ0ko+1\sigma=\sigma_{0}k^{o+S/S}=\sigma_{0}k^{o+1}σ=σ0?ko+S/S=σ0?ko+1,第o+1組第一張的尺度為σ=σ0ko+1\sigma=\sigma_{0}k^{o+1}σ=σ0?ko+1,兩者一致。
3)第i+1層的圖像,由第i層的圖像和一個相對尺度的高斯濾波器卷積生成。
采用高斯核的一個重要原因是它的尺度伸縮不變性特點:對原來的信號加一個變換函數,對變換后的信號再進行高斯核的尺度空間生成,新的信號的極值點等特征是不變的。
? ? ? ?第二步了尋找尺度空間的極值點,每一個采樣點要和它所有的相鄰點進行比較,看其是否比它的圖像域和尺度域的相鄰點大或小。對于其中的任意一個檢測點都要和它同尺度的8個相鄰點和上下相鄰尺度對應的9×2個點共26個點比較,以確保在尺度空間和二維圖像位置空間都檢測到極值點。也就是說,比較是在一個3×3的立方體內進行。
極值點的搜索在離散空間進行,與連續空間的極值點可能不一致,可采用子像元插值法(利用泰勒級數近似),利用已知的離散空間點插值到連續空間極值點。
為了得到穩定的特征點,除了刪除DoG響應值低的點,還有排除落在邊緣上的點,他們的DoG響應也比較強。通過計算特征點處主曲率的比值,橫跨邊緣的地方有較大的主曲率,垂直邊緣的方向有較小的主曲率,能夠區分邊緣點,而主曲率可以通過2×2的Hessian矩陣求出
H=[DxxDxyDxyDyy]H=\begin{bmatrix} D_{xx} &D_{xy} \\ D_{xy} & D_{yy} \end{bmatrix} H=[Dxx?Dxy??Dxy?Dyy??]D值可以通過求取鄰近點像素的差分得到。
H的特征值與D的主曲率成正比,令α為最大特征值,β為最小的特征值,則
Tr(H)=Dxx+Dyy=α+βDet(H)=DxxDyy?Dxy2=αβTr(H)=D_{xx}+D_{yy}=\alpha +\beta\\ Det(H)=D_{xx}D_{yy}-D_{xy}^2=\alpha \beta Tr(H)=Dxx?+Dyy?=α+βDet(H)=Dxx?Dyy??Dxy2?=αβ
令α=γβ\alpha=\gamma\betaα=γβ,則
Tr(H)2Det(H)=(α+β)2αβ=(γ+1)2γ\frac{Tr(H)^2}{Det(H)}=\frac{(\alpha +\beta)^2}{\alpha \beta}=\frac{(\gamma+1)^2}{\gamma} Det(H)Tr(H)2?=αβ(α+β)2?=γ(γ+1)2?當兩個特征值相等即γ=1\gamma=1γ=1時,上式取得最小值,若讓主曲率小于某一閾值γ\gammaγ,只需讓
Tr(H)2Det(H)<(γ+1)2γ\frac{Tr(H)^2}{Det(H)}<\frac{(\gamma+1)^2}{\gamma} Det(H)Tr(H)2?<γ(γ+1)2?
? ? ? ?第三步特征點的方向的求法是需要對特征點鄰域內的點的梯度方向分塊進行直方圖統計,選取直方圖中比重最大的方向為特征點的主方向,還可以選擇一個輔方向。在計算特征矢量時,需要對局部圖像進行沿主方向旋轉,然后再進行構建特征描述子。
SIFT特征描述子的構造見:SIFT特征提取分析。
3、DAISY
? ? ? ?DAISY是面向稠密特征提取的可快速計算的局部圖像特征描述子,它本質思想和SIFT是一樣的:分塊統計梯度方向直方圖,不同的是,DAISY在分塊策略上進行了改進。傳統的SIFT方法,使用了加權的梯度幅值直方圖,當待計算點平移或旋轉,直方圖的數值也會隨之改變,在提取稠密特征的時候就需要反復計算梯度直方圖,耗時很長;而DAISY算子使用的是高斯核卷積的方法來對梯度直方圖加權,由于高斯核有各向同性,對于圖像的旋轉,結果體現到直方圖上只是直方圖柱子(bin)的順序的改變,因此不需要重復計算梯度直方圖。
DAISY算子詳細見:DAISY描述子簡介
4、SURF
? ? ? ?SURF(Speeded Up Robust Features)算法是對SIFT算法的簡化,引入了積分圖像和盒式濾波器(Box Filter,在給定的滑動窗口大小下,對每個窗口內的像素值進行快速相加求和)對二階微分模板進行簡化。
? ? ? ?與SIFT一樣,SURF同樣需要建立尺度空間表示,尋找特征點和特征描述。SIFT特征檢測算法中就是通過相鄰兩層圖像金字塔相減得到DoG圖像,然后再在DoG圖像上進行斑點和邊緣檢測工作的;SURF由于采用了盒式濾波和積分圖像,所以,我們并不需要像SIFT算法那樣去直接建立圖像金字塔,而是采用不斷增大盒子濾波模板的尺寸的間接方法。
搜索極值點同樣采用Hessian矩陣:
H=[LxxLxyLxyLyy]H=\begin{bmatrix} L_{xx} &L_{xy} \\ L_{xy} & L_{yy} \end{bmatrix} H=[Lxx?Lxy??Lxy?Lyy??] LxxL_{xx}Lxx?是高斯二階微分?2g(x,y)?x2\frac{\partial^2 g(x,y)}{\partial x^2}?x2?2g(x,y)?在點xxx處與圖像III的卷積。
為了將模板與圖產像的卷積轉換為盒子濾波運算,我們需要對高斯二階微分模板進行簡化,使用近似的Hessian矩陣行列式來表示圖像中某一點x處的斑點響應值:
Det(H)=LxxLyy?Lxy2=DxxLxxDxxDyyLyyDyy?(DxyLxyDxy)2≈DxxDyy?(wDxy)2Det(H)=L_{xx}L_{yy}-L_{xy}^2=D_{xx}\frac{L_{xx}}{D_{xx}}D_{yy}\frac{L_{yy}}{D_{yy}}-(D_{xy}\frac{L_{xy}}{D_{xy}})^2 \approx D_{xx}D_{yy}-(wD_{xy})^2 Det(H)=Lxx?Lyy??Lxy2?=Dxx?Dxx?Lxx??Dyy?Dyy?Lyy???(Dxy?Dxy?Lxy??)2≈Dxx?Dyy??(wDxy?)2濾波器響應的相關權重w是為了平衡Hessian行列式的表示式,這是為了保持高斯核與近似高斯核的一致性。
? ? ? ?SURF特征點方向的求法,充分利用了積分圖,以特征點為中心的圓形區域,對圖像進行Harr小波響應運算來計算梯度,然后用一個扇形對鄰域內點的梯度方向進行統計,扇形滑動窗口最大Harr響應累加值所對應的方向為特征點的主方向。同時,在4×4子塊區域對響應值進行統計∑dx、∑|dx|、∑dy、∑|dy|形成64維特征矢量,若在求∑dx、∑|dx|時區分dy<0和dy≥0(∑dy 、∑|dy|時區分dx<0和dx≥0)情況,可擴展到128維。
? ? ? ?由于Harr算子本身具有光照不變性,進行特征向量歸一化可得到對比度不變性。
SURF算子詳細見:SURF上、SURF下。
5、KAZE
? ? ? ?SIFT、SURF等特征都是基于一個通過高斯核進行的線性的尺度空間進行特征檢測的,相同尺度下每個點的變換是一樣的,由于高斯函數是低通濾波函數,會平滑圖像邊緣,以至圖像損失掉許多細節信息。而KAZE的非線性尺度空間保證了圖像邊緣在尺度變化中信息損失量非常少,從而極大地保持了圖像細節信息。
? ? ? ?第一步中根據AOS(Additive Operator Splitting)方法進行非線性擴散濾波得到每一層。
? ? ? ?第二步響應值是采用多尺度下尺度歸一化Hessian行列式計算的:
H=σ2(LxxLyy?Lxy2)H=\sigma^2(L_{xx}L_{yy}-L_{xy}^2) H=σ2(Lxx?Lyy??Lxy2?)? ? ? ?其中,Lxx、Lyy、LxyL_{xx}、L_{yy}、L_{xy}Lxx?、Lyy?、Lxy?分別表示x方向2階導數,y方向2階導數,xy方向混合導數。
找出極大值后,刪除重復特征點,兩點在相鄰層并且距離在尺度范圍內認為是重復的。
? ? ? ?第三步主方向的確定:對以特征點為中心的圓形區域內的點求x,y方向的導數dx,dy,然后進行高斯加權;建立扇形區域,得到x,y方向導數和的平方和最大的扇形,主方向即為該扇形區域x,y方向導數和的反正切結果。
KAZE算子詳細見:KAZE特征筆記。
三、算子之間對比
各算子之間的對比如下圖:
本文章主要來源于圖像局部特征點檢測算法綜述。
總結
以上是生活随笔為你收集整理的图像匹配中的特征点检测之斑点检测(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 智慧农贸系统-助力农贸产业升级,优化市民
- 下一篇: Trello的5个开源替代品介绍