当前位置: 首页 > article >正文

Paper -- 建筑物高度估计 -- 基于深度学习、图像处理和自动地理空间分析的街景图像建筑高度估算

在这里插入图片描述
论文题目: Building height estimation from street-view imagery using deep learning, image processing and automated geospatial analysis
中文题目: 基于深度学习、图像处理和自动地理空间分析的街景图像建筑高度估算
作者: Ala’a Al-Habashna, Ryan Murdoch
作者单位: 加拿大统计局特别业务项目中心数据探索和集成实验室,加拿大渥太华
投稿时间:2023年5月16日
修改时间:2023年8月24日
接受时间:2023年9月28日
在线发表时间:2023年11月11日
期刊: Multimedia Tools and Applications 中国科学院SCI期刊分区的四区


摘要

近年来,许多研究致力于从街景图像中提取有关建筑和基础设施、交通与移动性、步行性以及健康与福祉的有价值数据

  • 本文提出了两种算法及其实现方法,用于利用深度学习(DL)高级图像与地理空间数据处理算法,从街景图像中自动估算建筑高度
    • BHEDC算法:基础算法,用于估算建筑高度。
    • iBHEDC算法:改进版算法,增加了新的组件和优化步骤
  • 本文旨在通过改进现有算法 (BHEDC),提出一种新的方法(iBHEDC),以提高建筑高度估算的精度和效率
    点击查看BHEDC论文解析: https://tancer.blog.csdn.net/article/details/144121336

背景

  • 建筑高度是城市建模与规划、城市与经济分析等领域的重要数据。
  • 传统方法依赖于昂贵的测量设备高分辨率遥感图像,而街景图像提供了一种低成本、高可用性的替代方案。
  • 尽管街景图像在地理空间数据提取中具有潜力,但如何从中准确估算建筑高度仍然是一个挑战,尤其是在复杂的城市环境中

