楊雷,唐瑞尹,王興朝
(1.華北理工大學電氣工程學院,唐山 063200;2.北華航天工業(yè)學院電子與控制工程學院,廊坊 065000)
圖像匹配是機器視覺中重要的研究領域之一,被應用于雙目相機三維重構、人臉識別和地圖導航中[1-3]。隨著機器視覺的發(fā)展,對圖像匹配的準確率要求也越來越高。目前成熟的圖像特征點檢測算法有SIFT算法[4]、SURF算法[5]和基于一種快速的特征點提取和描述ORB算法[6]。尺度不變特征變換(SIFT)是David G Lowe在1999年提出具有穩(wěn)定性的一種算法,SIFT的特征檢測對圖像的平移、縮放、旋轉、亮度變化具有良好的穩(wěn)定性。即使是在少量的圖像中也可以產(chǎn)生大量的特征點,并且SIFT算法描述符的相關性可以有效完成圖像特征點的預匹配。RANSAC算法可以有效提高圖像特征點匹配的準確率。圖像的亮度分布以及噪聲也是影響圖像匹配的關鍵因素,為了提高圖像匹配的準確性在圖像匹配之前需要對圖像進行預處理。
中值濾波是采用模板核算子對模板區(qū)域的像素值按大小進行排序,然后選擇中間點作為當前的像素點。一般情況下采用的是3×3的核算子,該核算子有9個元素,排序后為a1、a2、a3、a4、a5、a6、a7、a8、a9等,中值濾波表示當前值有9個元素,選擇排序的中間a5作為當前點的灰度值。在中值濾波中是優(yōu)于均值濾波的,是一種常用的濾波器,但是當核算子的模板增大后會造成圖像邊界的模糊。在中值濾波中對椒鹽噪聲是十分有效的,在消除傅里葉高頻分量的同時也影響低頻分量。
中值濾波的方式主要依賴于像素點的領域空間和像素值中的中值,一般情況下模板區(qū)域中遠小于或遠大于模板區(qū)域的像素點會被濾掉,而大部分的像素點會被保存下來,因此應該在不同的圖像中選擇不同的空間尺寸,中值濾波對噪聲的處理效果如圖1所示。
圖1 圖像噪聲的中值濾波
在SIFT算法中由于高斯核可以適用于圖像的尺度不變特征,因此首先應該建立高斯金字塔實現(xiàn)圖像的尺度不變性。高斯金字塔的建立需要對圖像進行高斯卷積,假設圖像的坐標為F(x,y)和高斯核G(x,y,α)在不同的尺度空間下進行卷積,高斯卷積后為L(x,y,α),則公式如下:
L(x,y,α)=F(x,y)?G(x,y,α)
(1)
其中(x,y)為圖像的像素坐標,L表示尺度空間,α表示尺度空間因子,其值越小則對圖像的平滑程度越高。
高斯金字塔建立完畢后需要建立DOG高斯金字塔,DOG高斯金字塔是在高斯金字塔中的兩個相鄰的尺度空間之間做差,其表達式如下式所示:
D(x,y,a)=(G(x,y,ka)-G(x,y,a))×F(x,y)=L(x,y,ka)×L(x,y,a)
(2)
其中k表示高斯濾波的模糊尺度,在同一階上兩個相鄰之間的尺度比例為k。高斯差分金字塔求解原理如圖2所示。
圖2 高斯差分金字塔求解原理
為了獲取高斯差分金字塔中的極值點,需要對所在層中的上下兩層同時進行比較,如圖3所示檢測點為所在檢測層中像素點領域內的8個像素點,與上下層中的9個像素點經(jīng)行比較。通過該方法求取該檢測點是否為極值,如果為極值則將該點作為極值點。在比較的過程中,每階中的首末兩層是無法檢測的,因此高斯差分金字塔至少有3層,而高斯金字塔至少存在4層。極值點檢測的原理圖如圖3所示。
圖3 檢測極值點
為了獲取精確的極值點,需要對候選點中因噪聲和邊緣造成的候選點進行去除,因噪聲造成的候選點是采用對極值點進行三維二次函數(shù)擬合獲得亞像素級的位置,其函數(shù)的變換過程如下式所示:
一方面,當代消費者對于美妝的需求增多,要求變得更為嚴格;另一方面,進口品牌也在沖擊著國內的本土品牌市場。為了生存和發(fā)展,本土品牌紛紛出手轉型,推出跨界合作來自救。
(3)
將公式(3)的偏導求解等于0就可以獲得極值的位置,其式如下式所示:
(4)
將(4)式代入(3)式就可以得出下式:
(5)
一般情況下|D|≥0.03,則認為該點可以作為極值點,對噪聲造成的極值點去除后需要再對邊緣點造成的極值進行移除,對邊緣干擾的移除采用的是高斯差分算子的極值在橫跨邊緣的地方有較大的主曲率,而在垂直邊緣的方向有較小的主曲率。主曲率由海森矩陣求出:
(6)
設α、β分別為海森矩陣的最大值與最小值則可以求取下式:
(7)
如果曲率小于(r+1)2/r,則將該點作為特征點保存下來。采用SIFT算法進行特征點的檢測結果如圖4所示。
圖4 SIFT算法特征點檢測
在圖像特征匹配中需要在求取的特征點采用描述符進行描繪,在SIFT特征匹配中是采用特征點領域內的梯度方向判定特征點的主方向,這樣使得特征匹配具有了旋轉不變性。特征點的梯度如下式所示:
(8)
其中,m(x,y)表示梯度的模,θ(x,y)表示梯度的方向角,L為特征點所在高斯差分金字塔的空間尺度函數(shù)。梯度直方圖是用來對特征點領域內的圖像進行描述的一種描述符,其按照橫軸對方向00~3600進行了劃分,每100表示一個單位,共有36個單位??v軸表示其所在方向的模的大小。梯度直方圖中模的最大值所在方向表示特征點領域梯度的主方向。如果在直方圖中存在達到主方向的峰值,則認為該方向為輔方向。
為了確定特征點領域內的信息,如圖5所示,左圖中的小方格表示特征點領域內的像素點,方格中的箭頭方向表示領域的梯度方向,箭頭的長短表示梯度大小。右圖中的4個方格表示是由4個左圖組成,其中每個方格是一個左圖的累計值。一般情況下為了提高圖像匹配的準確率會選擇16×16的領域范圍,那么就會產(chǎn)生右圖中4×4的關鍵點,這樣每個特征點的描述符是由128個特征向量組成。
圖5 特征點的領域方向和特征向量
RANSAC算法是根據(jù)一組觀測數(shù)據(jù)集,經(jīng)過反復迭代的方式計算出數(shù)據(jù)集的參數(shù)模型[8],其本質是計算出一個最優(yōu)的單應矩陣,假設匹配圖像中特征點的像素點位置為(xa,ya),對應的待匹配圖像的像素點位置為(xb,yb),則單應矩陣H可以表示為如公式(9)所示:
(9)
RANSAC算法是通過隨機的方式選擇4條不共線的特征點對作為樣本計算出單應矩陣H。利用求解的單應矩陣H對其他的特征匹配點進行測試,該測試為使用特征點匹配位置與實際位置進行對比然后獲得到一個誤差值。如果模型最優(yōu)則出現(xiàn)的較小的誤差。RANSAC算法的步驟如下:
(1)隨機在特征點對中選擇出4條不共線的特征點對,計算出單應矩陣H,記為模型M;
(2)通過模型M計算出該模型與實際的誤差值,若該誤差小于閾值,加入內點集I;
(3)如果當前內點集I元素個數(shù)大于最優(yōu)內點集 I_best,則更新I_best=I,同時更新迭代次數(shù)k;
(4)若迭代次數(shù)大于k,則迭代結束,否則迭代次數(shù)再次加一后重復上面步驟;進過RANSAC對錯誤的匹配剔除后如圖6所示。
圖6 RANSAC對錯誤匹配的剔除
為了驗證算法的合理性在不同噪聲下對特征點準確匹配數(shù)目進行了的對比實驗,通過實驗驗證中值濾波對含有噪聲圖像匹配的準確性的效果。該對比實驗的仿真環(huán)境為CPU Intel Core i5-4200M 2.50GHz、RAM 4GB、開發(fā)環(huán)境為VS2015與OpenCV 3.1
在文中采用含有不同噪聲的桌面圖作為實驗對象,使用FLANN對圖像特征點進行預匹配,再采用RANSAC算法對錯誤的匹配進行剔除從而實現(xiàn)精確匹配。在含有15%的噪聲下對圖像進行中值濾波前后的圖像匹配效果如圖7所示。
圖7 15%噪聲下濾波前后的圖像匹配效果
圖8對含有不同噪聲的圖像進行了試驗對比,通過實驗對比發(fā)現(xiàn)對圖像噪聲采用中值濾波后可以有效地提高噪聲圖像匹配的準確性,表明對含有噪聲的圖像采用中值濾波預處理是可行有效的方法。
圖8 不同噪聲下圖像特征匹配數(shù)目
圖像噪聲是影響圖像匹配準確性的重要因素之一,而SIFT算法是常用的圖像匹配算法,因此通過中值濾波與SIFT相結合可以在有效抑制圖像噪聲的同時提高圖像匹配的準確性,當圖像的噪聲過于嚴重后采用中值濾波雖然可以提高一定的匹配精度,匹配效果欠佳,因此對含有嚴重的噪聲圖像進行濾波處理是今后的主要研究方向。