快速点特征直方图(FPFH)描述子提取

news2024/10/6 22:26:36

快速点特征直方图(Fast Point Feature Histograms,FPFH)介绍

快速点特征直方图(Fast Point Feature Histograms,FPFH)是一种基于点的描述子,用于描述点云数据中的局部几何信息。FPFH描述子是在法线估计的基础上计算的,它以每个点为中心,考虑其邻域内的几何特征并生成一个直方图。

FPFH描述子的计算过程如下:

  1. 对于点云中的每个点,获取其法线向量。

  2. 构建归一化的球形邻域,以当前点为球心,设置一个半径内的邻域点作为邻居。

  3. 对于当前点和邻居点对,计算其相对位置和法线的角度差,形成一个6维的特征向量。

  4. 基于计算的6维特征向量,构建一个直方图。FPFH描述子的每个bin代表角度信息的范围,通过统计落在每个bin中的邻居数量,形成直方图。

  5. 将所有点的FPFH描述子组合起来,形成整个点云的特征表示。

FPFH描述子具有以下特点:

  • 它可以描述点云的局部几何信息,捕捉点与其邻居之间的关系。

  • FPFH描述子对于点云的尺度、旋转和平移具有一定的不变性

  • 由于FPFH描述子的计算复杂度较低,它在实时应用和大规模点云处理中具有优势

FPFH描述子常用于点云匹配、目标识别、三维重建、配准和分类等计算机视觉和机器人领域的任务中。

代码:

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/features/fpfh.h>
#include <pcl/features/fpfh_omp.h>
#include <pcl/features/normal_3d.h>
#include <pcl/visualization/pcl_visualizer.h>

int main(){
    // 读取点云数据
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
    pcl::io::loadPCDFile("/home/jason/file/pcl-learning/data/bunny.pcd", *cloud);

    // -------
    // 估计法线
    // -------
    pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> ne; // 创建法线估计对象
    ne.setInputCloud(cloud); // 点云数据输入

    pcl::search::KdTree<pcl::PointXYZ>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZ>()); // 创建Kd树对象
    ne.setSearchMethod(tree); // 把Kd树作为搜索方法

    pcl::PointCloud<pcl::Normal>::Ptr cloud_normals(new pcl::PointCloud<pcl::Normal>()); // 用于存储法向量
    ne.setRadiusSearch(0.03); // 设置搜索半径
    ne.compute(*cloud_normals); // 计算法向量

    // ---------------------
    // 估计FPFH特征描述子
    // pcl::FPFHEstimationOMP 多核
    // --------------------

//    pcl::FPFHEstimation<pcl::PointXYZ, pcl::Normal, pcl::FPFHSignature33> fpfh;// 创建FPFH估计对象
    pcl::FPFHEstimationOMP<pcl::PointXYZ, pcl::Normal, pcl::FPFHSignature33> fpfh;
    fpfh.setNumberOfThreads(8); // 设置线程数量
    fpfh.setInputCloud(cloud); // 点云数据输入
    fpfh.setInputNormals(cloud_normals); // 法向量数据输入
    fpfh.setSearchMethod(tree); // 设置kd树为搜索方法

    pcl::PointCloud<pcl::FPFHSignature33>::Ptr fpfhs(new pcl::PointCloud<pcl::FPFHSignature33>()); // 用于保存FPFH特征描述子
    fpfh.setRadiusSearch(0.05); // 设置搜索半径,指定在计算每个点的FPFH描述子时使用的邻域范围; 必须大与估算法向量的领域半径
    fpfh.compute(*fpfhs); // 计算点云的FPFH特征描述子

    // 每个点有一个特征向量
    cout<< "cloud size: " << cloud->size() << std::endl
        << "fpfhs size: " << fpfhs->size() << std::endl;


    return 0;



}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/704388.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Scrapy框架之认识MongoDB

目录 MongoDB 简介 特点 MongoDB的适用场景 MongoDB的行业具体应用 如何抉择是否使用MongoDB MongoDB 简介 MongoDB 是免费开源的跨平台 NoSQL 数据库&#xff0c;命名源于英文单词 humongous&#xff0c;意思是「巨大无比」&#xff0c;可见开发组对 MongoDB 的定位。…

go读写文件总结

别人的经验&#xff1a; 如今任何计算机系统每天都会产生大量的日志或数据。随着系统的增长&#xff0c;将调试数据存储到数据库中是不可行的&#xff0c;因为它们是不可变的&#xff0c;主要用于分析和解决故障的目的。因此&#xff0c;企业倾向于将其存储在文件中&#xff0…

2023一建建筑市政全彩图文教材

本《建筑学全彩图文教材》改编自2022年官方指定的最新版本一级建造师《建筑工程管理与实务》教材。适用于2023年的第一次建造考试。2023年版教材出版上市后&#xff0c;我们将重点关注教材。补充电子版在变更处提供。 本书忠于官方原版教材&#xff0c;并不删除任何知识点&…

当大模型遇到数据仓库 HashData助力LLM规模化应用

6月30日&#xff0c;由 IT168主办的第十六届中国系统架构师大会&#xff08;SACC2023&#xff09;在北京开幕。本届大会以“数字转型 架构演进”为主题&#xff0c;议题涵盖AIGC大数据、多云多活、云成本等多个热门领域。 在会上&#xff0c;酷克数据首席科学家杨胜文发表了题…

UWB超宽带定位技术的原理及定位方法

uwb定位技术即超宽带技术&#xff0c;它是一种无载波通信技术&#xff0c;利用纳秒级的非正弦波窄脉冲传输数据&#xff0c;因此其所占的频谱范围很宽。传统的定位技术是根据信号强弱来判别物体位置&#xff0c;信号强弱受外界 影响较大&#xff0c;因此定位出的物体位置与实际…

