文献下载链接:https://download.csdn.net/download/m0_37957160/12919965

简单说明原理就是:用一个点邻域内点的法向量计算该点的法曲率,根据欧拉公式得法曲率与主曲率的关系,最后用最小二乘优化得到主曲率。(通过拟合正截面曲率估算三维点云曲面的曲率,正截面曲率就是法曲率)

不管他概念说的有多抽象,反正最终处理的只是数学上定义的xyz的三维坐标而已。

问:就这个啊,i表示p点周围的邻域是从1到m,那么n没有具体含义就是表示与法线有关的计算?,n是法线我知道,我的意思就是这里的下标n没有变化,不像i一样从1到m的变化,n就一直是n,是为了说明法曲率的计算是与法线有关的?

答:是的。

问:一个P点和其邻域内的一个点计算出来的是法曲率,这个计算出来的法曲率是P点的还是怎么理解?

答:是P点的。

问:表示p与邻域内的第1个点的法曲率,表示k与邻域第二个点的法曲率,即就是p有多少个邻域,那么p点就有多少个法曲率?

答:原理上是用邻域的一个点就可以表示p点的法曲率,因为有误差之类的存在,所以用邻域内k个点进行最小二成优化来得到p点的曲率。

选邻域内多个点主要就是为了最小二乘寻优。

问:法曲率是p点的,那么k1和k2分别是哪个点的?

答:P点的。

问:最后获得的特征值k1和k2就是主曲率?为啥有两个主曲率?k1xk2是高斯曲率,一个高斯曲率?

答:数学上就是这么定义的!!!所以计算的k1和k2就是分别表示最大主曲率和最小主曲率

      

#include <iostream>
#include <vector>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/features/normal_3d.h>
#include <pcl/features/principal_curvatures.h>
using namespace std;int main(int argc, char** argv){pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);pcl::io::loadPCDFile<pcl::PointXYZ>("A3  - Cloud.pcd", *cloud); //读取点云cout << "Loaded " << cloud->points.size() << " points." << endl;//显示读取点云的个数// 计算点云的法线pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> n;n.setInputCloud(cloud);//设置邻域点搜索方式pcl::search::KdTree<pcl::PointXYZ>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZ>);n.setSearchMethod(tree);//设置KD树搜索半径// n.setRadiusSearch (0.03);n.setKSearch(10);//定义一个新的点云储存含有法线的值pcl::PointCloud<pcl::Normal>::Ptr normals(new pcl::PointCloud<pcl::Normal>);//计算出来法线的值n.compute(*normals);// 建立主曲率计算pcl::PrincipalCurvaturesEstimation<pcl::PointXYZ, pcl::Normal, pcl::PrincipalCurvatures> p;// 提供原始点云(没有法线)p.setInputCloud(cloud);// 为点云提供法线p.setInputNormals(normals);// 使用与法线估算相同的KdTreep.setSearchMethod(tree);//p.setRadiusSearch(1.0);p.setKSearch(10);// 计算主曲率pcl::PointCloud<pcl::PrincipalCurvatures>::Ptr pri(new pcl::PointCloud<pcl::PrincipalCurvatures>());p.compute(*pri);cout << "output points.size: " << pri->points.size() << endl;// 显示和检索第0点的主曲率。cout << "最大曲率;" << pri->points[0].pc1 << endl;//输出最大曲率cout << "最小曲率:" << pri->points[0].pc2 << endl;//输出最小曲率//输出主曲率方向(最大特征值对应的特征向量)cout << "主曲率方向;" << endl;cout << pri->points[0].principal_curvature_x << endl;cout << pri->points[0].principal_curvature_y << endl;cout << pri->points[0].principal_curvature_z << endl;return 0;
}

PCL库连接:https://pointclouds.org/documentation/classpcl_1_1_principal_curvatures_estimation.html

