在点云数据处理中,边缘点提取是几何特征识别中的一个基础环节。无论是桥梁截面轮廓提取、预制梁端面孔洞识别,还是建筑物外轮廓重建、构件尺寸测量,都需要先从离散点云中提取能够反映边界形态的点集。
对于规则构件而言,边缘点通常对应结构外轮廓、孔洞边界、板件边界或几何突变区域;对于不规则点云而言,边缘点则反映了点云分布的外包络形态。边缘点提取的质量,直接影响后续轮廓拟合、尺寸计算、区域分割和三维重建的精度。
本期内容介绍一种基于 Alpha Shapes 思想的点云边缘提取方法,并结合 MATLAB 给出实现流程。
1. 为什么不用简单凸包提取边缘?
在二维点云处理中,最容易想到的边界提取方法是凸包。凸包可以理解为用一根橡皮筋套住所有点后形成的最外侧边界。对于形状简单、整体外凸的点云,凸包方法可以快速得到外轮廓。
但是在实际工程点云中,目标形态往往并不总是外凸的。例如,预制梁端面可能存在箱室孔洞,建筑物轮廓可能存在凹角,钢板或构件表面可能存在局部缺口,截面点云也可能包含内外两类边界。
如果仍然采用凸包方法,就会把凹陷区域直接"包住",导致边界结果过于粗糙,无法表达真实几何形状。因此,需要一种比凸包更加灵活的边界表达方法。Alpha Shapes 正是为了解决这类问题而提出的。
2. Alpha Shapes 的基本思想
Alpha Shapes 最早由 Edelsbrunner 等提出,用于描述平面离散点集的几何形状。它可以看作凸包的一种推广形式,能够通过尺度参数控制边界细节,从而表达点集的"粗略形状"或"精细形状"。
与凸包相比,Alpha Shapes 的优势在于它不仅可以提取外边界,还可以表达局部凹陷和孔洞边界。简单来说,凸包只关心点集最外侧的凸边界,而 Alpha Shapes 可以根据尺度参数识别更贴近真实形态的边界。
Alpha Shapes 后来也被扩展到三维空间。Edelsbrunner 和 Mücke 提出了三维 Alpha Shapes 的形式化定义,用于有限三维点集的形状表达和外形重构,其几何形态由 Delaunay 三角剖分和参数 α 控制。对于点云处理而言,Alpha Shapes 的意义在于:它提供了一种根据点云局部分布关系识别边界的几何方法。
3. "滚动圆"如何理解 Alpha Shapes?
在工程实现中,Alpha Shapes 可以用"滚动圆"的方式进行直观理解。
假设在二维点云中有一个待判断点 P,如果存在一个半径为 r 的圆,能够经过点 P 和其附近的另一个点 Q,并且这个圆内部不包含其他点,那么点 P 可以认为是边缘点。
直观来说,如果一个圆可以从点云外侧贴着某个点滚过,并且圆内部没有被其他点占据,则该点处于点云边界上。对于点云内部点,其周围各个方向通常都有邻近点,构造出来的圆内部很容易包含其他点,因此不容易满足空圆条件。而对于边界点,一侧是实体点云,另一侧是空白区域,因此更容易找到一个内部为空的圆。
4. 与点云边界提取相关的研究
Alpha Shapes 已经被广泛用于 LiDAR 点云和建筑轮廓提取等任务。例如,Shen Wei 在建筑物边界提取研究中,将 Alpha Shapes 用于 LiDAR 点云边界识别,结果表明该方法能够有效提取点云的外边界和内边界,并适用于凸形和凹形建筑边界。
近年来,相关研究也在进一步改进 Alpha Shapes 方法。Liu 等提出了自适应追踪 Alpha Shapes 与上下文拓扑优化相结合的建筑轮廓提取方法,用于从机载 LiDAR 点云中获得更平滑、更规则的建筑轮廓。
这些研究说明,Alpha Shapes 不仅是一个基础几何算法,也可以作为点云轮廓提取、建筑边界识别和三维模型重建中的重要预处理步骤。对于桥梁点云处理而言,虽然研究对象从建筑物变成了桥梁构件,但边缘提取的几何本质是相似的:都是从离散点集中识别外轮廓、孔洞边界或局部构造边界。
5. 算法流程
5.1 读取二维点云
首先读取二维点云数据。每个点包含两个坐标 P_i = (x_i, y_i)。如果原始数据是三维点云,例如 .ply 文件,则需要先将其投影到二维平面。对于梁端面、桥墩侧面、钢板表面等近似平面点云,可以采用 PCA 方法拟合局部平面,然后将三维点转换为二维局部坐标。
5.2 搜索邻近点
对每一个待判断点 P,以 2r 为半径搜索其邻近点。这里的 r 是滚动圆半径。之所以搜索半径是 2r,是因为两个点如果要同时位于一个半径为 r 的圆上,那么这两个点之间的最大距离不能超过圆的直径,即 d ≤ 2r。因此,只需要在 2r 范围内寻找候选邻近点即可。
5.3 构造候选圆
对于当前点 P(x, y) 和邻近点 Q(x1, y1),如果两点距离小于或等于 2r,则可以构造两个半径为 r 的候选圆。这两个圆分别位于线段 PQ 的两侧,其中 O1 和 O2 是两个候选圆心。
5.4 判断是否为空圆
计算其他邻域点到候选圆心的距离。如果所有其他邻域点到某个候选圆心的距离都大于 r,说明该圆内部不包含其他点,即满足空圆条件。此时,当前点被判定为边缘点。
5.5 保存边缘点与圆心
当某个点满足边缘判据后,保存该点坐标和对应圆心坐标。边缘点用于显示最终提取结果;圆心坐标可以用于绘制滚动圆,帮助理解算法过程。
6. MATLAB 实现代码
下面给出完整 MATLAB 代码。该代码适用于二维点云数据,数据文件前两列为 x 和 y 坐标。
部分代码
%% ========================================================================
% 基于滚动圆 / Alpha Shape 判据的分割面域点云边缘提取
% 适用于:分割面域点云.ply
% 思路:
% 1. 读取三维点云
% 2. PCA 拟合局部平面,将三维点云投影到二维平面
% 3. 基于滚动圆 alpha shape 判据提取二维边缘点
% 4. 将边缘点映射回三维点云中显示
% ========================================================================
clc;
clear;
close all;
%% ====================== 1. 读取点云 ======================
plyPath = '分割面域点云.ply';
ptCloud = pcread(plyPath);
pts3D = ptCloud.Location;
% 去除 NaN
pts3D = pts3D(~any(isnan(pts3D),2), :);
fprintf('原始点云点数:%d\n', size(pts3D,1));
figure;
pcshow(pointCloud(pts3D), 'MarkerSize', 20);
title('原始分割面域点云');
xlabel('X'); ylabel('Y'); zlabel('Z');
axis equal;
ax = gca;set(gcf, 'Color','w');
set(ax, 'XColor','k', 'YColor','k', 'ZColor','k', 'Color','w');
代码效果图

