自学内容网 自学内容网

Paper -- 建筑高度估计 -- 基于街景图像和深度学习的城区建筑高度计算

基本信息

论文题目: Building height calculation for an urban area based on street view images and deep learning
中文题目: 基于街景图像和深度学习的城区建筑高度计算
作者及单位:
– Zhen Xu Furong Zhang Yingying Wu Yajun Yang Yuan Wu
北京科技大学城市与安全研究所,土木与资源工程学院,北京,中国

录用时间: 2023年
期刊: Computer-Aided Civil and Infrastructure Engineering 中国科学院SCI分区 1区


摘要

这篇文章提出了一种利用街景图像深度学习技术计算城市建筑高度的新方法。

  • 通过优化观察点位置遗传算法基于Mask R-CNN的深度学习模型
  • 该方法能够高效地检测建筑并精确计算其高度
  • 实验表明,平均高度误差为0.78米,证明了该方法的高精度和可行性

背景

城市建筑高度数据土地利用城市规划人口估算能源消耗分析等多个领域具有重要价值

  • 传统的高度测量方法包括土地测量遥感图像处理等,但这些方法在高密度低层建筑特殊建筑形状的地区往往失效

难点

  • 观察点选择困难观察点过多会浪费资源,而过少会导致建筑信息不完整。
  • 全景图像检测难度高全景图像中建筑形状复杂且失真严重,传统算法难以有效检测。
  • 高度计算复杂:需要精确建立建筑的边界实际位置之间的 映射关系

希望提出一种能够结合街景图像深度学习自动化方法,解决观察点选择建筑检测高度计算的难题


数据集和评价指标

数据集

  • 来源百度街景图像,包含校园新北川镇如皋市的建筑数据。
  • 标注方式:使用LabelMe手动标注建筑的边界曲线
    5.2

评价指标

  • mAP@.50 IOU:评估Mask R-CNN检测结果的精度。
  • 误差分析:通过实际测量值验证计算高度的误差,平均误差为0.78米,平均相对误差为4.43%

方法

在这里插入图片描述
这张图展示了该论文提出的用于计算建筑高度的整个方法框架,清晰地描述了从数据输入案例研究的完整流程

图中5个部分的详细解释

  • 数据输入(Data Input)
    • 使用街景地图(如百度街景)获取建筑立面图像
    • 从GIS平台获取建筑足迹道路线信息。
    • 数据输入为整个框架提供了必要的初始信息,结合街景图像和空间数据为后续步骤打下基础
  • 图像采集(Image Acquisition)
    • 流程:
      确定备选观察点:通过遗传算法(GA)优化选择观察点,以覆盖所有建筑并减少下载数量。
      街景爬虫:从街景地图中自动获取360°全景图像。
    • 作用: 提高了图像采集的效率,确保了数据的覆盖性完整性
  • 建筑检测(Building Detection)
    • 步骤:
      创建样本集并对图像进行标注
      训练Mask R-CNN模型检测建筑。
      使用mAP@.50 IOU评价检测结果。
    • 关键技术: Mask R-CNN可以精确分割建筑边界,为高度计算提供了准确的输入数据
  • 高度计算(Height Calculation)
    • 流程:
      检测到的建筑实际建筑进行映射。
      采用边界搜索算法定位建筑顶部。
      构建数学模型,基于图像中的边界点计算建筑高度
    • 意义: 这一阶段是核心部分,结合检测结果和数学模型实现了精确的高度计算
  • 案例研究(Case Study)
    • 验证场景:
      北京科技大学校园:用于验证方法的基本准确性
      新北川镇:证明方法在中型城市的适用性。
      如皋市:展示方法在大规模城市环境中的扩展能力。
    • 图例解读: 图中用不同颜色表示建筑高度范围,例如:
      黄色:建筑高度小于24米。
      绿色:高度在24米至50米之间。
      蓝色:高度超过50米。

确定建筑观察点

在这里插入图片描述
(a):定义建筑与观察点的关系,判断建筑是否在观察范围内(表示为 s i j s_{ij} sij)
(b):连接观察点与建筑转角点,分析可视性
(c ):基于视线和建筑轮廓的交互关系,确定建筑是否被完整观察到(表示为 q i j q_{ij} qij)
Buildings(棕色):建筑的轮廓区域。
Observation locations(黄色圆点):观察点的位置
Observation range(绿色圆圈):观察点的覆盖范围
Turning points of buildings(绿色菱形):建筑的转角点,用于判断可视性

