唐昊,冯德俊,曹文峰,德云乐强,王淳
(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可以看出,两种方法都存在着一定的误差,还需要不断的改进。总体而言,深度学习方法的绝对精度略高于阈值分割方法。
实验发现以下情况会对本文方法的效果产生影响:建筑物底部植被过于茂盛,会导致建筑物与地面接触的边界线无法被直观地选取出来;有的房屋的屋顶与侧面的结构和材质比较一致,会干扰建筑物侧面的提取;建筑物顶部结构复杂,参差不齐,会导致侧面不是一个规则的平行四边形,影响侧面长度的计算;过密集的建筑物群,露出的建筑物侧面较少。
通过实验对比发现,在高分辨率遥感影像中利用建筑物侧面信息估算建筑物高是可行的,而且可以与阴影计算建筑物高的方法相互补充,可以弥补阴影计算的一些缺陷,如比较密集的建筑物群区域,仍然可以获取建筑物侧面信息的情况。同时,本文方法不易实现的某些情况在阴影方法中可以实现,如建筑物侧面与顶部材质比较一致时的情况。本文方法和阴影提取方法的互补性程度是后续研究需要进一步深入验证的内容。