相关研究

  • 步行性分析:Smith等人提出了一种方法,通过街景图像提取人行道的存在及质量数据,用于设计步行友好型城市
  • 道路表面分类:Marianingsih和Utaminingrum使用街景图像训练分类器,将道路表面分类为多种类型(如沥青、砾石
  • 视觉定位:通过与地理标记图像的比较,预测图像的地理位置
  • Zhao等人提出了一种基于语义分割和边缘检测的建筑高度估算方法。
  • Al-Habashna提出了BHEDC算法,利用街景图像和建筑轮廓数据进行高度估算。

方法

iBHEDC算法概述

  • 预处理与语义分割:对输入图像进行预处理,使用CNN生成语义分割图像,提取建筑物区域。
  • 建筑维度提取:通过颜色变换单应性变换,提取建筑物在图像中的高度
  • 轮廓与顶部点提取:使用Ramer-Douglas-Peucker算法提取建筑轮廓,并确定建筑顶部点
  • 高度估算:结合相机投影模型校正因子,估算实际建筑高度

相关处理技术概览:

  • 颜色变换:对图像像素进行颜色变换,以避免语义分割输出中的问题。
  • 单应性变换:将图像归一化为零俯仰角图像。
  • 语义分割:使用训练好的CNN生成语义分割图像
  • 阈值处理:提取建筑物像素区域,并通过提取最大连通区域消除无关子区域。
  • 轮廓提取:使用Ramer-Douglas-Peucker算法对轮廓进行近似,提取建筑物的顶部点
  • 相机投影模型:结合图像中的建筑维度和相机元数据,估算实际建筑高度

数据集和评价指标

数据集
数据集包含400个建筑物街景图像及其对应的建筑轮廓数据。
数据来源包括多个平台(如Open Street Map和其他地理空间数据平台)。

评价指标
高度估算精度:通过与真实建筑高度的对比,评估算法的准确性。
算法鲁棒性:在复杂场景(如遮挡、光照变化)下测试算法的表现


iBHEDC 算法(改进版建筑高度估算算法)高层次工作流程的框架图

在这里插入图片描述

整个工作流程从获取街景图像开始,通过数据预处理深度学习相关处理地理空间数据分析图像处理一步步实现建筑高度的估算

  1. 获取测试图像
    步骤:从Google Street-View Static API中获取街景图像
    目的:为算法的后续分析提供原始测试数据,确保街景图像具有良好的质量,并附带元数据信息(如图像的地理位置、相机信息等)。
  2. 图像预处理
    步骤:对图像实施必要的预处理操作。
    内容:可能包括图像的裁剪、去噪、颜色校正以及对元数据的验证和标准化处理。
    作用:提高图像质量,确保后续深度学习和图像处理步骤的结果准确性和可靠性。
  3. 基于深度学习的语义分割
    步骤:利用深度学习模型(如卷积神经网络,CNNs)对图像进行语义分割,以识别建筑物区域。
    功能:通过像素级分割,为后续的建筑物轮廓提取和高度估算提供信息。
  4. 下载建筑轮廓数据
    步骤:从地图数据平台(如 Open Street Map)下载与图像相关的建筑轮廓数据(building footprint data)。
    作用:获取建筑物的基本地理轮廓,为估算实际建筑高度提供地理空间信息支持。
  5. 地理空间处理与建筑与相机距离计算
    步骤:结合地理空间数据图像元数据计算建筑物与相机的位置和距离
    方法:包括图像与地理位置的对应以及基于透视技术的距离计算
    目的:通过相机与目标建筑物的空间关系,完善建筑高度的估算公式。
  6. 提取建筑物图像维度
    步骤:应用图像处理技术提取建筑物在图像中的高度(如顶部点到底部点的像素距离)。
    技术:使用边缘检测、形状提取以及轮廓拟合等技术,从语义分割图像提取建筑物的主要维度。
  7. 估算建筑高度
    步骤:通过相机投影模型结合上述提取的建筑维度相机-建筑距离,估算实际建筑高度。
    方法:使用几何关系和透视变换技术,将图像中以像素表示的建筑物高度转换为实际物理高度。

在 iBHEDC 算法中提取建筑图像维度详细流程

在这里插入图片描述
该图主要描述了如何从语义分割后的图像中提取建筑物在图像中的高度

流程主要三大部分:

  1. 语义分割与图像预处理:对图像进行强度变换(Intensity Transformation)、变换校正(Plane-to-Plane Homography)语义分割等处理。
    • 应用强度变换(Apply Intensity Transformation on the Image)
      作用:通过调整像素值分布,提高图像的对比度,从而增强建筑物的清晰度。
      方法:可能包括直方图均衡化伽马校正
    • 应用平面到平面单应性变换(Apply Plane-to-Plane Homography if Needed)
      作用:校正由于相机角度造成的建筑物倾斜问题,使得图像中的建筑物呈现直立状态
      方法:将非垂直平面的像素校正到同一视角(垂直)平面。
    • 使用语义分割识别图像中的建筑物(Use Semantic Segmentation to Identify Buildings in the Image)
      作用:通过卷积神经网络(CNN)等深度学习方法,将建筑物区域从图像中精准分割出来,标记背景和建筑物像素区域。
  2. 建筑轮廓提取:通过阈值连通性分析提取建筑物的连通区域以及轮廓
    • 应用搜索区域算法确定建筑区域(Apply the Search-Region Algorithm to Determine the Building’s Region)
      作用:通过分析建筑物的位置和大小,划定建筑物的感兴趣区域(Region of Interest)
    • 应用图像阈值处理获取建筑像素(Apply Image Thresholding to Obtain Pixels of Buildings)
      作用:根据像素强度,将图像二值化,提取与建筑物相关的像素区域。
    • 提取最大的连通区域(Extract the Biggest Connected Component)
      作用:分析连通像素区域(Connected Components),保留覆盖面积最大的区域排除无关或背景噪声
  3. 高度计算:找到建筑轮廓的最高点,根据校正获取建筑在图像中的大致高度
    • 提取轮廓(Extract the Contour)
      作用:通过边界检测,提取建筑物像素区域的边缘轮廓,形成精确的建筑物形状信息。
    • 轮廓拟合(Approximate the Contour)
      方法:使用 Ramer-Douglas-Peucker 算法对轮廓进行多边形拟合,从而去除冗余复杂信息,保留重要的轮廓特征。
    • 在拟合轮廓中获取最高点(Get the Highest Point in the Approximated Contour)
      功能:通过分析轮廓顶点,确定建筑物在图像中的最高位置,为后续高度计算提供基础数据。
    • 计算大致的建筑图像高度(Calculate the Approximate Building-Image Height)
      方法:计算建筑物最高点最低点在图像中的像素间距,得出建筑在图片中的高度。
    • 应用建筑图像高度校正(Apply Building-Image Height Correction)
      功能:通过结合图像元数据(如相机和建筑距离)、视角参数进行校正,得到更准确的图像高度。

预处理步骤对输入图像的影响

在这里插入图片描述
左图(a):原始街景图像,体现了捕获数据的初始状态,但可能包含一些不利影响,比如色彩不均、光照问题、视角偏差等。
右图(b):经过强度变换(Intensity Transformation)和图像校正(Plane-to-Plane Homography)后的图像,处理后建筑物呈现更好的可见性,同时减小了因拍摄角度引起的倾斜和失真问题

  • 强度变换(Intensity Transformation)
    目的:增强图像的对比度,为后续任务提供更清晰的边缘物体分界线

    • 直方图均衡化(Histogram Equalization):均衡像素的分布,突出重要视觉特征。
    • 伽马校正(Gamma Correction):调整图像的亮度,修复过暗或过亮区域。
  • 单应性变换(Plane-to-Plane Homography)
    目的:校正因相机拍摄角度引起的图像倾斜投影变形问题。

    • 利用地面平面和垂直建筑平面的几何特性,对图像进行投影变换。
    • 将带有倾斜感的建筑物拉直,使其在图像中看起来更加正立。

视觉改进:从左图到右图,光照和建筑物边界的清晰度明显提高,图像大部分噪声消除,例如色彩均衡和锐化效果。
建筑形状拉直:预处理后的图像中,建筑物看上去更加对齐,并且轮廓(如建筑的边缘和顶部点)更易于识别


预处理步骤对语义分割的影响

在这里插入图片描述
左图(a):未经处理的原始街景图像(来自 Google Street View)。
右图(b)未经预处理情况下语义分割结果,展示了算法在分割建筑物区域时的失败案例

在这里插入图片描述
左图 (a):显示经过伽马校正(Gamma Correction)后的预处理图像,目的是改善图像亮度和对比度
右图 (b):展示了在应用预处理后,语义分割的改进结果。图示中不同颜色代表语义分割后的分类结果,例如建筑物、草地、天空等。


定义感兴趣的区域

在这里插入图片描述
图6中的分割是令人满意的;然而相邻的建筑被组合成一个单一的连接组件(都是同一个连接子区域的一部分)
高度估计的下一步是识别建筑物子区域中的最高点。然而,当相邻的建筑组合成一个连接的组件时,最高点可能属于错误的建筑。为了帮助避免选择属于不正确建筑物的点,开发了以下水平搜索区域识别算法。

红色闭合线
代表建筑物的实际轮廓的俯视投影,提供了与视线方向相关的边界信息
所有分割点显示了建筑边缘在该坐标系下的表现,是高度提取过程中最核心的数据来源

绿色直线
代表了摄像机视线方向,直接与目标建筑进行对准
用于定义建筑物的中心线,对应建筑投影区域的主要方向

蓝色虚线三角形
表示建筑物的感兴趣区域投影范围,可根据相机视角范围(Field of View, FOV)定义。
角度范围为 θ m i n \theta_{min} θmin ~ θ m a x \theta_{max} θmax,分别为感兴趣区域的两侧边界

在这里插入图片描述
(a) 语义分割结果:显示经过语义分割模型处理后的街景图像,图像中使用不同颜色表示各语义类别(如建筑物、道路、天空等)。
(b) 提取的搜索区域:表示从语义分割结果中提取的感兴趣区域(搜索区域),主要聚焦于与建筑物相关的部分,为后续建筑高度估算奠定基础。


建筑物轮廓提取和顶点检测

在这里插入图片描述
(a) 最大连通区域 (Largest connected component):提取了被语义分割所得的建筑物区域中最大的连通区域,排除了无关区域。

白色区域代表建筑物,黑色区域则为背景或被过滤掉的小连通区域。
只保留覆盖面积最大的连通区域,以确保目标区域的完整性,同时消除语义分割时可能的误分类噪声

(b) 建筑轮廓与顶部点 (Building contour and top points):基于最大连通区域,进一步提取建筑轮廓并标注建筑的顶部点,为后续的高度计算提供关键数据。

黑色线条显示建筑物的轮廓线,是通过对最大连通区域进行边缘检测获取的。
图中标注了两个点:
红色点:建筑物的一个参考顶点,可能是初步提取的最高点。
黄色点:最终确定的建筑物最高点,用于估算建筑高度。


建筑高度估算的两步关键流程

在这里插入图片描述
(a) 搜索区域与顶点标注
背景: 输入图像经过语义分割后,在图中使用不同颜色表示不同区域(如道路、天空、建筑等)。
黄色和紫色垂直线: 界定了感兴趣的搜索区域,表示专业算法关注的建筑物宽度范围。
黑色轮廓: 表示算法识别出的建筑物边界线,用于高度估算的基础。
浅蓝圆点: 标记了建筑物的最高点,用于估算高度的顶部点位置。

(b) 高度估算结果
绿色水平线: 对应建筑物的顶部轮廓线,用于估算高度的上界。
红色水平线: 表示建筑物的底部线,通常与地面或一层的标准高度对齐。
黄色和紫色垂直线: 对应搜索区域的左右边界,与左图 (a) 保持一致。
数字“7.596”: 表示算法根据顶部和底部线的位置,结合摄像机参数估算出的建筑物实际高度

流程如下:

  1. 语义分割与目标区域提取:
    输入的街景图像首先经过语义分割,标注出建筑、天空、地面等不同类别,并生成分割掩模(如(a) 图所示)。
    检测感兴趣区域的关键部分,定义上边界下边界,排除非建筑部分(如天空和道路)。
  2. 搜索区域划分与轮廓标记:
    垂直方向上通过黄色紫色线,划定建筑物的搜索范围,确保建筑物的完整性。
    利用轮廓检测技术提取建筑物的边界,并标记建筑物的最高点(蓝色圆点)。
  3. 实际高度估算:
    在右图(b) 对应的实际图像中,绘制顶部线(绿色)底部线(红色)
    借助建筑物在图像中的位置、高度像素差异以及摄像机参数,利用几何投影关系计算建筑物的实际高度。
    最终结果以数值形式显示(如“7.596”)

平面单应性变换和校正

在这里插入图片描述
(a) 原始输入图像,未经任何处理的街景视图;
(b) 经平面单应性变换(plane-to-plane homography)和校正后的图像,解决了建筑物倾斜和畸变的问题

通过平面映射算法(plane-to-plane homography),解决由于相机视角产生的透视失真问题, 建筑物得以“拉直”,变得垂直于图像。
校正后消除了由于拍摄角度导致的透视变形
整体图像的框架和比例更规则,为后续的语义分割奠定了良好基础。

(c ) 基于校正图像生成的语义分割结果,显示了不同语义类别标记的像素区域


通俗解释:平面单应性变换(Homography Matrix)及应用

在建筑高度估算中,原始图像通常会因为相机的拍摄角度pitch值)不同而发生透视失真。

  • 例如,拍摄高楼时,街景相机通常会向上倾斜。这会导致建筑看起来像是“向后倾斜”的样子,使图像中的线条并非垂直。
  • 为了计算建筑高度,我们需要把这些倾斜的图像矫正为“正视图”,就好像是在建筑正前方以零角度拍摄的一样

