黃一昕
(中國鐵路經(jīng)濟(jì)規(guī)劃研究院有限公司,北京 100038)
無人機(jī)傾斜攝影技術(shù)是一項(xiàng)全新的測繪手段,已在各行業(yè)得到廣泛的應(yīng)用,并展現(xiàn)出巨大的價(jià)值與潛力[1]。該技術(shù)以無人機(jī)為載體,通過傳感器等設(shè)備進(jìn)行信息的收集、儲(chǔ)存及共享,全方位真實(shí)反饋地物具體情況[2]。在鐵路行業(yè),無人機(jī)傾斜攝影技術(shù)多用于生產(chǎn)實(shí)景三維模型,并作為底圖與精細(xì)化的BIM模型集成,對鐵路前期的設(shè)計(jì)選線及后期的匯報(bào)展示等工作具有重要意義。
受拍攝設(shè)備及飛行環(huán)境的影響,無人機(jī)影像具有數(shù)據(jù)量大,姿態(tài)不穩(wěn)定等問題[3],利用傳統(tǒng)SIFT算法進(jìn)行影像匹配時(shí),通常以犧牲時(shí)間為代價(jià)來提升影像匹配的正確率。為有效解決無人機(jī)影像的匹配問題,研究人員已進(jìn)行大量研究。何孝瑩等針對無人機(jī)影像提出分塊匹配策略,認(rèn)為采用該策略可以大幅提高正確率,減少計(jì)算用時(shí)[4];任偉建等利用箱式濾波器對圖像進(jìn)行尺度空間運(yùn)算,通過引入SURF算子來降低特征向量維數(shù),達(dá)到縮短圖像匹配時(shí)間,提高運(yùn)算速度的目的[5];張慶功等在不改變原算法的基礎(chǔ)上,利用GPU對SIFT算法進(jìn)行并行處理,在保證良好特征點(diǎn)提取和匹配效果的前提下取得良好的加速比,大大節(jié)省計(jì)算時(shí)間[6]。孫鵬等提出了一種基于數(shù)字信號(hào)處理器(DSP)內(nèi)核硬件乘法器處理單精度浮點(diǎn)型像素?cái)?shù)據(jù)乘法的算法,實(shí)踐證明,該方案可以滿足無人機(jī)組網(wǎng)遙感影像臨場處理對SIFT算法的實(shí)時(shí)快速要求[7]。由此可見,減少運(yùn)算時(shí)間,提升運(yùn)算效率是無人機(jī)影像匹配的關(guān)鍵。
鐵路無人機(jī)傾斜影像是沿鐵路線路一定范圍內(nèi)進(jìn)行拍攝的,涉及大量鐵路、房屋、道路、密林等地物,影像數(shù)據(jù)量大,對匹配效率和正確率要求較高。受地質(zhì)環(huán)境、地形起伏等因素的影響,影片間會(huì)具有不同的傾角及旋角,這對保持影像特征點(diǎn)的旋轉(zhuǎn)不變性造成一定影響。以下針對鐵路無人機(jī)影像匹配,提出一種減小尺度空間與降低描述符維度相結(jié)合的改進(jìn)算法。
圖像匹配技術(shù)是利用無人機(jī)傾斜影像生產(chǎn)實(shí)景三維模型的核心,主要基于灰度的匹配算法、基于特征的匹配算法、基于解釋的匹配算法[8],SIFT(Scale-invariant feature transform)算法為特征匹配算法中的一種,即尺度不變特征變換,是圖像處理領(lǐng)域的一種描述[9]。SIFT算法提取的圖像局部特征對旋轉(zhuǎn)、尺度縮放、亮度變化保持不變性,對視角變化、仿射變換、噪聲也可保持一定程度的穩(wěn)定性[10]。由于提取的特征信息量豐富,即使少數(shù)幾個(gè)物體也可產(chǎn)生大量的SIFT特征向量,適用于在海量特征數(shù)據(jù)庫中進(jìn)行快速、準(zhǔn)確的匹配。近年來,SIFT已經(jīng)成功應(yīng)用于圖像拼接、視頻識(shí)別和檢索、計(jì)算機(jī)視覺及目標(biāo)識(shí)別等眾多領(lǐng)域[11]。
SIFT算法的計(jì)算大致可分為尺度空間的建立、特征點(diǎn)(極值點(diǎn))檢測、分配關(guān)鍵點(diǎn)的主方向、計(jì)算特征描述符4個(gè)步驟,見圖1。
圖1 SIFT算法流程
構(gòu)建多尺度空間的目的是通過連續(xù)變化的尺度參數(shù)獲得不同尺度下視覺處理信息, 然后綜合這些信息深入挖掘圖像的本質(zhì)特征[12]。通常,同一目標(biāo)物體在不同尺度圖像上會(huì)展現(xiàn)出不同的細(xì)節(jié)信息,即只有當(dāng)一個(gè)物體處于一定的尺度范圍之內(nèi)才是有意義的。通過對圖像進(jìn)行多尺度空間變換,為后續(xù)獲取圖像的特征點(diǎn)創(chuàng)造條件。通常,利用高斯卷積核(Gaussian Kernels)進(jìn)行圖像的尺度變換[13],計(jì)算公式為
(1)
L(x,y,σ)=G(x,y,σ)?I(x,y)
(2)
其中,G(x,y,σ)表示二維高斯函數(shù);?表示圖像間的卷積運(yùn)算;I(x,y)表示輸入的圖像;L(x,y,σ)表示經(jīng)高斯卷積運(yùn)算后生成的尺度空間圖像;σ表示尺度因子。在構(gòu)建尺度空間時(shí),首先通過高斯卷積函數(shù)運(yùn)算生成不同尺度的高斯金字塔,之后將高斯金字塔相鄰兩層相減,生成高斯差分金字塔,見圖2。
圖2 尺度空間示意
特征點(diǎn)(極值點(diǎn))檢測是在生成的差分高斯金字塔內(nèi)尋找極大值或極小值點(diǎn)。通常,如果圖像中的某一點(diǎn)在本層以及向下一層與向上一層對應(yīng)的所有鄰域范圍內(nèi)都是極大值或極小值點(diǎn),則取該點(diǎn)為圖像的極值點(diǎn)。在獲取極值點(diǎn)的位置信息和尺度信息后,還需去除低對比度極值點(diǎn)和不穩(wěn)定的邊緣響應(yīng)點(diǎn)。一般情況下,采用在極值點(diǎn)周圍進(jìn)行Taylor函數(shù)展開[14],以確定精確極值點(diǎn)位置,并去除對比度低的點(diǎn),再用Hessian矩陣計(jì)算主曲率去掉不穩(wěn)定的邊緣響應(yīng)點(diǎn)[15]。
選取距離特征點(diǎn)尺度σ最近的高斯圖像,計(jì)算以特征點(diǎn)為中心的一定范圍內(nèi)所有像素點(diǎn)的梯度值和方向,并使用直方圖進(jìn)行統(tǒng)計(jì)。首先,將360°按照每10°分為一段,共分為36段。分別計(jì)算特征點(diǎn)的梯度方向在每一段的權(quán)重累加值,此時(shí)梯度值即為權(quán)重。梯度m(x,y)和方向θ(x,y)計(jì)算公式為
m(x,y)=[(L(x+1,y)-L(x-1,y))2+
(3)
(4)
式中,L(x,y)為關(guān)鍵點(diǎn)所在的高斯圖像。
將坐標(biāo)軸旋轉(zhuǎn)到關(guān)鍵點(diǎn)的主方向,確保圖像的旋轉(zhuǎn)不變性,再計(jì)算以關(guān)鍵點(diǎn)為中心的16×16的窗口內(nèi)所有像素點(diǎn)的梯度值和梯度方向。窗口內(nèi)的每個(gè)小格代表關(guān)鍵點(diǎn)鄰域所在尺度空間的一個(gè)像素,然后再將所選鄰域分為4×4子區(qū)域,見圖3。分別計(jì)算8個(gè)梯度方向在4×4區(qū)域的累加值。最終,每個(gè)特征點(diǎn)可生成d=4×4×8=128的向量。
圖3 原始SIFT特征描述符示意
在對原算法進(jìn)行深入分析后,決定對尺度空間和特征描述符兩個(gè)方面進(jìn)行改進(jìn),見圖4。
圖4 SIFT算法的主要改進(jìn)步驟
在構(gòu)建尺度空間時(shí),由于無人機(jī)影像數(shù)據(jù)量大,有必要通過減少金字塔影像的組數(shù)(Octave,O)來提升計(jì)算效率,減少用時(shí)。O的計(jì)算公式為
O={lg2(min(M,N))}
(5)
其中,M,N分別代表圖像的行、列數(shù),{}為取整運(yùn)算。經(jīng)分析后,僅使用前2組金字塔影像進(jìn)行特征點(diǎn)提取。
在構(gòu)建特征描述符時(shí),同樣選取特征點(diǎn)周圍16×16窗口區(qū)域。此時(shí),在窗口范圍內(nèi)選取半徑R∈(1, 8)的圓形區(qū)域進(jìn)行計(jì)算,并非傳統(tǒng)SIFT算法中的正方向區(qū)域??缮?個(gè)半徑不等的圓環(huán),見圖5。首先,在每個(gè)圓環(huán)區(qū)域內(nèi)計(jì)算所有像素點(diǎn)的梯度值和梯度方向。之后,計(jì)算每個(gè)像素點(diǎn)在0°、45°、90°、135°、180°、225°、270°、315°這8個(gè)方向上的梯度累加值并進(jìn)行排序和直方圖均一化操作。最終,每個(gè)圓環(huán)內(nèi)均可獲得8個(gè)方向的梯度累加值。8個(gè)圓環(huán)即可獲得d=8×8=64維的特征描述符向量。
為驗(yàn)證改進(jìn)后SIFT算法對鐵路無人機(jī)傾斜影像的匹配效果,選取某鐵路沿線周邊的無人機(jī)傾斜影像進(jìn)行兩組實(shí)驗(yàn)。第一組實(shí)驗(yàn)所用影像包含了鐵路線路周邊的房屋、橋梁等地物,見圖6 (a)、圖6 (b);第二組實(shí)驗(yàn)所用影像包含了鐵路、道路及周邊樹木等地物,見圖6 (c)、圖6 (d)。兩幅影像均涉及大量鐵路周邊特征地物,具有代表性。
圖6 某鐵路沿線周邊無人機(jī)傾斜影像
實(shí)驗(yàn)硬件環(huán)境為Thinkpad筆記本電腦,處理器:CORE i7 7500;內(nèi)存:8 GB;CPU主頻:2.90 GHz;編譯環(huán)境:Python3.7和OpenCV3.4.2。
實(shí)驗(yàn)一結(jié)果見表1。
表1 實(shí)驗(yàn)一匹配結(jié)果數(shù)據(jù)
由表1可知,當(dāng)O=2時(shí),即只取前2組影像參與計(jì)算時(shí),兩幅影像中提取到的特征點(diǎn)個(gè)數(shù)分別為1 560、1 644,約占特征點(diǎn)總個(gè)數(shù)的90%。此時(shí),提取特征點(diǎn)個(gè)數(shù)與原算法的特征點(diǎn)個(gè)數(shù)差別不大,這是由于影像本身較大且包含豐富的地物紋理信息及灰度信息。匹配結(jié)果的正確率相比原算法稍有下降,但是運(yùn)算效率較原算法提升13.4%。
在取O=2、d=64時(shí),共得到38個(gè)匹配對,其中,錯(cuò)誤匹配數(shù)為6對。與原始SIFT算法得到的161總匹配對、38個(gè)錯(cuò)誤匹配對相比,正確率由原來的76.4%提升至84.2%,用時(shí)率較之前提升了45.8%,達(dá)到預(yù)期效果。改進(jìn)后的算法對房屋、道路、橋體識(shí)別較好,點(diǎn)對分布均勻,但是對于陰影所在的區(qū)域出現(xiàn)錯(cuò)誤匹配點(diǎn),見圖7。
圖7 實(shí)驗(yàn)一匹配結(jié)果圖像
實(shí)驗(yàn)二結(jié)果見表2。
由表2可知,當(dāng)O=2時(shí),兩幅影像中提取到的特征點(diǎn)個(gè)數(shù)較原始算法有所減少,運(yùn)算效率較之前提升了24.9%,但正確率稍有降低。
表2 實(shí)驗(yàn)二匹配結(jié)果數(shù)據(jù)
當(dāng)O=2、d=64時(shí),得到的最終匹配對數(shù)由最初的75對下降到25對,正確率與原算法基本持平,用時(shí)率較之前提升了58%。改進(jìn)后的算法對房屋、道路及鐵路的識(shí)別較好,見圖8。但對于密林,出現(xiàn)的錯(cuò)誤匹配點(diǎn)數(shù)增稍有增加,這是由于降低尺度后,圖像部分細(xì)節(jié)信息丟失造成的。
圖8 實(shí)驗(yàn)二匹配結(jié)果圖像
從以上兩組實(shí)驗(yàn)可知,通過對原始SIFT算法進(jìn)行減小尺度和降低維度的改進(jìn)后,可以在確保正確率的前提下減少圖像的匹配對數(shù),從而提升運(yùn)算效率。針對鐵路無人機(jī)傾斜影像涉及的房屋、道路、鐵路、橋梁等地物,改進(jìn)后的算法表現(xiàn)出高適應(yīng)性,極大降低圖像匹配的誤配率。對于密林、陰影部分地物,雖然精度稍有下降,但在可接受范圍內(nèi),同時(shí)降低了匹配所用的時(shí)間,不影響圖像整體匹配結(jié)果。此外,針對圖像旋轉(zhuǎn)問題,其結(jié)果依舊表現(xiàn)出高穩(wěn)定性。
在深入研究經(jīng)典SIFT算法進(jìn)行圖像匹配的基礎(chǔ)上,提出一種減小圖像尺度空間與降低描述符維度相結(jié)合的改進(jìn)算法,有效解決了鐵路無人機(jī)傾斜影像間的匹配問題,在確保正確率的條件下,提高算法效率,縮短圖像匹配時(shí)間。改進(jìn)后SIFT算法的缺點(diǎn)是對影像中密林、草地、陰影部分的特征點(diǎn)匹配不夠精確,這是由于影像中陰影及植被覆蓋地區(qū)灰度值變化不明顯,造成特征點(diǎn)提取困難。因此,如何在密林及陰影區(qū)域提取特征點(diǎn),提升匹配的魯棒性是值得進(jìn)一步深入研究的問題。