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

ICP之点云特征计算

这次我们来聊一下点云的特征计算方法, 主流的有两类
1:基于直方图的特征计算
2:基于签名的特征计算
这次我将介绍基于直方图的方式。

基于直方图的特征方法中,PFH(Point Feature Histograms)和FPFH(Fast Point Feature Histograms)是两种常用的局部特征描述符。它们主要用于点云配准任务中,通过计算点云中每个点的局部特征来进行匹配。以下是对这两种方法的分析:

1. PFH(Point Feature Histograms)

计算方法

PFH是一种局部特征描述符,主要通过邻域点的法向量关系来描述点的局部几何信息。计算过程分为以下几个步骤:

  1. 邻域搜索:为每个关键点确定一个邻域范围,通常是半径邻域或K近邻。
    假设领域有5个点

  2. 法向量计算:计算关键点和邻域点的法向量。

  3. 特征对计算:对于关键点的邻域内的每一对点 ( p i , p j ) (p_i, p_j) (pi,pj),通过法向量之间的夹角和距离,计算出四个特征参数 ( ( α , ϕ , θ , d ) (\alpha, \phi, \theta, d) (α,ϕ,θ,d)),分别表示点与法向量的角度关系和距离。
    在这里插入图片描述
    先利用法向量计算中间变量
    **加粗样式**
    利用中间变量计算特征参数

  4. 直方图构建:将所有特征对的参数值构建直方图,这个直方图就是关键点的PFH特征。

所构建的直方图特征如下, 只考虑 ( α , ϕ , θ ) (\alpha, \phi, \theta) (α,ϕ,θ)
在这里插入图片描述

优缺点
  • 优点:PFH能较完整地描述局部几何信息,对复杂表面适应性强。
  • 缺点:计算代价高,计算每个点的PFH需要考虑所有邻域点对,导致复杂度为 O ( n 2 ) O(n^2) O(n2)
输入和输出
  • 输入:关键点、邻域点、以及法向量。
  • 输出:关键点的特征直方图,描述了其局部表面的几何分布。

2. FPFH(Fast Point Feature Histograms)

FPFH是PFH的加速版本,通过减少特征对计算的复杂度来提升性能。它分两步进行特征计算,具体如下:

计算方法
  1. SPFH计算:首先为每个点计算一个简化的特征直方图(SPFH),其中只考虑关键点与其邻域点的特征对,而不考虑邻域点之间的特征对关系。每个关键点的SPFH特征描述了该点与其邻域点的关系。
    只考虑查询点和领域点,以及领域点和其领域点的特征SPFH
    在这里插入图片描述

  2. FPFH加权计算:在得到所有关键点的SPFH后,通过加权方式将邻域点的SPFH信息累加到关键点,形成最终的FPFH特征。这样可以在不增加大量计算量的情况下,提高特征的描述力。
    在这里插入图片描述

优缺点
  • 优点:相比PFH,FPFH计算速度更快,复杂度降为 O ( n ) O(n) O(n),且特征信息较为全面。
  • 缺点:FPFH虽然在计算上优化了,但特征描述的完整性略低于PFH,因此在某些精细场景中的匹配效果可能不如PFH。
输入和输出
  • 输入:关键点、邻域点、法向量。
  • 输出:FPFH特征直方图,用于描述关键点周围的局部几何信息。

总结对比

特征计算过程复杂度适用场景优点缺点
PFH邻域内所有点对的特征计算 O ( n 2 ) O(n^2) O(n2)高精度场景特征描述完整计算量大
FPFH邻域内单点对简化加权计算 O ( n ) O(n) O(n)实时场景、速度优先计算速度快,特征丰富描述力稍弱于PFH

在实际应用中,如果计算性能是重点,可以优先选择FPFH;而在对精度要求较高、且计算资源充足的场景,PFH可能会更适用。


http://www.kler.cn/news/368484.html

相关文章:

  • (7) cuda异常处理
  • 桌面运维SOP
  • Python实现摇号系统
  • 什么是AI神经网络?
  • pip在ubuntu下换源
  • Python 自动化运维:Python基础知识
  • Python浪漫之画星星
  • Swarm集群管理常用命令与详解
  • Java程序设计:spring boot(8)——API ⽂档构建⼯具 - Swagger2
  • 论文略读:AnyGPT: Unified Multimodal LLM with Discrete Sequence Modeling
  • python学习记录11
  • 【云原生】云原生后端:网络架构详解
  • Springboot项目中使用WebSocket与前端通信时,AOP的before注解未起作用
  • 探索网页组件化:原生JavaScript动态加载HTML与iframe的使用与比较
  • 基于IMX6ULL开发板LCD点阵显示字符学习
  • FreeSWITCH JSON API
  • 【服务器】服务器部署后端,开放后端端口
  • stm32 开发环境的 搭建
  • Oracle 运维相关概念及操作
  • 逻辑推理学习笔记
  • [mysql]单行函数的练习
  • css知识点梳理2
  • 【论文阅读】PGAN
  • 【北京迅为】《STM32MP157开发板嵌入式开发指南》-第六十七章 Trusted Firmware-A 移植
  • 鸿蒙中常见的性能优化
  • 2024.10.24华为(留学生)笔试题解