什么是平面单应性 (Homography)?
单应性是描述同一平面上两幅图像之间几何关系的数学模型。

  • 假设你从两个不同角度拍摄同一平面(例如建筑正面),图像会因拍摄角度不同而呈现变化(透视失真)。
  • 单应性变换可以调整一幅图像,将它“对齐”到另一幅图像,使两幅图像的内容匹配(同步)。

如何实现单应性变换?
单应性用 3×3的矩阵 H H H 表示,它将一个图像的点映射到另一个图像中对应的点
p ′ = H ⋅ p p' = H \cdot p p=Hp

  • p p p:在原图像中的一点(用坐标 x , y x, y x,y 表示);
  • p ′ p' p:在变换后新图像中的对应点;
  • H H H单应性矩阵,描述两幅图像之间的几何关系。

过程解释:

  • 原始问题:相机倾斜的影响
    在街景图像中,建筑由于相机的拍摄角度可能会产生倾斜或畸变,这会破坏建筑的真实比例和高度
    例如,当相机仰视拍摄时,建筑上部会显得比下部更小,这种失真会导致高度估算不准确
  • 如何校正?使用单应性变换
    首先,我们需要两幅图像
    • 一个初始倾斜角度(有pitch)的图像;
    • 一个假设为零倾斜角度(无pitch)的标准图像。
    • 然后,我们选取两幅图像中对应的点对(例如同一个窗户的角点)。
    • 只需选取至少 4 对点,这些点经过计算可以生成一个单应性变换矩阵 H H H
    • 使用矩阵 H H H,可以将倾斜图像的所有像素点“投影”为零倾斜角度的标准视图,就像是从建筑的正面直接拍下来的效果