确定建筑观察点是否能够有效观察到建筑立面的流程如下:

  • 判断建筑是否在观察范围内((a)部分)
    • 步骤:
      • 观察点为圆心,半径为有效观察距离 R R R,绘制圆形观察范围
      • 如果建筑与观察范围有重叠,设 s i j = 1 s_{ij}=1 sij=1,否则 s i j = 0 s_{ij}=0 sij=0
    • 目的: 这一部分用于筛选哪些建筑在某个观察点的有效范围内,从而减少后续的计算工作量。
  • 分析可视性((b)部分)
    • 步骤:
      • 连接观察点建筑转角点生成多条视线
      • 判断视线是否穿过其他建筑被遮挡
      • 如果视线与建筑轮廓无交点,则认为该转角点是可见的
    • 作用: 通过视线分析,进一步确认建筑的哪些部分可以被观察到。
  • 确定是否完整观察到建筑((c )部分)
    • 步骤:
      如果一个建筑的所有转角点在观察范围内且可见,则设定 q i j = 1 q_{ij}=1 qij=1,表示该建筑被完整观察到。否则 q i j = 0 q_{ij}=0 qij=0
    • 意义: 这一部分的判断结果直接影响后续建筑检测和高度计算的准确性

示例 -- 北京市科技大学西校区的观察点分布图

在这里插入图片描述
绿色区域代表建筑物的分布
黄色圆点标记了街景数据的观察点位置
橙色线条表示街道网络,即街景数据的采集范围。

证明了:

  1. 数据采集优化
    通过优化观察点分布,减少冗余采集,降低数据获取成本。
  2. 提升覆盖效果
    确保建筑区域被完整观察,保证街景图像采集的全面性。
  3. 应用于复杂场景
    优化方法适用于更大范围更复杂建筑布局的场景

比较了均匀分布方法和文章提出的优化方法在不同场景中的所需的观察点数量

在这里插入图片描述
均匀分布方法:
校园场景需要25个观察点。
新北川镇场景需要596个观察点。
提出的方法:
校园场景仅需9个观察点。
新北川镇场景仅需245个观察点。
对比结果:
– 在两个场景中,提出的方法显著减少了所需的观察点数量


街景全景图及其分割网格示例

在这里插入图片描述

图像来源:
– 图像为典型的街景全景图,来源于数据采集阶段,通过街景爬虫工具获取。
– 其主要特点是通过球面投影显示所有方向的信息
网格划分:
– 全景图被划分为多个均匀的矩形网格,每个网格代表街景图像的一部分。
– 每个网格的划分是为了方便后续的区域化处理,如检测目标建筑物分析建筑边界

网格化的目的

  • 区域分块处理
    由于街景图像为全景形式,图像分辨率较高信息量大
    将图像分割为多个子区域后,可以针对每个区域单独进行检测和分析。
  • 定位精确性
    网格划分有助于快速定位建筑物的具体位置,同时减少冗余计算

网格编号与处理流程

  • 编号含义:
    每个编号对应一个矩形子区域,用于标记建筑物所在的具体位置。
  • 处理步骤:
    • 输入全景图像:以球面形式展开街景数据,形成水平和垂直视野完整的图像。
    • 划分网格:将图像分割为16个相等矩形区域
    • 区域处理:针对每个网格运行建筑检测算法,如Mask R-CNN。
    • 结果合并:将各个网格中的检测结果整合,形成全局建筑物检测结果

街景爬虫的实现流程

在这里插入图片描述
该图是一个流程图,详细描述了利用百度地图API抓取街景全景图像的实现步骤,包括初始化请求抓取图像以及拼接存储的全过程:

初始化与请求

  • 流程:
    根据观察点的坐标和全景图的水平及俯仰角度初始化参数
    创建HTTP请求,将所有请求放入队列中。
  • 作用:
    将街景爬取任务转化为API调用的可操作形式。
    利用队列机制为后续批量处理打下基础。

