孫樹承 王儒壯 溫瓊華
(海口市信息中心, 海南 海口 570312)
移動測量技術目前已在軍事、鐵路管理、公路管理等領域得到廣泛應用,憑借其高效率、低成本、數據融合性好的特征,移動測量技術在電子地圖導航和服務方面得到深度應用,百度、谷歌街景已將之作為地面實景數據采集的重要手段之一[1]。移動測量的本質是數字化近景攝影測量,在獲取原始立體影像對的同時,連同他們的外方位元素一起獲取,作為數字可量測影像(digital measurable images,DMI)存儲和管理起來,為互聯網地圖和地理信息服務[2]。DMI最初應用于地理信息空間服務[3],近年來,DMI應用趨向泛化,如彭劍秋等人應用移動測量系統為地下管線管理信息系統提供一種新的成果——三維實景影像,為管線分析提供數字化可量測框架[4]。胡慶武等人提出了基于可量測實景影像公路地理信息平臺,實現了可量測的應用[5],楊沾吉提出了一種可量測圖像數字城管系統[6],呂志慧等人將移動測量技術應用于河道測量[7],謝孔振將移動測量技術應用于逆向建模[8]。無論基于哪方面應用,DMI拼接都是最基本的處理方法,傳統的拼接方式是人工拼接,工作量大、效率低下、錯誤率較高,因此近年來基于人工智能和計算機視覺方面的研究越來越多[9]。本文基于地面移動測量系統,獲取了海口市南渡江高清全景影像數據,并在開源的計算機視覺框架(OpenCV)進行了像素級拼接,有效提高了DMI的拼接效率和精度。
海口市是海南省省會,位于北緯19°32′~20°05′,東經110°10′~110°41′,地處海南島北部,土地面積2 304.84 km2,全省政治、經濟、科技、文化中心,交通郵電樞紐。海口市略呈長心形,地勢平緩。海南島最長的河流——南渡江從海口市中部穿過。南渡江東部自南向北略有傾斜,南渡江西部自北向南傾斜;西北部和東南部較高,中部南渡江沿岸低平,北部多為沿海小平原。高清全景影像經項目策劃、外業采集、外業數據后處理及質檢、內業處理、數據加密、數據發布、數據部署、線上質檢、地圖審圖九道工序后,可用于整合服務數字網絡(integrated service digital network,ISDN)互聯網發布,主要分為外業數據采集處理及內業數據處理兩大工序[10]。
實景導航外業采集包括外業采集計劃制定、全景相機參數評定、采集前行車路線規劃、測前準備、外業采集、外業成果處理、外業數據質檢、數據提交八個程序,其過程如圖1(a)所示。
內業生產包括外業數據驗收及idx編輯、全景拼接、全景影像質量及保密檢查、影像質檢、隱私模糊化處理、comapper數據源整理、路網采集及質檢、路網關聯及質檢、坐標加密、數據發布、最終成果質檢等幾大工序,其生產過程如圖1(b)所示。

(a)外業數據采集 (b)內業數據采集
尺度不變特征變換(scale-invariant feature transform,SIFT)圖像特征提取算法能夠在不同尺度空間上搜索出關鍵點,并且計算這些關鍵點的大小、方向和尺度信息。自1999年提出以來,陸續出現了多種改進方法[11-12]。SIFT算法的計算過程是:首先根據需要構建圖像的尺度空間,檢測出符合條件極值點,然后在這些極值點中篩選出候選特征點并確定其方向,最后由這些特征點生成特征向量描述符[13]。
2.1.1極值點探測
SIFT算法的最大優勢是具有尺度不變性,它可以在不同的圖像尺度空間探測關鍵點,假設G(x,y,σ)為尺度可變高斯函數,I(x,y)為二維數字圖像,那么圖像I(x,y)的尺度空間L(x,y,σ)可由公式(1)得到。
(1)
上式表明尺度空間由高斯函數和圖像卷積獲得,G(x,y,σ)可由公式(2)獲得,其中σ為尺度因子,可以有不同的取值,通過選取一系列的σ值,可以產生圖像高斯金字塔。
(2)
極值點的探測是通過構造差分方程求取的,將相鄰的尺度空間k和尺度空間(k-1)的高斯函數相減,得到的差分方程為D(x,y,σ)={G(x,y,kσ)-G[x,y,(k-1)σ]}·I(x,y),將公式(1)代入,得到的差分方程如公式(3)所示。
(3)
式中,k為影響系數,極值點探測時,首先將樣本像素點與同層的八鄰域像素和相鄰金字塔上下各9個元素值進行比較,如果此點為極大值或極小值,記錄該點位置和尺度信息,作為候選的特征點。
2.1.2特征點方向的確定
特征點的方向是根據該點四鄰域像素基于梯度計算的,假設特征點為(x,y),那么該點的梯度和方向如公式(4)和式(5)所示。
式中,m(x,y)為像素點(x,y)的梯度,公式(5)的θ(x,y)為像素點(x,y)的梯度方向。對像素點(x,y)的鄰域所有像素繪制梯度直方圖,主方向為梯度直方圖峰值對應的鄰域像素點方向,當另一個峰值達到主峰值的一定百分比后,該方向為輔方向。一般地,特征點由一個主方向和若干輔方向組成。
2.1.3特征向量描述符的確定
特征點的尺度、位置和方向確定后,需要計算特征向量以描述其屬性。將鄰域像素劃分為16×16個子區域,并再劃分為一個4×4子區域(每個區域有4×4個像素),計算和繪制該子區域16個像素8個方向的梯度方向直方圖,得到4×4×8=128個特征向量描述符。
2.2.1拼接方法
OpenCV是一個開源的跨平臺計算機視覺和機器學習軟件庫,實現了圖像處理和計算機視覺方面的很多通用算法[9],隨著應用領域的拓寬,近年來OpenCV在地理信息系統(geographic information system,GIS)、遙感方面應用逐漸增多,而且多集中于影像匹配和拼接[14-15]。改進SIFT圖像拼接是在傳統SIFT算法基礎上增加了透視變換,可以消除變形影像。實驗采用Python語言進行編程實現,基于OpenCV提供的應用程序接口(application programming interface,API),通過設計Stitcher類實現圖像SIFT拼接,該類主要聲明了stitch()、detectAndDescribe()、matchKeypoints()、drawMatches()四個函數,分別用于實現圖像拼接、關鍵點探測與描述SIFT特征、關鍵點匹配、繪制關鍵點,這些函數的聲明原型和參數含義如表1所示。