使用校正模型对建筑物实际高度估算结果的影响

在这里插入图片描述
(a) 搜索区域的分割结果,通过语义分割模型标注出建筑物的相关区域;
(b) 使用校正模型的高度估算结果,考虑透视失真的校正后,计算出较为准确的建筑物高度 (47.772)
(c ) 未使用校正模型的高度估算结果,未考虑透视失真,仅通过简单像素高度计算出的高度值 (28.273)

校正模型作用:

  • 修复**拍摄角度(如仰视拍摄)**导致的建筑顶部“远小近大”的透视失真问题。
  • 使用基于校正因子的数学模型 (关于校正模型的详细请查看论文),将图像中的像素高度正确映射到实际高度。

自动选择相机仰视角度 (pitch)

在这里插入图片描述
自动选取合适的仰视角度是为了使建筑物的顶部能够完全出现在图像中,同时去除冗余部分(如天空)

流程开始:

  1. 设置初始 pitch 值为 0
    初始化相机的仰视角度 0°,并将此角度作为初始输入。
  2. 图像捕获与分割
    当前 pitch 值下,获取图像并进行语义分割,以识别建筑物区域以及判断建筑物是否完全显示
  3. 判断顶端连通区域是否出现在图像顶部
    如果分割结果表明建筑物的连通区域延伸到顶部,说明当前视角适合拍摄。流程结束。
    如果没有延伸到顶部,说明相机的视角需要调整。
  4. 增加 pitch 值
    一定的步长增加 pitch 值(通常为固定的角度,例如 5° 或 10°),重新获取图像并重复前述检查。
  5. 最高 pitch 值限制
    如果 pitch 增加到最大值时仍无法满足要求,说明无法获取到完整的建筑物顶部区域。流程停止,并显示“No pitch value found”。
  6. 使用已有图片
    若未找到顶端对应的 pitch 值,可以选择使用最接近的下载图像进行后续处理