爬取图像

  • 流程:
    判断队列是否为空
    如果为空,则结束爬取任务。
    如果不为空,取出一个HTTP请求。
    利用百度地图API发送请求并尝试爬取图像。
    检查图像是否成功爬取
    如果成功,删除队列中对应的请求。
    如果失败,保留该请求以便重试。
  • 作用:
    通过循环机制确保每个请求都得到处理。
    提高数据爬取的成功率,避免由于网络问题导致的任务丢失。

拼接与存储

  • 流程:
    将成功爬取的子图像按照全景图的拼接规则组合成完整的街景全景图
    将拼接完成的全景图存储至本地数据库中。
  • 作用:
    生成高质量的全景图,为后续建筑检测和高度计算提供输入数据

手动标注建筑物轮廓

在这里插入图片描述
该图展示了标注建筑物轮廓的过程,图中不同建筑被标注为不同的颜色区域,轮廓线明确地勾勒出每个建筑物的边界
标注工具:使用了一种支持全景图像操作的标注软件(例如LabelMe)

标注内容的用途

  • Mask R-CNN 模型训练:
    – 标注的图像作为训练样本,用于指导模型学习如何分割建筑物
  • 提升检测精度:
    – 通过高质量标注,提高模型对复杂背景下建筑物边界的识别能力

检测到的建筑与实际建筑之间的映射关系

在这里插入图片描述
(a)部分:展示了建筑在实际地理空间中的位置与观察点的几何关系,基于球面坐标系统描述
(b)部分:展示了检测到的建筑在图像坐标系中的表示以及从图像像素坐标地理位置映射过程

(a) 地理空间中的建筑位置与观察点关系

  • 元素解释:
    黄色圆点 O ′ O' O : 观察点的位置。
    绿色菱形:建筑的转角点
    红色边界线:建筑物在当前视角下的可观察部分。
    ρ 1 , ρ 2 \rho_1,\rho_2 ρ1,ρ2:建筑与观察点之间的距离范围
    D ( ρ ) D(\rho) D(ρ):建筑物边界的测量距离。
  • 几何关系:建筑在地理空间中通过球面坐标系统描述,其位置和轮廓与观察点的位置密切相关。

