黃一昕
(中國鐵路經濟規劃研究院有限公司,北京 100038)
無人機傾斜攝影技術是一項全新的測繪手段,已在各行業得到廣泛的應用,并展現出巨大的價值與潛力[1]。該技術以無人機為載體,通過傳感器等設備進行信息的收集、儲存及共享,全方位真實反饋地物具體情況[2]。在鐵路行業,無人機傾斜攝影技術多用于生產實景三維模型,并作為底圖與精細化的BIM模型集成,對鐵路前期的設計選線及后期的匯報展示等工作具有重要意義。
受拍攝設備及飛行環境的影響,無人機影像具有數據量大,姿態不穩定等問題[3],利用傳統SIFT算法進行影像匹配時,通常以犧牲時間為代價來提升影像匹配的正確率。為有效解決無人機影像的匹配問題,研究人員已進行大量研究。何孝瑩等針對無人機影像提出分塊匹配策略,認為采用該策略可以大幅提高正確率,減少計算用時[4];任偉建等利用箱式濾波器對圖像進行尺度空間運算,通過引入SURF算子來降低特征向量維數,達到縮短圖像匹配時間,提高運算速度的目的[5];張慶功等在不改變原算法的基礎上,利用GPU對SIFT算法進行并行處理,在保證良好特征點提取和匹配效果的前提下取得良好的加速比,大大節省計算時間[6]。孫鵬等提出了一種基于數字信號處理器(DSP)內核硬件乘法器處理單精度浮點型像素數據乘法的算法,實踐證明,該方案可以滿足無人機組網遙感影像臨場處理對SIFT算法的實時快速要求[7]。由此可見,減少運算時間,提升運算效率是無人機影像匹配的關鍵。
鐵路無人機傾斜影像是沿鐵路線路一定范圍內進行拍攝的,涉及大量鐵路、房屋、道路、密林等地物,影像數據量大,對匹配效率和正確率要求較高。受地質環境、地形起伏等因素的影響,影片間會具有不同的傾角及旋角,這對保持影像特征點的旋轉不變性造成一定影響。以下針對鐵路無人機影像匹配,提出一種減小尺度空間與降低描述符維度相結合的改進算法。
圖像匹配技術是利用無人機傾斜影像生產實景三維模型的核心,主要基于灰度的匹配算法、基于特征的匹配算法、基于解釋的匹配算法[8],SIFT(Scale-invariant feature transform)算法為特征匹配算法中的一種,即尺度不變特征變換,是圖像處理領域的一種描述[9]。SIFT算法提取的圖像局部特征對旋轉、尺度縮放、亮度變化保持不變性,對視角變化、仿射變換、噪聲也可保持一定程度的穩定性[10]。由于提取的特征信息量豐富,即使少數幾個物體也可產生大量的SIFT特征向量,適用于在海量特征數據庫中進行快速、準確的匹配。近年來,SIFT已經成功應用于圖像拼接、視頻識別和檢索、計算機視覺及目標識別等眾多領域[11]。
SIFT算法的計算大致可分為尺度空間的建立、特征點(極值點)檢測、分配關鍵點的主方向、計算特征描述符4個步驟,見圖1。

圖1 SIFT算法流程
構建多尺度空間的目的是通過連續變化的尺度參數獲得不同尺度下視覺處理信息, 然后綜合這些信息深入挖掘圖像的本質特征[12]。通常,同一目標物體在不同尺度圖像上會展現出不同的細節信息,即只有當一個物體處于一定的尺度范圍之內才是有意義的。通過對圖像進行多尺度空間變換,為后續獲取圖像的特征點創造條件。通常,利用高斯卷積核(Gaussian Kernels)進行圖像的尺度變換[13],計算公式為

(1)
L(x,y,σ)=G(x,y,σ)?I(x,y)
(2)
其中,G(x,y,σ)表示二維高斯函數;?表示圖像間的卷積運算;I(x,y)表示輸入的圖像;L(x,y,σ)表示經高斯卷積運算后生成的尺度空間圖像;σ表示尺度因子。在構建尺度空間時,首先通過高斯卷積函數運算生成不同尺度的高斯金字塔,之后將高斯金字塔相鄰兩層相減,生成高斯差分金字塔,見圖2。

