唐昊,馮德俊,曹文峰,德云樂強,王淳
(1.中國工程物理研究院計算機應用研究所,四川 綿陽 621900;2.西南交通大學 地球科學與環境工程學院,成都 610097)
對于基本測繪數據匱乏地區(如國外某區域、貧困落后地區)進行大區域建筑物三維建模時,獲取建筑物高度信息是該工作的關鍵。當前獲取建筑物高度信息的方法可分為三類。一是利用影像的立體像對,根據空中三角測量原理計算建筑物高度,該方法理論精度較高,但需要具有一定重疊度的兩幅或多幅影像。二是獲取建筑物的陰影信息,計算陰影長度,然后根據太陽高度角和方位角,模擬陰影與建筑物之間的空間幾何關系估算建筑物高度,該方法只需要一幅影像,成本相對較低,但當建筑物比較密集,或地面地物復雜時,無法獲取建筑物完整的陰影信息。三是利用LiDAR數據獲取建筑物的高度信息,該方法適用范圍較小[1-2]。
課題組做了多年的陰影反演建筑物高度的研究[3-6],采用基于建筑物陰影圖像特征或者用深度學習方式提取建筑物陰影,去噪后再根據光照模型反演建筑物高度。研究發現,該方法有一定的局限性,如建筑物比較密集時,前排建筑物陰影可能會投影到后排建筑物上,導致提取的建筑物陰影不完整;或者相鄰建筑物的陰影粘連在一起;或者太陽光照不強時,地面陰影不明顯;或者投影到地面的陰影受地面植被等物體較大的影響等,這些情況均會導致這部分建筑物的高度無法通過陰影信息進行計算。
因此,論文試圖利用深度學習等方法獲取建筑物側面信息,計算其長度,然后根據衛星與建筑物之間的空間幾何關系,估算建筑物的高度,以彌補利用陰影信息計算建筑物高度方法的缺陷。國內外已有部分文獻在研究該問題[7],但研究內容主要涉及的是較簡單的場景,并且沒有和陰影提取方法進行對比結合。
論文方法研究需具備以下前提條件。
1)空間分辨率較高的遙感影像。空間分辨率較高的遙感影像才能得到像素較多的側面,如亞米級的QuickBird影像或分辨率更高的航空影像。
2)非正射投影成像。利用建筑物側面估算建筑物高度時,必然需要在遙感影像中可見建筑物的側面,而當衛星高度角為90°或接近90°時,遙感影像的側面顯示不明顯。因此,可見側面的長度不能太短,否則無法識別出對應建筑物的高度信息。
3)太陽和衛星處于建筑物的同側。當太陽和衛星處于建筑物的同側時,建筑物側面的光譜特征比較明顯,結合形狀特征和紋理特征,有利于建筑物側面的提取。
4)建筑物外部結構規則、整齊。如果建筑物外部結構不規則,則需要使用更加復雜的物理模型對建筑物高度進行計算。并且建筑物外部結構不規則會影響建筑物側面的提取精度,也不利于建筑物高度的反演。
5)建筑物側面被遮擋少。當建筑物比較密集時,相鄰建筑物之間會相互遮擋,或則相鄰建筑物的陰影會投影到另一棟建筑物側面上;如果地面植被較多時,也會對建筑物側面產生遮擋。
在滿足以上五個前提的情況下,衛星和建筑物的空間位置如圖1所示。

圖1 衛星與建筑物的空間位置關系示意圖
從圖1可以看出,建筑物的高度信息與衛星的方位角和衛星的高度角有著緊密聯系。因為遙感影像是二維圖,需要將影像復原到三維圖才能計算,二維圖和三維圖的關系如圖2所示。從圖2可以看出,影像上的建筑側面呈現為B面,而真實的建筑物的側面為A面。建筑物的實際高度與建筑物側面長度的關系如式(1)所示。
(1)
式中:H代表建筑物的實際高度;L代表建筑物側面在影像上的長度;β代表衛星的高度角。

圖2 建筑物側面三維和二維的關系圖
實際上,大部分情況下衛星拍攝的平行視線與建筑物朝向并不垂直,實際的形狀如面C所示,這樣需要考慮衛星方位角與建筑物的朝向關系,十分復雜。為了簡化算法,只需要考慮建筑物的棱線方向,棱線即為建筑物側面的主方向,見圖3,確定棱線與屏幕Y方向的夾角,根據三角關系即可以計算出側面的實際長度。

圖3 構建建筑物的棱線
論文實驗區是四川省成都市某區域,實驗數據是融合后的QuickBird影像。建筑物側面提取方法有兩種。一是傳統的閾值分割(Otsu算法)[8],并結合數學形態學進行處理。二是利用深度學習方法LVQ(learning vector quantization)神經網絡[9-10]提取建筑物側面信息。下面對第二種方法的處理過程進行簡單介紹。
本文使用的 LVQ神經網絡,即學習矢量量化神經網絡,這是一種前向神經網絡,主要用于訓練競爭的神經網絡,且其中包含有監督學習的方法。因此LVQ神經網絡可以像神經元一樣進行分類,這樣就能克服無監督學習算法對分類產生的誤差及影響。根據LVQ神經網絡能夠監督學習這一特性,可利用LVQ神經網絡對圖像進行簡單的二分類。例如,輸入一幅影像,設定其判別條件為圖片中是否含有飛機,如果有飛機則可以將此圖片定義為1輸出,若圖片中沒有飛機,則將圖片定義為0輸出。本文便是利用這一特點將LVQ神經網絡視為一個分類器,將影像分為若干塊,影像特征滿足建筑物側面的影像塊定義為1,影像特征不滿足建筑物側面的影像塊定義為0,然后將定義為1的影像塊設為前景,定義為0的影像塊設為背景,這樣便能達到提取建筑物側面的目的。
1)選取訓練樣本。從遙感影像上裁剪大量的大小為256像素×256像素的能夠清晰看到建筑物側面的圖片并進行標注,將圖片轉為灰度圖像,然后將圖片中建筑物側面設為前景,其他地方設為背景。將標注好的圖片進行不同角度的旋轉,使訓練樣本數量翻倍。其中一張標簽圖如圖4所示。

