Open3D 点云配准-FPFH特征计算(原理详细版)

目录

一、概述

二、SPFH(Simplified Point Feature Histograms)

2.1原理

2.2几何关系

2.3直方图生成

三、FPFH(Fast Point Feature Histograms)

3.1原始点云

3.2特征向量生成

3.3为什么使用33维度

3.4应用场景

四、特征点匹配的判断

4.1.特征提取

4.2特征匹配

4.3初始配准(RANSAC)

4.4 精细配准(ICP)


Open3D点云算法汇总及实战案例汇总的目录地址:

Open3D点云算法与点云深度学习案例汇总(长期更新)-CSDN博客


一、概述

博客中代码引用地址:Open3D Ransac点云配准算法(粗配准)Open3D 点对点的ICP算法配准(精配准)

        FPFH(Fast Point Feature Histograms)特征计算是通过描述点云中每个点的局部几何关系来生成的,FPFH特征向量的维度是33。FPFH特征计算分为两个主要步骤:SPFH(Simplified Point Feature Histograms)和FPFH。以下是详细的步骤和几何关系描述。

二、SPFH(Simplified Point Feature Histograms)

2.1原理

        SPFH特征通过计算点与其邻域内点的几何关系来生成。SPFH的特征向量由三个角度直方图组成,每个角度直方图被分成11个bins,总共33个bins。三个角度直方图描述了以下几何关系:

  1. α(alpha):描述点与其邻居点的法向量之间的夹角。
  2. φ(phi):描述点的法向量与两个点的连线之间的夹角。
  3. θ(theta):描述邻居点的法向量与两个点的连线之间的夹角。

        每个角度直方图被分成11个bins,总共33个bins(3个角度直方图 * 11个bins),因此SPFH特征向量的维度是33。

2.2几何关系

2.3直方图生成

1.将每个角度值分配到直方图的bins中:
        - 将 α、ϕ、θ 分别映射到各自的11个bins中。
        - 例如,假设 α 的范围是 [0, π],我们将其等分成11个区间(bins),每个区间对应一个bin。
2.统计频数:
        - 对于每个点,统计所有邻居点的
        - α、ϕ、θ 值落在哪个bin中,并增加相应bin的计数。
3.归一化:
        - 将直方图中的频数归一化,以使特征向量具有尺度不变性。

三、FPFH(Fast Point Feature Histograms)

3.1原始点云

        FPFH在SPFH的基础上,通过加权累加邻域内点的SPFH特征,进一步增强了描述能力。具体步骤如下:
        1.计算每个点的SPFH特征:对每个点计算其SPFH特征向量(33维)。
        2.加权累加邻域内点的SPFH特征:

3.2特征向量生成

1.初始计算:
        - 对每个点 p,首先计算其SPFH特征向量。
        - SPFH特征向量由三个角度直方图的频数构成,每个直方图有11个bins,总共33个bins。
2.邻域累加:
        - 对每个点 p,通过加权累加其邻域内点 q 的SPFH特征,生成最终的FPFH特征向量。
        - 加权系数是邻域点到点 p 的距离的倒数。
FPFH特征向量的维度仍然是33,这是因为FPFH在计算过程中累加了邻域内点的SPFH特征,但并没有改变特征向量的维度。FPFH特征向量包含了每个点及其邻域内点的几何信息,具有较高的描述能力和鲁棒性。

3.3为什么使用33维度

  1. 高描述能力:33维特征向量能够较全面地描述点的局部几何结构。
  2. 计算效率:相对于其他更高维度的特征向量(如PFH),FPFH在保证描述能力的同时,计算效率更高。
  3. 鲁棒性:FPFH通过累加邻域内点的SPFH特征,增强了特征的鲁棒性,使其在噪声和不完全数据下依然表现良好。

3.4应用场景

  1. 点云配准:使用FPFH特征匹配源点云和目标点云的对应点对进行初始配准。
  2. 3D物体识别:通过FPFH特征进行物体识别和姿态估计。
  3. 场景重建:使用FPFH特征在多视角点云数据中进行匹配和重建。

四、特征点匹配的判断

        使用 FPFH 特征进行点云配准的核心思想是通过特征匹配来找到源点云和目标点云中的对应点对。在具体的配准过程中,匹配的步骤如下:

4.1.特征提取

        首先对源点云和目标点云分别进行 FPFH 特征提取。每个点的 FPFH 特征向量描述了该点的局部几何结构。

# 计算源点云和目标点云的 FPFH 特征
source_fpfh = FPFH_Compute(source)
target_fpfh = FPFH_Compute(target)

4.2特征匹配

        使用特征匹配算法在源点云和目标点云中找到相似的特征向量。这一步通过比较每个点的 FPFH 特征向量来确定对应点对。

距离度量:常用的度量方式是欧氏距离,即计算两个 FPFH 特征向量之间的距离。如果距离足够小,就认为它们是对应点对。

在特征匹配过程中,欧式距离用于衡量两个特征向量的相似性。给定两个特征向量 f ,它们的欧式距离计算公式如下:

        FPFH特征向量之间的欧式距离与点在空间中的实际XYZ坐标没有直接关系。FPFH特征向量描述的是点的局部几何结构,而不是点的绝对位置。

# 示例:计算两个特征向量之间的欧氏距离
def compute_distance(fpfh1, fpfh2):
    return np.linalg.norm(fpfh1 - fpfh2)

4.3初始配准(RANSAC)

        在找到一组初始的特征匹配对后,使用 RANSAC(随机采样一致性)算法来估计初始变换矩阵。RANSAC 算法通过随机采样和迭代优化,找出最优的变换矩阵,使得更多的点对成为内点(即满足配准条件的点对)。

# 使用 RANSAC 进行初始配准
result_ransac = o3d.pipelines.registration.registration_ransac_based_on_feature_matching(
    source, target, source_fpfh, target_fpfh, True, distance_threshold,
    o3d.pipelines.registration.TransformationEstimationPointToPoint(False),
    4, [
        o3d.pipelines.registration.CorrespondenceCheckerBasedOnEdgeLength(0.9),
        o3d.pipelines.registration.CorrespondenceCheckerBasedOnDistance(distance_threshold)
    ], o3d.pipelines.registration.RANSACConvergenceCriteria(4000000, 500)
)

4.4 精细配准(ICP)

        在初始配准的基础上,使用 ICP(Iterative Closest Point)算法进行精细配准。ICP 算法通过迭代优化,进一步调整变换矩阵,使得源点云和目标点云之间的对齐误差最小化。

# 使用 ICP 进行精细配准
icp_result = o3d.pipelines.registration.registration_icp(
    source, target, distance_threshold, result_ransac.transformation,
    o3d.pipelines.registration.TransformationEstimationPointToPlane(),
    o3d.pipelines.registration.ICPConvergenceCriteria(max_iteration=30)
)

搭配PCL点云配准中的FPFH特征是一种常用的方法。FPFH特征是一种由点对间的特征来描述点云的局部形状信息的描述子。它的计算步骤如下: 首先,根据输入的点云数据建立一个k-最近邻(k-Nearest Neighbor,kNN)搜索结构。 接下来,对每个点,找到其最近的k个邻居点。 然后,计算每个点的法向量,并对其进行归一化。 之后,将每个点与其邻域内的每个邻居点进行连接,形成一个点对集合。 最后,计算每个点对的一个特征向量,其中包含了方向角、高度角和距离差等信息。 将FPFH特征用于点云配准中的步骤如下: 首先,将待配准的源点云和目标点云分别计算出各自的FPFH特征。 然后,使用一种配准算法(例如ICP)对源点云和目标点云进行初始配准。 接下来,根据源点云和目标点云的FPFH特征计算两者之间的匹配关系。 然后,根据匹配关系对源点云和目标点云进行进一步的配准,并优化其刚体变换的参数。 最后,根据优化后的刚体变换参数对源点云进行配准。 通过搭配PCL点云配准中的FPFH特征,可以有效地进行点云的配准任务。它能够提取出点云的局部形状信息,并通过匹配关系计算出点云的刚体变换参数,从而实现点云的准确配准。同时,FPFH特征具有计算简单、鲁棒性强等特点,可以适用于各种类型的点云数据。因此,搭配PCL点云配准FPFH特征是一种常用且有效的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值