JAVA-编程基础-08-Java异常处理全面解析

Lison <dreamlison163.com>, v1.0.0, 2023.04.01 JAVA-编程基础-08-Java异常处理全面解析 文章目录 JAVA-编程基础-08-Java异常处理全面解析什么是异常Exception和Error的区别checked和unchecked异常”关于 throw 和 throws关于 try-catch-finally小结 try-with-resourc…

升级Xcode14.3,项目无法运行解决

报错&#xff1a;link command failed with exit code 1(use -v to see invocaiton) 原因&#xff1a;新版本Xcode删除了特定目录下的一些文件 解决&#xff1a; post_install do |installer|installer.pods_project.targets.each do |target|target.build_configurations.e…

O2OA(翱途)开发平台如何在流程表单中使用基于Vue的ElementUI组件?

本文主要介绍如何在O2OA中进行审批流程表单或者工作流表单设计&#xff0c;O2OA主要采用拖拽可视化开发的方式完成流程表单的设计和配置&#xff0c;不需要过多的代码编写&#xff0c;业务人员可以直接进行修改操作。 在流程表单设计界面&#xff0c;可以在左边的工具栏找到Ele…

Linux--显示当前路径下的所有文件指令:ls

一、ls是list的简写 二、语法&#xff1a; ls [选项] [目录或文件] 三、功能&#xff1a; ①对于目录&#xff0c;该命令列出当前目录下的所有子目录与文件。 ②对于文件&#xff0c;将列出文件名以及其他信息。 四、常用选项&#xff1a; 1.-a 列出目录下的所有文件&…

Java实现将数据转成xmind脑图(附有工具类)。

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;Java、工具类、xmind、脑图、转换☀️每日 一言&#xff1a;昨日已成过去,未来充满可能,唯有珍惜现在。 [TOPC] 前言 当谈到Xmind时&#xff0c;这是一个非常流行的思维导图工具&#xff0c;可…

超级实用!详解Node.js中的path模块和events模块

文章目录 3. path 模块路径操作方法路径格式化方法路径拆分方法 4. events 模块EventEmitter 类创建事件对象注册事件处理函数触发事件一次性事件处理函数异步事件处理函数移除事件处理函数 继承 EventEmitter 类 3. path 模块 用于处理文件路径&#xff0c;包括解析、拼接、规…

删除MySQL中名字首尾固定关键字相同的表

删除MySQL中名字首尾固定关键字相同的表 SELECT CONCAT(drop table , group_concat(TABLE_NAME), ;) FROM information_schema.TABLES WHERE table_schema test AND TABLE_NAME LIKE t_%_history ;查看表列表 SHOW TABLES;通过上图观察发现所有的表都是以 t_ 开头 和以 _his…

Mybatis-Plus学习1

mybatis-plus需要两个依赖&#xff0c;一个lombok&#xff0c;一个mybatis-plus <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version> </dependency> …

Service 基础

今天开始来分享Service 的基础知识&#xff0c;后续我们可以慢慢打磨&#xff0c;分享 Service 的进阶知识和原理 Service 基本概念 Service 是 K8S 最核心的概念了 我们可以通过创建 Service &#xff0c;为一组具有相同功能的容器应用提供一个统一的入口地址&#xff0c;并…

linux上搭建ftp服务

linux上搭建ftp服务简要过程。 1.安装 在目标主机上安装对应软件。 rpm -qa | grep vsftpd # 查看是否已经安装了vsftpd软件 yum install -y vsftpd # 安装2.配置 安装好了之后可在这个路径下编辑配置文件&#xff0c;按需配置&#xff0c;这里采用默认。 vi /etc/vsftp…

螺杆支撑座要怎么选?

螺杆支撑座是连接螺杆和电机的轴承固定座&#xff0c;使用螺杆支撑座可以获得高刚性、高精度的稳定的回转性能&#xff0c;这也是大部分厂商愿意使用的原因之一。 目前&#xff0c;市面上做螺杆支撑座的品牌还比较少&#xff0c;给大家选择的空间也不多&#xff0c;那么我们如何…

centos8运行cloudstack4.18

安装软件&#xff1a; mysql 5.7.42 node v10.24.0 git 2.34.1 jdk openjdk version "11.0.19" 2023-04-18 maven Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739)自行配置&#xff1a;nfs 代码克隆地址&#xff1a; git clone https://git-wip-us…

Lesson1-1:OpenCV简介

图像处理 学习目标 了解图像的起源知道数字图像的表示 1 图像的起源 1.1 图像是什么 图像是人类视觉的基础&#xff0c;是自然景物的客观反映&#xff0c;是人类认识世界和人类本身的重要源泉。“图”是物体反射或透射光的分布&#xff0c;“像“是人的视觉系统所接受的图在…

ss客服让您在Facebook 的客户服务更便捷

ss客服让您在Facebook Messenger 的客户服务更便捷 在这个信息时代&#xff0c;新兴通讯软件蓬勃兴起&#xff0c;比如Facebook Messenger。事实证明&#xff0c;这对企业来说非常有利&#xff0c;同时突出了电子邮件、网络聊天和电话等传统渠道的局限性。在传统渠道上&#xf…

fastadmin表格列表内部自定义按钮

效果图&#xff1a; 直接上代码&#xff1a; 打开js渲染文件---》找到渲染原生的按钮&#xff1a; {field: "operate",title: __("Operate"),table: table,events: Table.api.events.operate,buttons: [//可多个按钮{name: "record", //名称tex…