表1 Stitcher類主要函數原型及釋義
2.2.2拼接實現
stitch()函數是實現像素拼接功能的主函數,該函數在實現時首先載入具有一定重疊度的左右兩幅圖像,調用detectAndDescribe()函數進行SFIT特征檢測和描述,并返回特征點集合描述算子。然后通過調用matchKeypoints()構造變換矩陣M,用以完成拼接圖像的透視變換,繪制并返回匹配結果。
圖2(a)、圖2(b)分別為實驗采用的左右原始圖像,圖2(c)為OpenCV提取的關鍵點匹配圖,將匹配的關鍵點用直線連接起來,圖2(d)為匹配后原始圖像的拼接圖,圖2(e)為經過透視變換后的拼接圖。從圖2(d)和2(e)可以看出,圖像拼接無錯位和匹配變形,效果較好。

(a)原始左圖像 (b)原始右圖像
多幅街景影像的拼接采用的是海口市南渡江某街道6相機影像,和單幅拼接類似,對于一臺載有6相機的采集車,每個時段每個相機獲取三張連續重疊圖像,如此一個時段獲取18幅圖像,見圖3(a),程序在拼接時先拼接某一相機的三連拍圖像,然后通過建立索引獲得各相機影像鄰接關系,按照上述的改進OpenCV SIFT方法進行圖像無縫拼接。圖3(a)為6相機三連拍的原始街景影像,圖3(b)為拼接后的街景圖像。

(a)6相機三連拍街景圖像 (b)街景圖像拼接結果
OpenCV SIFT特征檢測具有旋轉不變、尺度不變特性,是一種穩定的圖像特征,改進SIFT方法匹配基于像素運算,匹配的結果保持像素級拼接精度。為了驗證改進SIFT方法對畸變、撓曲變形的適應性,選取了具有畸變和撓曲變形的局部街景圖像,分別進行人工和本文提出的方法進行拼接,二者的實驗結果分別如圖4(a)和圖4(b)所示,實驗表明,人工拼接方法無法克服圖像自身的畸變,拼接后的圖像仍然存在變形,而本文提出的方法增加了透視變換,可以克服畸變、撓曲對拼接圖像的影像,拼合后的圖像不存在畸變和撓曲變形,不失為一種可靠的抗畸變圖像拼接方法。

(a)人工拼接結果 (b)本文方法拼接結果
可量測實景影像具有復雜形變特征,傳統的方法是基于軟件進行人工拼接針,誤差大、效率低。本文提出的基于OpenCV的SIFT改進方法可有效改善精度和效率問題。和人工拼接的傳統方法相比,本文提出的方法可以人為設定匹配的關鍵點參數和透視變換精度,實現像素級精度拼接,大幅提升拼接精度。同時基于OpenCV的改進SIFT拼接方法可以實現自動讀圖、自動匹配和自動變換,極大提高了街景圖像的拼接效率。后續的研究應豐富圖像處理內容,如改善曝光、去除局部模糊和異常斑塊、錯位糾正等,最終實現高清街景影像一鍵化智能處理。