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 - 意义: 这一部分的判断结果直接影响后续建筑检测和高度计算的准确性
- 步骤:
示例 -- 北京市科技大学西校区的观察点分布图

绿色区域代表建筑物的分布。
黄色圆点标记了街景数据的观察点位置。
橙色线条表示街道网络,即街景数据的采集范围。
证明了:
- 数据采集优化
通过优化观察点分布,减少冗余采集,降低数据获取成本。 - 提升覆盖效果
确保建筑区域被完整观察,保证街景图像采集的全面性。 - 应用于复杂场景
优化方法适用于更大范围或更复杂建筑布局的场景
比较了均匀分布方法和文章提出的优化方法在不同场景中的所需的观察点数量

均匀分布方法:
– 校园场景需要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π⋅(Wimgxj−21)φj=π⋅(21−Himgyj)
此公式表示: 如何将街景图像中的矩形坐标(像素坐标)映射到球面坐标系下的方位角和仰角 - 图像像素坐标系:
横坐标 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米 的建筑:红色。
通过真实场景的三维可视化,验证了文章提出的方法在建筑高度计算中的适用性和精确性
相关文章:
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 – 北京科技大学城市与安全研…...
机器学习周志华学习笔记-第6章<支持向量机>
机器学习周志华学习笔记-第6章<支持向量机> 卷王,请看目录 6支持向量机6.1 函数间隔与几何间隔6.1.1 函数间隔6.1.2 几何间隔 6.2 最大间隔与支持向量6.3 对偶问题6.4 核函数6.5 软间隔支持向量机6.6 支持向量机6.7核方法 6支持向量机 支持向量机是一种经典…...
第三届航空航天与控制工程国际 (ICoACE 2024)
重要信息 会议官网:www.icoace.com 线下召开:2024年11月29日-12月1日 会议地点:陕西西安理工大学金花校区 (西安市金花南路5号) 大会简介 2024年第三届航空航天与控制工程国际学术会议(ICoACE 2024&a…...
【大数据技术基础】 课程 第8章 数据仓库Hive的安装和使用 大数据基础编程、实验和案例教程(第2版)
第8章 数据仓库Hive的安装和使用 8.1 Hive的安装 8.1.1 下载安装文件 访问Hive官网(http://www.apache.org/dyn/closer.cgi/hive/)下载安装文件apache-hive-3.1.2-bin.tar.gz 下载完安装文件以后,需要对文件进行解压。按照Linux系统使用的…...
BERT 详解
BERT简介 BERT(Bidirectional Encoder Representations from Transformers)是由 Google 在 2018 年提出的一种预训练语言模型。BERT 在自然语言处理(NLP)领域取得了重大突破,因为它能够有效地捕捉文本的上下文信息&am…...
使用 MySQL 的 REPLACE() 函数轻松替换表中字段
前言 在数据库操作中,经常需要对存储的数据进行一些处理和修改,替换字段中的部分信息。MySQL 提供了多种字符串函数来帮助开发者完成这些任务。其中一个非常实用的函数就是 REPLACE()。 REPLACE() 函数简介 REPLACE() 函数用于在字符串中查找指定的子…...
Http 响应协议
HTTP的响应协议 响应数据格式 响应行 响应数据的第一行,包括协议、状态码、描述 响应头 从响应数据格式的第二行开始,也是以key:value的格式 响应体 和响应头之间有一个空行,是响应数据格式的最后一部分,用于存放响应的数据 常见响…...
TCP/IP 协议:网络世界的基石(2/10)
一、引言 在当今数字化时代,互联网已经成为人们生活中不可或缺的一部分。而在互联网的背后,TCP/IP 协议扮演着至关重要的角色,堪称互联网的基石。 TCP/IP 协议是一组用于数据通信的协议集合,它的名字来源于其中最重要的两个协议…...
Lua--1.基础知识
Lua基础知识 变量简单的4种变量类型复杂的4种变量类型type函数 字符串操作长度获取--#多行打印字符串拼接别的类型转字符串-- tostring()字符串提供的公共方法 运算符算术运算符-- - * / % ^条件运算符-- > < > < ~(不等于 是 ~)逻辑运算符-- and or not位运算、…...
【GPT】力量训练的底层原理?
详细解读力量训练的每一个底层原理 力量训练之所以有效,是因为它利用了肌肉、神经系统和生物化学反应的基本机制。以下逐一详细解析,并解释相关概念。 1. 应力-恢复-适应理论 概念解析 应力(Stress):指训练带来的负…...
各种排序算法
前置知识 排序: 按照递增或者递减的顺序把数据排列好 稳定性: 值相等的元素在排序之后前后顺序是否发生了改变 内部排序: 数据放在内存上 外部排序: 数据放在磁盘上 内部排序 基于比较的排序 几大排序算法 1. 堆排序 特点: 思想: 1. 创建大根堆,把所有元素放在大根堆里…...
源码解读笔记:协程的 ViewModel.viewModelScope和LifecycleOwner.lifecycleScope
分析下ViewModel.viewModelScope public val ViewModel.viewModelScope: CoroutineScopeget() {val scope: CoroutineScope? this.getTag(JOB_KEY)if (scope ! null) {return scope}return setTagIfAbsent(JOB_KEY,CloseableCoroutineScope(SupervisorJob() Dispatchers.Ma…...
11.27周三F34-Day8打卡
文章目录 1. 学习让我感觉很棒。(什么关系?动作 or 描述?主语部分是?)解析答案:【解析答案分析】【对比分析】【拓展内容】2. 她忽然想起来钥匙放另一个包里了。解析答案:【拓展内容】3. 她来不来都没关系。(该由什么引导?这句话又属于什么关系,动作 or 描述?)解析答案…...
XG(S)-PON原理
前言 近年来,随着全球范围内接入市场的飞快发展以及全业务运营的快速开展,已有的PON技术标准在带宽需求、业务支撑能力以及接入节点设备和配套设备的性能提升等方面都面临新的升级需求XG(S)-PON(10G GPON)是在已有GPON技术标准上演进的增强下一代GPON技…...
C语言实例之9斐波那契数列实现
1. 斐波那契数列简介 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多・斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为 “兔子数列”。 它的特点是从第三…...
YOLO系列论文综述(从YOLOv1到YOLOv11)【第1篇:概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】
目录 1 前言2 YOLO在不同领域的应用3 物体检测指标和NMS3.1 mAP和IOU3.2 mAP计算流程3.2.1 VOC 数据集3.2.2 微软 COCO 数据集 3.3 NMS 1 前言 最近在做目标检测模型相关的优化,重新看了一些新的论文,发现了几篇写得比较好的YOLO系列论文综述࿰…...
数据结构--Map和Set
目录 一.二叉搜索树1.1 概念1.2 二叉搜索树的简单实现 二.Map2.1 概念2.2 Map常用方法2.3 Map使用注意点2.4 TreeMap和HashMap的区别2.5 HashMap底层知识点 三.Set3.1 概念3.2 Set常用方法3.3 Set使用注意点3.4 TreeSet与HashSet的区别 四.哈希表4.1 概念4.2 哈希冲突与避免4.3…...
计算机操作系统——进程控制(Linux)
进程控制 进程创建fork()函数fork() 的基本功能fork() 的基本语法fork() 的工作原理fork() 的典型使用示例fork() 的常见问题fork() 和 exec() 结合使用总结 进程终止与$进程终止的本质进程终止的情况正常退出(Exit)由于信号终止非…...
【前端】ES6基础
1.开发工具 vscode地址 :https://code.visualstudio.com/download, 下载对应系统的版本windows一般都是64位的 安装可以自选目录,也可以使用默认目录 插件: 输入 Chinese,中文插件 安装: open in browser,直接右键文件…...
【排序算法 python实现】
排序算法 python实现 / 默写 # 汉诺塔 import copy import randomdef hanuo(n, a, b, c):if n 1:print(f{a} --> {c})returnhanuo(n - 1, a, c, b)print(f{a} --> {c})hanuo(n - 1, b, a, c)hanuo(3, A, B, C)# 冒泡排序 def bubble_sort(arr):n len(arr)for i in ran…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