从OpenStreetMap (OSM) 数据中提取建筑的边界轮廓以及节点信息

在这里插入图片描述
(a) 建筑边界在 OSM 中的整体视图
(b) 建筑边界上的一个具体节点,作为后续分析的关键地理参考点


相机到建筑物水平距离的几何模型

在这里插入图片描述
Camera (相机位置):
表示相机在拍摄场景中的位置,作为坐标原点。使用相机参数(如焦距)结合几何关系估算建筑物的相对距离和高度。

Building(建筑物):
建筑物是目标对象,其底部靠近地面,被投影到不同的距离平面。

虚线框(黄色矩形框):
表示建筑物在相机视场中的投影视图,模拟建筑在二维图像空间的数据表示。

关键距离:
红色箭头 d m d_m dm:表示 实际测量的相机到建筑物的距离,通过平面测量或 GPS 数据获得。
蓝色箭头 d ′ d' d:表示 相机到建筑物的投影距离,是一个在计算中应用的几何约束距离
绿色箭头:垂直方向上的辅助距离,用于连通不同设施或几何关系

高度补正:
通过蓝色箭头 d ′ d' d 代替红色箭头 d m d_m dm 参与计算,消除相机角度对建筑高度估算的误差


高度计算

公式:
h ^ b = h u ⋅ d ′ / f + h c \hat{h}_b=h_u\cdot d^{\prime}/f+h_c h^b=hud/f+hc

  • h ^ b \hat{h}_b h^b: 估算的建筑高度 (Estimated Building Height)。
  • h u h_u hu: 建筑最高点相对于图像的中线(水平中线)所占的 像素高度,表示为像素单位的垂直距离
  • d ′ d' d: 相机到建筑的水平距离 (Projected Distance to the Building)
  • f f f: 相机的焦距 (Focal Length)
  • h c h_c hc: 相机距地面的高度, 表示相机安装点到地面的固定高度,即相机本身的基础高度,通常由相机持有者(如人或车辆)的高度决定,为一个常量

效果

在这里插入图片描述
展示了针对不同类型住宅建筑的高度估算结果示例

(a) 与 (b)高层公寓建筑 (apartment buildings)
在每张图片顶部显示了估算出的建筑高度值,分别为 44.451 米和 35.401 米。
两栋建筑均为城市中常见的高层公寓楼,模型通过远程拍摄图像对其高度完成了估计。