图1 原始点云图

图2 映射后二维边缘点识别图

图3 三维边缘点识别图
7. 关键参数说明
该方法中最重要的参数是滚动圆半径 r。它决定了边缘识别的尺度。
当 r 较小时,滚动圆能够进入较小的凹陷区域,因此算法对局部细节更加敏感,能够提取更多细小边界。但与此同时,噪声点、局部稀疏区域或不连续点也可能被误判为边缘。
当 r 较大时,边缘结果更加平滑,抗噪能力更强,但可能会忽略一些局部凹陷、小孔洞或细节边界。因此,参数 r 的选取应结合点云平均点距、边界细节尺度以及噪声水平综合确定。
一般可以按照下面的经验调整:边缘点过多、结果过碎时,适当增大 r;边缘点过少、轮廓漏提时,适当减小 r;点云密度较高时,r 可以适当取小;点云密度较低时,r 应适当取大。
8. 三维点云如何使用?
需要说明的是,本文代码中的滚动圆方法本质上是二维边缘提取算法。如果处理对象是三维点云,例如 .ply 文件中的梁端面点云、桥墩面域点云或钢板表面点云,则可以先将三维面域点云投影到二维平面中。
常用处理流程为:三维点云 XYZ → PCA 拟合局部平面 → 投影为二维局部坐标 u-v → 基于 Alpha Shapes 提取二维边缘点 → 根据点索引映射回原始三维点云。
这种处理方式适合近似平面的三维点云,例如梁端面点云、桥墩侧面点云、钢板表面点云、截面切片点云和分割后的平面区域点云。
如果点云本身是明显曲面,或者包含多个不共面的面域,则不适合直接整体投影。此时应先进行点云分割,将不同面域分开,再分别进行局部投影和边缘提取。
9. 工程应用分析
在桥梁工程点云处理中,边缘点提取具有较强的实际意义。
以预制拼装梁为例,端部区域通常包含外轮廓、箱室孔洞、剪力键、预应力管道孔洞等复杂构造。通过边缘点提取,可以增强这些构造的几何边界,为后续轮廓拟合、孔洞识别、剪力键定位和尺寸偏差分析提供基础。
在桥墩、桥塔和钢结构板件处理中,边缘点同样可以用于识别构件边界、局部缺损区域、孔洞边界和几何突变区域。
因此,Alpha Shapes 方法虽然原理简单,但在工程点云处理中具有较强的实用价值。它既可以作为独立的边界提取方法,也可以作为后续复杂算法的预处理步骤。
10. 方法特点与不足
基于 Alpha Shapes 的边缘点提取方法具有以下优点:几何意义清晰,容易理解和实现;能够识别凹陷边界和一定尺度下的内部孔洞边界;适合二维点云和近似平面的三维面域点云;可以与轮廓拟合、区域分割、构件识别等后续步骤结合使用。
但该方法也存在一定不足。首先,参数 r 对结果影响较大,不同点云密度下需要重新调整。其次,当点云噪声较多或局部密度不均匀时,可能出现边缘误提或漏提。最后,对于复杂曲面点云,二维投影可能造成几何信息损失,需要采用局部投影、分块处理或三维边界提取方法。
11. 小结
本文介绍了一种基于 Alpha Shapes 思想的点云边缘点提取方法。该方法通过 KDTree 搜索邻域点,并利用滚动圆空域判据判断点云边界。
其核心思想是:对于每一个待判断点,如果存在一个半径为 r 的空圆经过该点和其邻近点,则说明该点一侧存在空域,因此可以将其判定为边缘点。
该方法实现简单、几何意义明确,适合二维点云以及近似平面的三维面域点云边缘提取。在桥梁点云处理中,可用于截面轮廓、孔洞边界、构件边缘和局部构造边界识别,是点云几何特征提取和数字化建模中的重要基础方法。