(b) 图像空间中的建筑表示

  • 元素解释:
    W i m g W_{img} Wimg H i m g H_{img} Himg:图像的宽度高度(像素单位)
    ( x j , y j ) (x_j, y_j) (xj,yj)建筑顶点在图像中的像素坐标
    映射关系:将图像中的像素点 ( x j , y j ) (x_j, y_j) (xj,yj)转换为地理空间坐标 ( ρ j , ϕ j ) (\rho_j,\phi_j) (ρj,ϕj)
    ρ j = 2 π ⋅ ( x j W i m g − 1 2 ) φ j = π ⋅ ( 1 2 − y j H i m g ) \rho_j=2\pi\cdot\left(\frac{x_j}{W_\mathrm{img}}-\frac12\right)\text{}\\\varphi_j=\pi\cdot\left(\frac12-\frac{y_j}{H_\mathrm{img}}\right)\text{} ρj=2π(Wimgxj21)φj=π(21Himgyj)
    此公式表示: 如何将街景图像中的矩形坐标(像素坐标)映射到球面坐标系下的方位角和仰角
  • 图像像素坐标系:
    横坐标 x x x:图像宽度方向(从左至右
    纵坐标 y y y:图像高度方向(从上至下

建筑检测与预处理

在这里插入图片描述
(a) 检测前的图像
内容:
– 使用Mask R-CNN模型对街景图像进行建筑检测,标注了建筑的边界框(Bounding Box)。
– 检测结果显示在绿色框内的建筑区域,框外的背景区域未被标注。
– 边界框内显示了置信度(“blg: 100%”),表明模型对建筑检测结果的高度信任
作用:
– 提供建筑的初步检测结果,为后续的预处理奠定基础。

(b) 预处理后的图像
内容:
– 经过预处理,仅保留建筑的二值化掩码建筑区域为白色,其他背景区域为黑色。
– 去除了图像中的背景信息,确保输入数据更为简洁。
作用:
– 为高度计算边界检测提供更干净的数据
– 减少冗余信息对后续分析的干扰


边界搜索

在这里插入图片描述
该图展示了建筑顶部边界点搜索确定过程

(a) 预处理图像
内容:
– 预处理后的二值化图像,背景为黑色,建筑区域为白色
– 中间的绿色虚线表示图像的参考中心线(通常是观察点的视线)。
作用:
– 提供建筑的轮廓信息,作为边界搜索的输入。

(b) 搜索可能的观察角度
内容:
– 从不同的角度投射视线,搜索建筑顶部可能的边界点
蓝色锥形区域表示视线范围
黑色箭头指示视线的搜索方向
作用:
– 通过多视角分析,避免单一视角可能导致的边界误差。

(c ) 确定上边界点
内容:
– 根据视线和建筑轮廓的交点,计算出建筑的顶部边界
– 紫色直线表示最终确定的边界点连接
作用:
– 精确定位建筑顶部,为高度计算提供可靠的数据支持。


固定相机高度下建筑高度计算的测量模型

在这里插入图片描述
该图展示了如何通过几何关系推导建筑物高度的计算公式

观测结构:
右侧的相机表示观察点,固定安装在某一高度 H c a m H_{cam} Hcam
蓝色虚线表示观察点与建筑的视线
黄色虚线表示建筑的中心轴线,用于表示高度的测量路径

符号说明1:
H ( ρ ) H(\rho) H(ρ):建筑物的总高度
H 1 ( ρ ) H_1(\rho) H1(ρ):建筑顶部到相机的高度。
H 2 ( ρ ) = H c a m H_2(\rho) = H_{cam} H2(ρ)=Hcam:建筑底部到相机的高度,等于相机安装的固定高度
关系:
建筑物总高度为顶部高度和底部相机高度之和:
H ( ρ ) = H 1 ( ρ ) + H 2 ( ρ ) H(\rho) = H_1(\rho) + H_2(\rho) H(ρ)=H1(ρ)+H2(ρ)

符号说明2:
D ( ρ ) D(\rho) D(ρ): 观察点到建筑的水平距离
φ 1 \varphi_1 φ1: 从观察点到建筑顶部的仰角
φ 2 \varphi_2 φ2: 从观察点到建筑底部的仰角
关系:
根据三角函数,顶部和底部的高度可以通过仰角和水平距离计算
H 1 ( ρ ) = D ( ρ ) ⋅ tan ⁡ ( φ 1 ) H 2 ( ρ ) = D ( ρ ) ⋅ tan ⁡ ( φ 2 ) H_1(\rho)=D(\rho)\cdot\tan(\varphi_1)\\H_2(\rho)=D(\rho)\cdot\tan(\varphi_2) H1(ρ)=D(ρ)tan(φ1)H2(ρ)=D(ρ)tan(φ2)


计算建筑高度与实际测量建筑高度之间的对比

在这里插入图片描述
第一列:建筑编号(Building no.),标记19栋建筑的序号
第二列:通过提出的方法计算出的建筑高度 H a H^a Ha(单位:米)
第三列实际测量的建筑高度 H m H^m Hm(单位:米)
第四列:计算高度与测量高度之间的绝对误差(Error),单位为米。
表格底部 显示了整体的平均相对误差(Mean relative error),为4.43%。

较大误差现象:
– 编号9的误差为2.35米,这是表格中最大的误差
– 表明在部分较高复杂建筑的高度计算中仍存在改进空间

尽管建筑高度和结构复杂性不同,该方法在所有19栋建筑上均表现出较好的精度


北京科技大学西校区建筑高度分布的三维可视化结果

在这里插入图片描述
该图展示了校园内所有建筑的三维结构及其对应的高度分类

建筑的高度被划分为三个范围,并以不同颜色表示:
黄色:高度小于15米。
绿色:高度在15米至30米之间。
蓝色:高度大于30米。
蓝色圆点 标记了街景数据的观察点分布


新北川镇的建筑高度计算结果

在这里插入图片描述
该图展示了新北川镇建筑高度计算结果,以三维形式显示了不同建筑的高度分布情况

高度低于5米 的建筑:灰色。
高度在5米到24米之间 的建筑:绿色。
高度在24米到50米之间 的建筑:黄色。
高度高于50米 的建筑:红色。

通过真实场景的三维可视化,验证了文章提出的方法在建筑高度计算中适用性精确性


原文地址:https://blog.csdn.net/qq_33366130/article/details/144065569

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!