(c ) 与 (d)低层住宅 (houses)
图片展示了独立式住宅的高度估算值,分别为 9.152 米和 9.154 米。
这些建筑大多为二层普通民用住宅,是常见的低矮建筑。


在这里插入图片描述
针对不同类型的 非住宅建筑(Non-residential Buildings) 的高度估算结果可视化示例

(a) 办公楼 (Office Building)
估算高度为 21.683 米,属于较高类型的建筑。

(b) 小型办公建筑 (Small Office Building)
估算高度为 8.714 米,是一种相对较低的办公场所建筑。

(c ) 零售店 (Retail Store)
估算高度为 12.069 米,为常见的中型商业建筑高度。

(d) 餐厅 (Restaurant)
估算高度为 6.315 米,为低矮的单层小型商业建筑


在这里插入图片描述
两种算法**(BHEDC 和 iBHEDC)** 在建筑高度估算任务中的 绝对误差分析结果:

  • iBHEDC 显著优于 BHEDC

在这里插入图片描述
iBHEDC(改进后的建筑高度估算算法) 中各项改进对估算性能提升的贡献

Image preprocessing(图像预处理):
对误差减少的贡献为 0.13 米
通过改进图像预处理步骤,优化了输入数据质量,对误差减少的贡献较小。

Search region identification(搜索区域识别):
对误差减少的贡献为 1.27 米
这是贡献最大的改进模块,表明通过更精确地定位建筑的搜索区域,显著提高了高度估算的准确性。

Post-homography height correction(单应性后高度校正):
对误差减少的贡献为 0.81 米
单应性(Homography)变换后进行校正,有效修正了几何偏差,显著减少了误差。

Projected camera-building distance(投影相机-建筑距离校正):
对误差减少的贡献为 0.34 米
通过精确估算相机与建筑之间的投影距离,纠正了距离测量误差,带来了适度的性能提升


挑战

在这里插入图片描述
该图说明由于相机到建筑物的距离测量错误,可能导致建筑高度估算出现偏差的问题

两条测量线:
红色线错误的距离测量线
表示从相机到建筑“入口”的距离,这是假设中的错误测量路径。
绿色线正确的距离测量线
表示从相机到建筑主体的基底(最靠近主结构的点)的距离,这是准确的测量路径


质疑

  • 数据集是否足够多样化以涵盖不同类型的建筑和城市环境?
  • 数据集中是否包含足够多的复杂场景(如遮挡、光照变化)以验证算法的鲁棒性?
  • 在实际应用中,街景图像的质量和分辨率可能会影响算法的表现,这一点是否被充分考虑?
  • 系统在实时应用中的表现如何,例如在动态城市环境中的部署?

http://www.kler.cn/a/418205.html

相关文章:

  • 系统架构:MVVM
  • [Deep Learning] 深度学习中常用函数的整理与介绍(pytorch为例)
  • Kafka-Connect
  • python实现自动计算排工期
  • 使用 pycharm 新建使用 conda 虚拟 python 环境的工程
  • uniapp实现组件竖版菜单
  • 【赵渝强老师】PostgreSQL的段、区和块
  • 太古可口可乐香港通过SAP S/4HANA推动数字化转型
  • 延时系统建模,整数延时与分数延时,连续传函与离散传函,Pade近似与Thiran近似,Matlab实现
  • 会议直击|美格智能亮相2024紫光展锐全球合作伙伴大会,融合5G+AI共拓全球市场
  • SpringBoot条件装配@Conditional
  • C语言:深入理解指针(1)
  • 【优选算法】模拟
  • 【Linux】进程控制,手搓简洁版shell
  • LeetCode 动态规划 任意子数组和的绝对值的最大值
  • 【机器学习】入门机器学习:从理论到代码实践
  • 8)语法分析:引导词
  • 解锁软件构建的艺术:六种架构模式的解析
  • Matlab模块From Workspace使用数据类型说明
  • leetcode 502.IPO
  • Synaplify之identify_debugger抓信号
  • 使用 Selenium 和 Python 爬取腾讯新闻:从基础到实践
  • SystemUI 下拉框 Build 版本信息去掉
  • LeetCode题练习与总结:找到字符串中所有字母异位词--438
  • 数据库日期时间用什么类型?
  • JMeter实时性能压测可视化系统整合