(曲率系列2:)Paper6:Curvature Estimation of 3D Point Cloud Surfaces Through the Fitting of Normal相关推荐

  1. 【复现 | 论文】Seg4Reg Networks for Automated Spinal Curvature Estimation

    Seg4Reg Networks for Automated Spinal Curvature Estimation 用于自动脊柱曲率估计的 Seg4Reg 网络 [论文阅读] Abstract 提出 ...

  2. 视频教程-【CVPR2018】3D Pose Estimation and 3D Model Retriev-强化学习

    [CVPR2018]3D Pose Estimation and 3D Model Retriev 从事IT领域8年,精通计算机视觉. 吴勤明 ¥50.00 立即订阅 扫码下载「CSDN程序员学院AP ...

  3. 【点云系列】An evaluation of feature encoding techniques for non-rigid and rigid 3D point cloud retrieval

    文章目录 1. 简介 2. 动机 3. 流程图 3.1 整体流程 3.2 特征提取 针对非刚性的特征:**IWKS**: 针对刚性的特征:**MTCS:** 3.3 特征编码 词袋(Bag-of-fe ...

  4. Creating a 3D Logo in Photoshop Photoshop系列教程之如何创建一个3D Logo Lynda课程中文字幕

    Creating a 3D Logo in Photoshop 中文字幕 Photoshop系列教程之如何创建一个3D Logo 中文字幕Creating a 3D Logo in Photoshop ...

  5. Learning Multiview 3D point Cloud Registration论文阅读笔记

    Learning multiview 3D point cloud registration Abstract 提出了一种全新的,端到端的,可学习的多视角三维点云配准算法. 多视角配准往往需要两个阶段 ...

  6. PF-Net: Point Fractal Network for 3D Point Cloud Completion

    PF-Net:用于三维点云补全的点分形网络 Abstract   在本文中,我们提出了一种点分形网络(PF-Net),一种新的基于学习的精确高保真点云补全方法.与现有点云补全网络不同,现有点云补全网络 ...

  7. 3D Point Cloud Descriptors in Hand-crafted and Deep Learning Age: State-of-the-Art

    一.introduction 1.The development of 3D point cloud descriptor is going through two major stages: (1) ...

  8. 《3D Point Cloud Registration for Localization using a Deep Neural Network Auto-Encoder》读书笔记

    3D Point Cloud Registration for Localization using a Deep Neural Network Auto-Encoder 题目:基于深度神经网络自编码 ...

  9. 毫米波点云生成论文 阅读笔记 | 3D Point Cloud Generation with Millimeter-Wave Radar

    毫米波点云生成论文 | 3D Point Cloud Generation with Millimeter-Wave Radar Kun Qian, Zhaoyuan He, Xinyu Zhang ...

最新文章

  1. python opencv多边形掩膜
  2. asp.net网站安全常见问题与防范
  3. Fedora 18 在线升级至 Fedora 19 命令步骤
  4. [转载]DB2数据库移植罕有结果片面解析(2)
  5. 主线程是如何向子线程传递数据的?_c++ 利用thread创建线程
  6. 拖拽功能 php,基于Vue实现拖拽功能
  7. 【无标题】写博客的第一天
  8. 50 家硅谷 IT 公司技术博客
  9. Python实现LBP算法
  10. 一:springCloud服务发现者,服务消费者(方志朋《史上最简单的 SpringCloud 教程》专栏读后感)
  11. 安装已经下载好的whl文件
  12. npm 清理缓存命令 【最新的】
  13. java 破解版 aspose-word 切图
  14. 【论文笔记】RETHINKING NETWORK DESIGN AND LOCAL GEOMETRY IN POINT CLOUD: A SIMPLE RESIDUAL MLP FRAMEWORK
  15. 详解时间与空间复杂度
  16. win7右下角的网络图标不显示
  17. 6、Lctech Pi(F1C200S)4.3寸(480*272)16位RGB565LCD屏驱动适配(CherryPi,Mangopi,F1C100S)
  18. linux 没有可用软件包,Linux中“没有可用的软件包XX,但是它被其他软件包引用”的解决方法...
  19. 乌云公开漏洞查询api 查看乌云最新安全漏洞
  20. 如何定位Java源文件_webgisframe.java 源代码在线查看 - 实现网络GPS定位车辆的位置 资源下载 虫虫电子下载站...

热门文章

  1. 客快物流大数据项目(五十二):根据数据库表及字段创建公共模块
  2. [JAVA EE] Thymeleaf 高级用法:模板布局,带参数的引用片段,表单验证,常用校验注解
  3. Android 监听多个Spinner 的点击事件
  4. Android Build.VERSION.SDK_INT
  5. Android DataBinding 入门了解 到实现一个buttton的点击事件
  6. 讯飞语音:客户端未被授权
  7. web app升级—带进度条的App自动更新
  8. 对大学生学习Linux系统的七项实用建议
  9. J2EE基础之JSP
  10. CodeForces Round #287 Div.2