Paper -- 建筑物高度估计 -- 使用街景图像、深度学习、轮廓处理和地理空间数据的建筑高度估计
基本信息
论文题目: Building Height Estimation using Street-View Images, Deep-Learning, Contour Processing, and Geospatial Data
中文题目: 使用街景图像
、深度学习
、轮廓处理
和地理空间数据
的建筑高度估计
作者: Ala’a Al-Habashna
作者单位: 加拿大统计局特别商业项目中心数据探索和集成实验室
会议名称: 2021 18th Conference on Robots and Vision (CRV)
(第18届机器人与视觉会议)
论文发表时间: 2021年
摘要
- 本文提出了一种使用
卷积神经网络(CNNs)
和图像处理技术
从街景图像
自动估计建筑高度
的算法(及其开源实现)。 - 该算法还利用了可从不同来源获得的
地理空间数据
- 该算法最终将用于丰富加拿大统计局发布的
开放建筑数据库(ODB)
背景
-
现有问题
建筑高度信息对于丰富二维建筑平面图
和增强分析很重要
传统的LiDAR
和SAR技术
成本高,难以大规模应用 -
研究动机
开放街景图像
的快速普及为建筑高度估计提供了新思路
需要一个开源、低成本且可扩展的解决方案
数据集和评价指标
-
测试数据
在加拿大渥太华市20个建筑物上进行测试
建筑高度范围:4米到54米
-
评估结果
平均估计误差为2.32米
85%的建筑估计误差在4米
以内
50%的建筑估计误差在2米
以内
方法
这是一个系统框架图
, 展示了BHEDC (Building Height Estimation using Deep-learning and Contours)
算法的高层级流程图。
描述了从获取街景图像到最终估计建筑高度的完整流程。整个流程包含6个主要步骤
:
- 第一步:从
Google Street View静态API
获取目标建筑物的街景图像
- 第二步:使用基于深度学习的
语义分割
进行建筑物识别
- 第三步:对分割后的图像进行进一步处理,获取建筑物在图像中的
像素尺寸信息
。 - 第四步:从
OpenStreetMap等数据源
获取建筑物的平面图信息
。 - 第五步:利用获取的平面图数据,计算
相机到建筑物
的实际距离。 - 最后一步:结合前面获得的所有信息,使用
相机投影模型
计算建筑物的实际高度。
建筑物图像尺寸提取的具体工作流程
建筑物图像尺寸提取的具体工作流程:
- 使用语义分割识别图像中的建筑物
使用深度学习模型对输入的街景图像进行语义分割
,将建筑物区域与其他区域分开。 - 应用图像阈值处理获取建筑物像素
对分割结果进行二值化处理
,得到建筑物区域的二值图像
。 - 提取图像中最大的连通分量
在二值图像中找出最大的连通区域
,这通常代表主要目标建筑物
。 - 提取轮廓
从最大连通分量中提取建筑物的轮廓信息
。 - 近似轮廓
对提取的轮廓进行简化和平滑处理
,减少噪声影响。 - 获取近似轮廓中的最高点
在处理后的轮廓中确定建筑物顶部
的位置。 - 寻找建筑物的底线
确定建筑物在图像中的底部边界线
。 - 计算建筑物在图像中的近似高度
根据顶点
和底线
计算建筑物在图像中的像素高度
。
理想的街景图像
展示了一张通过Google街景静态API
获取的加拿大渥太华市
的商业建筑物图像样本
这张图片是论文中用来说明算法输入数据的示例
。图像质量清晰,视角正面,建筑轮廓完整,这些特点都有利于后续的图像处理步骤:
- 便于进行
语义分割
,清晰区分建筑物与背景 - 建筑物
边界明确
,有助于轮廓提取 - 建筑物
底部和顶部
都可见,便于计算高度 - 图像中包含了
地面参考点
,有助于确定建筑物的底线
语义分割的结果展示
绿色区域
:表示主要建筑物区域
紫色区域
:表示天空部分
浅蓝色区域
:表示人行道
灰色区域
:表示其他环境元素
黑色区域
:表示图像底部未使用的部分
这个语义分割结果显示:
- CNN成功地识别并分割出了建筑物的主体部分(绿色区域)
- 建筑物的
边界轮廓
清晰可见 - 与周围环境(天空、人行道等)的
分界明确
分割质量较高
,没有明显的错误分类现象
对语义分割结果进行图像阈值处理和连通分量提取后的结果图像
这是一个二值图像:
白色区域
:代表建筑物的主体部分
黑色区域
:代表背景和其他非建筑物区域
处理过程:
-
阈值处理:
将语义分割后的建筑物区域(之前的绿色区域)
转换为白色
将其他所有区域(天空、人行道等)转换为黑色
创建了清晰的二值化图像
-
连通分量提取:
从二值图像中提取最大的连通区域
移除了可能存在的小型噪声区域
保留了完整的建筑物轮廓
这一步处理的意义:
- 简化了后续的
轮廓提取过程
- 确保
只处理
主要目标建筑物 - 减少了
干扰因素
的影响 - 为计算建筑物高度提供了
清晰的轮廓基础
找到建筑物的顶点
黑色粗线:表示建筑物的轮廓线
蓝色和浅蓝色圆点:标记了建筑物的最高的两个点
- 对分割结果提取建筑物的
轮廓(contour)
- 对轮廓进行
近似处理(approximation)
- 从近似后的轮廓中
提取最高的两个点
*这些最高点代表了建筑物在图像中的屋顶线(roofline)
摄像机到建筑物的距离是怎么得到的?
该图展示了OpenStreetMap (OSM)中建筑物的俯视图表示
(a) 左侧图像显示了建筑物在OSM中的边界表示:
橙色区域
:表示建筑物的完整平面轮廓
白色线条
:表示周边道路或其他地理要素
灰色背景
:表示地图底图
(b) 右侧图像突出显示了建筑物边界上的一个节点:
浅粉色区域
:表示建筑物的平面轮廓
橙色圆点
:表示建筑物边界上的一个节点(顶点)
白色线条
:表示周边道路或其他地理要素
灰色背景
:表示地图底图
这张图的意义:
– 展示了OSM中建筑物的矢量数据
表示方式
– 说明建筑物边界是由一系列节点
构成的多边形
– 显示了用于定位和测量
的关键节点位置
– 展示了建筑物在地理信息系统中的空间表达
摄像机到建筑物的距离是怎么得到的?
-
从OSM(OpenStreetMap)获取建筑物轮廓数据:
- 首先使用
Nominatim工具
通过地址或名称
获取建筑物的位置信息
,包括经纬度、记录类型和OSM ID - 然后使用
OSMPythonTools API
根据OSM ID获取建筑物轮廓数据
- 轮廓数据包含
建筑物中心点的经纬度
以及建筑物边界上各个节点的经纬度
- 首先使用
-
获取摄像机位置:
- 从Google Street-View API下载图像时会
同时下载一个元数据文件
- 该元数据文件中
包含了摄像机的位置信息
- 从Google Street-View API下载图像时会
-
计算距离:
- 将建筑物边界节点构建成一个多边形
- 根据
摄像机位置
和建筑物多边形的位置信息
, 计算摄像机到建筑物的实际距离
- 这个距离信息后续会被用在
摄像机投影模型
中,与图像中提取的建筑物高度
等信息一起,用来估算建筑物的实际高度。
相机投影模型
坐标系统:
(
x
,
y
)
(x, y)
(x,y):表示图像平面坐标系
(
x
′
,
y
′
,
z
′
)
(x', y', z')
(x′,y′,z′):表示世界坐标系
O
O
O:表示图像坐标系原点
O
′
O'
O′:表示世界坐标系原点
建筑物表示:
右上方的蓝色立方体
:表示实际建筑物
左下方小方框中的蓝色立方体
:表示图像平面上的建筑物投影
h
b
h_b
hb:表示实际建筑物的高度
h
u
h_u
hu:表示图像平面上建筑物的投影高度
相机位置:
图中间的相机图标表示拍摄位置
d
′
d'
d′:表示相机到建筑物的实际距离
投影模型的工作原理:
通过相似三角形原理
建立实际高度和投影高度的关系
– 利用已知的相机参数(焦距
等)
– 结合从OSM获取的相机到建筑物的实际距离
(
d
′
d'
d′)
– 通过图像中测量的投影高度
(
h
u
h_u
hu)
最终计算出建筑物的实际高度(
h
b
h_b
hb)
计算建筑物实际高度的公式
这个公式是基于针孔相机模型
推导出来的,能够有效地将二维图像中的信息
转换为三维世界中的实际高度值
。
h
^
b
=
h
u
⋅
d
′
/
f
+
h
c
{\hat{h}_b=h_u \cdot d^{\prime}/f+h_c}
h^b=hu⋅d′/f+hc
h
^
b
\hat{h}_b
h^b:表示估算的
建筑物实际高度(Building height)
h
u
h_u
hu:表示图像中测量的建筑物像素高度
(Height in pixels)
d
′
d'
d′:表示相机到建筑物的实际距离
(Distance)
f
f
f:表示相机的焦距
(Focal length)
h
c
h_c
hc:表示相机高度
(Camera height):
– 因为相机不是从地面拍摄, 需要将相机本身的高度
考虑进去
– 相机高度在街景采集车上约为2.7米
高度估算结果
在图像右上角显示了估算得到的建筑物高度:22.816米
这个数值是通过前面介绍的相机投影模型
计算得出
(a) 左侧图像:估算高度为48.052米
(b) 右侧图像:估算高度为44.044米
这些结果说明该系统能够:
- 适应
不同建筑风格
- 在有
树木等遮挡物
的情况下仍能进行估算 - 对相似高度的建筑物给出一致性的估算结果
- 在真实街景环境中有效运作
建筑物高度估算误差的经验累积分布函数
展示了建筑物高度估算误差的经验累积分布函数(ECDF, Empirical Cumulative Distribution Function)图
横轴:表示估算误差(Estimation error)
,单位为米(m),范围从0到6米
纵轴:表示ECDF值
,范围从0到1
,表示累积概率
-
曲线特征:
呈现阶梯状上升趋势
在0-2米
误差范围内上升较快
2-4米
误差范围内上升速度减缓
4米以后
趋于平缓
-
关键观察点:
约50%的估算误差在2米以内
约75%的估算误差在3米以内
约90%的估算误差在4米以内
几乎所有估算误差都在6米以内
这个图表的意义:
直观展示了系统估算精度的分布情况
表明该方法具有良好的估算准确性
大多数估算结果的误差都在可接受范围内
验证了该系统在实际应用中的可靠性
存在问题
这张图片说明了系统在进行建筑物高度估算时面临的主要挑战之一:植被遮挡
植被遮挡
会影响建筑物轮廓的完整性
- 可能导致建筑物
高度测量不准确
- 增加了图像处理和高度估算的难度
需要特殊的处理策略
来处理遮挡问题
其他问题:
- 在大城市中
识别相邻建筑
物的位置问题,正在开发算法使用地理空间数据和建筑足迹来解决 - 需要
消除有时出现的分割错误
(如天空颜色接近建筑物颜色的情况) - 需要处理相机与建筑物之间
存在锐角的情况
- 植被遮挡问题,有时会使建筑物
底边
难以检测