圖2 尺度空間示意
特征點(極值點)檢測是在生成的差分高斯金字塔內尋找極大值或極小值點。通常,如果圖像中的某一點在本層以及向下一層與向上一層對應的所有鄰域范圍內都是極大值或極小值點,則取該點為圖像的極值點。在獲取極值點的位置信息和尺度信息后,還需去除低對比度極值點和不穩定的邊緣響應點。一般情況下,采用在極值點周圍進行Taylor函數展開[14],以確定精確極值點位置,并去除對比度低的點,再用Hessian矩陣計算主曲率去掉不穩定的邊緣響應點[15]。
選取距離特征點尺度σ最近的高斯圖像,計算以特征點為中心的一定范圍內所有像素點的梯度值和方向,并使用直方圖進行統計。首先,將360°按照每10°分為一段,共分為36段。分別計算特征點的梯度方向在每一段的權重累加值,此時梯度值即為權重。梯度m(x,y)和方向θ(x,y)計算公式為
m(x,y)=[(L(x+1,y)-L(x-1,y))2+

(3)

(4)
式中,L(x,y)為關鍵點所在的高斯圖像。
將坐標軸旋轉到關鍵點的主方向,確保圖像的旋轉不變性,再計算以關鍵點為中心的16×16的窗口內所有像素點的梯度值和梯度方向。窗口內的每個小格代表關鍵點鄰域所在尺度空間的一個像素,然后再將所選鄰域分為4×4子區域,見圖3。分別計算8個梯度方向在4×4區域的累加值。最終,每個特征點可生成d=4×4×8=128的向量。

圖3 原始SIFT特征描述符示意
在對原算法進行深入分析后,決定對尺度空間和特征描述符兩個方面進行改進,見圖4。

圖4 SIFT算法的主要改進步驟
在構建尺度空間時,由于無人機影像數據量大,有必要通過減少金字塔影像的組數(Octave,O)來提升計算效率,減少用時。O的計算公式為
O={lg2(min(M,N))}
(5)
其中,M,N分別代表圖像的行、列數,{}為取整運算。經分析后,僅使用前2組金字塔影像進行特征點提取。
在構建特征描述符時,同樣選取特征點周圍16×16窗口區域。此時,在窗口范圍內選取半徑R∈(1, 8)的圓形區域進行計算,并非傳統SIFT算法中的正方向區域。可生成8個半徑不等的圓環,見圖5。首先,在每個圓環區域內計算所有像素點的梯度值和梯度方向。之后,計算每個像素點在0°、45°、90°、135°、180°、225°、270°、315°這8個方向上的梯度累加值并進行排序和直方圖均一化操作。最終,每個圓環內均可獲得8個方向的梯度累加值。8個圓環即可獲得d=8×8=64維的特征描述符向量。
為驗證改進后SIFT算法對鐵路無人機傾斜影像的匹配效果,選取某鐵路沿線周邊的無人機傾斜影像進行兩組實驗。第一組實驗所用影像包含了鐵路線路周邊的房屋、橋梁等地物,見圖6 (a)、圖6 (b);第二組實驗所用影像包含了鐵路、道路及周邊樹木等地物,見圖6 (c)、圖6 (d)。兩幅影像均涉及大量鐵路周邊特征地物,具有代表性。

圖6 某鐵路沿線周邊無人機傾斜影像
實驗硬件環境為Thinkpad筆記本電腦,處理器:CORE i7 7500;內存:8 GB;CPU主頻:2.90 GHz;編譯環境:Python3.7和OpenCV3.4.2。
實驗一結果見表1。

表1 實驗一匹配結果數據
由表1可知,當O=2時,即只取前2組影像參與計算時,兩幅影像中提取到的特征點個數分別為1 560、1 644,約占特征點總個數的90%。此時,提取特征點個數與原算法的特征點個數差別不大,這是由于影像本身較大且包含豐富的地物紋理信息及灰度信息。匹配結果的正確率相比原算法稍有下降,但是運算效率較原算法提升13.4%。
在取O=2、d=64時,共得到38個匹配對,其中,錯誤匹配數為6對。與原始SIFT算法得到的161總匹配對、38個錯誤匹配對相比,正確率由原來的76.4%提升至84.2%,用時率較之前提升了45.8%,達到預期效果。改進后的算法對房屋、道路、橋體識別較好,點對分布均勻,但是對于陰影所在的區域出現錯誤匹配點,見圖7。

圖7 實驗一匹配結果圖像
實驗二結果見表2。
由表2可知,當O=2時,兩幅影像中提取到的特征點個數較原始算法有所減少,運算效率較之前提升了24.9%,但正確率稍有降低。

表2 實驗二匹配結果數據
當O=2、d=64時,得到的最終匹配對數由最初的75對下降到25對,正確率與原算法基本持平,用時率較之前提升了58%。改進后的算法對房屋、道路及鐵路的識別較好,見圖8。但對于密林,出現的錯誤匹配點數增稍有增加,這是由于降低尺度后,圖像部分細節信息丟失造成的。

圖8 實驗二匹配結果圖像
從以上兩組實驗可知,通過對原始SIFT算法進行減小尺度和降低維度的改進后,可以在確保正確率的前提下減少圖像的匹配對數,從而提升運算效率。針對鐵路無人機傾斜影像涉及的房屋、道路、鐵路、橋梁等地物,改進后的算法表現出高適應性,極大降低圖像匹配的誤配率。對于密林、陰影部分地物,雖然精度稍有下降,但在可接受范圍內,同時降低了匹配所用的時間,不影響圖像整體匹配結果。此外,針對圖像旋轉問題,其結果依舊表現出高穩定性。
在深入研究經典SIFT算法進行圖像匹配的基礎上,提出一種減小圖像尺度空間與降低描述符維度相結合的改進算法,有效解決了鐵路無人機傾斜影像間的匹配問題,在確保正確率的條件下,提高算法效率,縮短圖像匹配時間。改進后SIFT算法的缺點是對影像中密林、草地、陰影部分的特征點匹配不夠精確,這是由于影像中陰影及植被覆蓋地區灰度值變化不明顯,造成特征點提取困難。因此,如何在密林及陰影區域提取特征點,提升匹配的魯棒性是值得進一步深入研究的問題。