◆王梓任 楊友良 馬翠紅
(華北理工大學(xué)電氣工程學(xué)院 河北 063210)
隨著虛擬現(xiàn)實(shí)和三維建模技術(shù)在國(guó)內(nèi)的迅速發(fā)展,相比之前需要設(shè)備的性能可能也會(huì)變得更高。而快速獲取和處理目標(biāo)場(chǎng)景數(shù)據(jù),建立較高精度的三維模型也成為現(xiàn)今的研究熱點(diǎn)?,F(xiàn)如今主流的三維信息獲得方式有三種:第一種,使用精密儀器的三維數(shù)據(jù)獲取,比如說(shuō),激光雷達(dá)掃描,這種方式雖然高效,直接,精度也高,但是成本比較高。第二種,使用Kinect掃描來(lái)獲取數(shù)據(jù),這種方式便捷,有效,局限在于范圍有限。第三種,是利用圖像的來(lái)收集三維信息的方式。這種方式便捷,經(jīng)濟(jì),有真實(shí)感。這幾種方法中基于圖像的三維數(shù)據(jù)獲取是最具發(fā)展前景和應(yīng)用價(jià)值的,并且方便圖像的處理,也擁有更廣泛的視角。同時(shí)圖像匹配方法通常應(yīng)用在圖像處理方面,其主要是針對(duì)不同視角、不一樣的方式獲得的圖像,通過(guò)匹配算法,找出圖像之間紋理、特征、結(jié)構(gòu)等的相似性和一致性,進(jìn)而找出相似圖像。其中特征匹配成為圖像領(lǐng)域中的熱點(diǎn)問(wèn)題,高精度的特征匹配能夠更好得到三維建模所需要的條件。這樣我們就有必要應(yīng)用更好的更加低廉的實(shí)時(shí)處理算法。
目前,有許多特征點(diǎn)檢測(cè)和算法提取方法?,F(xiàn)階段主流算法有采用角點(diǎn)提取的Harris算法與點(diǎn)提取的SIFT算法、FAST算法、SURF算法、ORB算法。Harris角點(diǎn)檢測(cè)算法基于灰度圖像,并設(shè)計(jì)局部檢測(cè)窗口,使窗口在所有方向上略微移動(dòng)[1]。當(dāng)檢測(cè)中能量變化大于閾值,那么其中心像素會(huì)被選取為角點(diǎn)[2]。該算法簡(jiǎn)單而穩(wěn)定,它不受照明,旋轉(zhuǎn)和噪聲的影響,但是當(dāng)圖像比例改變時(shí),特征點(diǎn)會(huì)發(fā)生顯著變化。FAST算法是加速算法。SURF是SIFT算法的加速版本,ORB是FAST和描述符的組合。所有加速算法都有少量特征點(diǎn),卻因?yàn)辄c(diǎn)變少,導(dǎo)致精度變差,加大了誤差。首先對(duì)參考圖像和場(chǎng)景圖像進(jìn)行離散小波變換,提取兩幅圖像的低頻部分,然后利用Harris角點(diǎn)檢測(cè)來(lái)檢測(cè)其低頻部分的感興趣點(diǎn),確定場(chǎng)景的匹配候選區(qū)域。
我們可以學(xué)習(xí)每次通過(guò)小波分解分解低頻f0的二維小波分析分解成因此,通過(guò)db小波變換,每部分圖像的大小將減小到之前圖片的1/4大小。為了獲得有效且準(zhǔn)確的匹配圖像,最初圖像的大小應(yīng)滿(mǎn)足式(1):
其中L是分解的最大次數(shù),圖像大小是N×N。
harris角點(diǎn)檢測(cè)算法是由 C.Harris和 M.Stephens 在H.Moravec 工作時(shí)受啟發(fā)于 1988 年提出的。此方法是對(duì)Moravec 算法的擴(kuò)充與完善。為了相對(duì)減少噪聲的影響我們采取高斯函數(shù),這是因?yàn)橐浑A方向差分對(duì)噪聲敏感。如果R超過(guò)某個(gè)閾值,則將該點(diǎn)作為角點(diǎn)。再采用Harris 算法提取圖像特征點(diǎn)時(shí)。基本能夠劃分成下面幾個(gè)階段:
首先分別計(jì)算像素點(diǎn)在x和y方向上的梯度Ix和Iy,再計(jì)算每個(gè)像素點(diǎn)對(duì)應(yīng)的梯度乘積 即[3]得到自相關(guān)矩陣M1,如式(2)所示。
利用高斯核函數(shù)G=(x,y,σ)進(jìn)行高斯濾波,于是有新的自相關(guān)矩陣M2。
利用角點(diǎn)響應(yīng)函數(shù)R求解初始圖片里一一對(duì)應(yīng)的像素點(diǎn)響應(yīng)值,即R值。其中角點(diǎn)響應(yīng)函數(shù)R=Det(M2)-k?Tr(M2),Det(M2)=λ1λ2,Tr(M2)=λ1+λ2,其中λ1,λ2為自相關(guān)矩陣M2的特征值,k為經(jīng)驗(yàn)值。若是某點(diǎn)的角點(diǎn)響應(yīng)值R超過(guò)預(yù)先選好的閾值大小,那么這個(gè)點(diǎn)就被選定為特征點(diǎn)[4]。選取局部的極值點(diǎn):根據(jù)給定的閾值,采用非極大值抑制的方法對(duì)不符合條件的極值進(jìn)行置零處理,以確定最終的特征點(diǎn)。
1999年,Lowe首次提出關(guān)于尺度不變特征變換(SIFT)局部特征。該算法對(duì)于旋轉(zhuǎn),仿射變換和視點(diǎn)變化方面比其他方法更 具有魯棒性和高效性。SIFT算法在灰度圖像特征檢測(cè)中顯示了相當(dāng)不錯(cuò)的性能。SIFT算法的過(guò)程可以簡(jiǎn)述如下。
階段1:SIFT在高斯(DoG)標(biāo)度空間的差異中檢測(cè)局部極值。輸入圖像f(x,y)與具有不同尺度kσ的高斯濾波器G(x,y,kσ)卷積以獲得尺度空間L(x,y,kσ),k= 1,2...,?。隨后,可以通過(guò)獲得DoG標(biāo)度空間:
其中D(x,y,σ)是高斯差分圖像,G(x,y,σ)是高斯濾波器,L(x,y,σ)是比例空間的比例表示。在DoG空間中,可以使用搜索局部極值的方法判斷來(lái)尺度和方向不變的潛在興趣點(diǎn)。當(dāng)?shù)氐臉O值是第二階段標(biāo)記的關(guān)鍵點(diǎn)的候選者。
圖1顯示了高斯尺度空間金字塔,高斯金字塔在差異里創(chuàng)建了一個(gè)區(qū)間。為了觀察并得到G(x,y,σ)的局部最大值和最小值,把所有的采樣點(diǎn)和其圖像中的上面八個(gè)鄰居點(diǎn)和下面九個(gè)鄰居點(diǎn)相比較。
圖1 高斯尺度空間金字塔在差異里創(chuàng)建一個(gè)區(qū)間
圖2 高斯差分圖像中的最大值和最小值檢測(cè)
階段2:通過(guò)選擇符合詳細(xì)定義模型要求的局部極值來(lái)定位關(guān)鍵點(diǎn)。在該模型中,在DoG空間的不同尺度上具有高穩(wěn)定性的候選點(diǎn)被標(biāo)記為關(guān)鍵點(diǎn)。
階段3:有關(guān)局部圖像梯度方向?qū)⒁环N或多種取向分到所有關(guān)鍵點(diǎn)位置。所有做法都是對(duì)比于所有特征的指定方位,由比例與位置發(fā)生變換的圖像數(shù)據(jù)所處理的,進(jìn)而給上述變換提供不變性。
階段4:最終生成關(guān)鍵點(diǎn)描述符。它使用梯度幅度m(x,y)與方向θ(x,y)作為描述符中的基本元素,它們的定義如下:
原算法的描述子因?yàn)榫S數(shù)太高,這導(dǎo)致構(gòu)建特征描述子以及最后進(jìn)行匹配都需要很長(zhǎng)時(shí)間。也因?yàn)殛P(guān)鍵點(diǎn)的增加錯(cuò)誤匹配概率上升,剔除錯(cuò)誤匹配的耗時(shí)增加,很難滿(mǎn)足對(duì)時(shí)間的要求。由于關(guān)鍵點(diǎn)的特征描述子不僅與該點(diǎn)所在的像素有關(guān),也和該點(diǎn)周?chē)南袼貐^(qū)域有關(guān),它們對(duì)描述子的貢獻(xiàn)與距離的大小成正比,因此還要考慮距離的問(wèn)題,對(duì)各個(gè)區(qū)域與關(guān)鍵點(diǎn)的距離進(jìn)行加權(quán),得到新的特征描述子[5]。圓形區(qū)域比正方形區(qū)域含有更少的像素點(diǎn),剔除了邊緣易受干擾的像素點(diǎn),使得計(jì)算梯度描述子的時(shí)間有所縮短,相似性加強(qiáng)。
如圖3,在圓形部分劃分8個(gè)小區(qū)域用公式(3)、(4)計(jì)算每個(gè)像素的幅值與幅角。圓形分為8個(gè)區(qū)域即45度為一個(gè)區(qū)域。每個(gè)像素點(diǎn)根據(jù)其幅角判斷位置,找到后進(jìn)行高斯加權(quán)并加到相關(guān)區(qū)域。加權(quán)系數(shù)為:
圖3 新描述子和梯度方向
(i0,j0),(i,j)分別為所求像素點(diǎn)和中心點(diǎn)在待描述圖像區(qū)域中的坐標(biāo),σ0為選定的常數(shù)[6],這樣就得到了64維梯度描述子。
為加快速度,本文對(duì)提取的特征點(diǎn)進(jìn)行構(gòu)建二維KD樹(shù)。通過(guò) KD 樹(shù)搜索鄰近點(diǎn)后利用比值提純法獲取粗匹配。再利用RANSAC剔除錯(cuò)誤匹配
RANSAC其本身就是依據(jù)一組含有非正確數(shù)據(jù)的樣本數(shù)據(jù)集。RANSAC是為得到正確且有效的數(shù)據(jù)的方法,其通過(guò)計(jì)算解得數(shù)據(jù)本身的模型參數(shù)。它于1981年由 Fischler和Bolles最先提出。RANSAC算法的基本假設(shè)是樣本中包含正確數(shù)據(jù),也包含異常數(shù)據(jù),即數(shù)據(jù)集中含有噪聲。得到的錯(cuò)誤數(shù)據(jù)有一部分原因是因?yàn)闇y(cè)量時(shí)出現(xiàn)誤差、假設(shè)預(yù)期相差很多、計(jì)算出現(xiàn)錯(cuò)誤。給出進(jìn)行解決所需要正確參考數(shù)據(jù),在給出數(shù)據(jù)時(shí)RANSAC則需要假設(shè),這樣就是能夠找到計(jì)算出最適合給出數(shù)據(jù)的模型參數(shù)的算法。
因?yàn)槭鞘褂靡环鶊D像,那么能夠把它定義成剛性的。這樣能夠在pattern image與query image的不同特征點(diǎn)間尋找其中單應(yīng)性變換。若是發(fā)現(xiàn)能夠發(fā)現(xiàn)單應(yīng)性變換,那么就可以運(yùn)用RANSAC來(lái)找到合適的單應(yīng)性矩陣。這樣就可以剔除一部分錯(cuò)誤匹配。
本實(shí)驗(yàn)是在Windows 7 系統(tǒng)下以Matlab 2016B作為開(kāi)發(fā)環(huán)境,圖3為經(jīng)典的Lena照片,第二張為稍微旋轉(zhuǎn)之圖像,圖4—圖6為幾種算法的效果圖。圖7—圖9為另一幅圖片幾種算法的效果圖。表1為幾種算法效果數(shù)字比較。
圖3 Lena照片與稍微旋轉(zhuǎn)片
圖4 SIFT檢測(cè)
圖5 SURF檢測(cè)
圖6 本文算法
圖7 SIFT檢測(cè)
圖8 SURF檢測(cè)
圖9 本文算法
表1 幾種算法效果數(shù)字比較
改進(jìn)后的新算法具有相對(duì)不錯(cuò)的魯棒性,跟SIFT相比,新算法因?yàn)榻屈c(diǎn)檢測(cè)去篩選了邊緣信息小的點(diǎn),信息密集的點(diǎn)則用了改進(jìn)的SIFT算法。所以可以有效提高準(zhǔn)確率,匹配精度??梢愿玫耐瓿蔀槿S重建的匹配工作。
本文提出的改進(jìn)算法不僅在低頻部分運(yùn)用了小波變換與角點(diǎn)檢測(cè),而且新算法也改變了原描述子,以此來(lái)降低維度,提高匹配的實(shí)時(shí)性。之后實(shí)驗(yàn)首先用KD樹(shù)做粗匹配,再用RANSAC來(lái)找到合適的單應(yīng)性矩陣。這樣就可以剔除一部分錯(cuò)誤匹配。新算法匹配正確率有了相對(duì)不錯(cuò)的提高,這樣就能更好地應(yīng)用在三維重建中去。