圖4 標簽圖
2)設置采樣參數。確定取塊的像素間隔和窗口大小,循環輸入原圖片和標簽圖片,按照取塊的像素間隔和窗口大小計算塊的數量,并以塊為單位,計算正負樣本量,并對樣本均勻采樣平衡正負樣本量。
3)設置輸入向量。對于大多數建筑物,側面與頂部的建筑材料相同,這可能造成建筑物側面與頂部的光譜特征相似,因此不能僅依靠光譜特征作為特征向量,還得加入建筑物側面的幾何特征和紋理特征一起構成輸入向量。幾何特征主要由三個指標組成,分別為:提取面積的平方根與周長之比、周長與端點個數之比、特征基元的面積與外界矩形面積之比,組成三維形狀特征向量。紋理特征能反映一幅圖像中某一個局部區域內的排列規則,但紋理特征只能反映地物表面的某些特征,不能反映更高層次的信息。紋理的描述可利用直方圖和像素相對位置的二階灰度共生矩陣的四個特性描繪子作為輸入向量,這四個描繪子分別為:一致性、熵、對比度和自相關。
4)歸一化輸入。在訓練一個模型時,為了加快學習過程,減少實驗時間,歸一化輸入特征向量。歸一化輸入主要分為兩步。第一步為零值均衡化,即訓練值與平均值之間的差的方差。第二步為根據上一步得到的方差歸一化數據集。
5)訓練和測試。根據設定的學習效率、迭代次數、神經元個數和連接權值等數據,得到神經網絡中各參數的最或然值,然后進行測試,得到實驗區A和實驗區B的提取結果,如圖5和圖6所示。

圖5 實驗區A

圖6 實驗區B
對提取結果使用三個參數即側面漏檢率、側面誤檢率和側面總錯誤率來評價提取精度,其計算表達分別如式(2)、式(3)和式(4)所示。
(2)
(3)
(4)
式中:FSOC表示側面漏檢率;FSCE表示側面誤檢率;FSTE表示側面總錯誤率;FN表示建筑物側面未被檢測到的像素點的總數;FE表示非建筑物側面像素點被誤檢為建筑物側面像素點的總數;FY表示建筑物側面像素的真實總數。利用上述公式計算三個評定參數,其計算結果如表1和表2所示。

表1 傳統方法建筑物側面提取精度表

表2 深度學習方法建筑物側面提取精度表
從表1、表2可以看出,深度學習方法提取的結果比傳統方法(Otsu算法)的精度略高,而且方法更簡便,說明這種提取方法是可行的。
建筑物實際高度估算分兩個步驟:計算提取的建筑物側面對應建筑物高部分的長度、利用式(1)所示方法計算建筑物實際高。
本文實驗區內的建筑物側面大多為平行四邊形,可以通過直接測量的方式得到建筑物側面的長度。論文采用漁網法計算建筑物側面長度。根據漁網法的思想,在二值圖像上生成網線,并進行邏輯非運算,得到裁剪的線,對裁剪出來的線通過連通分量的形式統計在一個數組內,用拉依達規則進行篩選,再計算剩余線的像元個數,求平均值,得到側面長度的最終結果。
計算出側面長度后,利用式(1)方法估算建筑物的高度。選取十棟建筑物的計算高度和實際高度進行比較,結果如表3和表4所示。

表3 基于傳統方法提取建筑物側面的反演結果精度評定

表4 基于深度學習方法提取建筑物側面的反演結果精度評定
為了更直觀地對比兩種方法建筑物側面提取的誤差對比,構建了兩種方法反演的建筑物絕對誤差對比折線圖,其結果如圖7所示。

圖7 絕對誤差對比圖
從圖7可以看出,兩種方法都存在著一定的誤差,還需要不斷的改進。總體而言,深度學習方法的絕對精度略高于閾值分割方法。
實驗發現以下情況會對本文方法的效果產生影響:建筑物底部植被過于茂盛,會導致建筑物與地面接觸的邊界線無法被直觀地選取出來;有的房屋的屋頂與側面的結構和材質比較一致,會干擾建筑物側面的提取;建筑物頂部結構復雜,參差不齊,會導致側面不是一個規則的平行四邊形,影響側面長度的計算;過密集的建筑物群,露出的建筑物側面較少。
通過實驗對比發現,在高分辨率遙感影像中利用建筑物側面信息估算建筑物高是可行的,而且可以與陰影計算建筑物高的方法相互補充,可以彌補陰影計算的一些缺陷,如比較密集的建筑物群區域,仍然可以獲取建筑物側面信息的情況。同時,本文方法不易實現的某些情況在陰影方法中可以實現,如建筑物側面與頂部材質比較一致時的情況。本文方法和陰影提取方法的互補性程度是后續研究需要進一步深入驗證的內容。