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