博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=264

许可

建议每一个文件包含一个描述代码作者的许可,这对于用户了解使用该代码会受到何种约束是十分有用的,PCL是100%的BSD许可的,我们在文件中以C++注释的形式嵌入该许可证,详细见本章源码文件夹下License.txt。如果需要声明其他的版权,添加其他类似的内容就行了(或者原始著作权被改变)

* Copyright (c) XXX, respective authors.

合理命名

到目前为止我们在例程中使用诸如setSigmaS或setSigmaR等简单的词汇来命名set和get功能的函数,在实际中,应该使用更好的命名方法,以便能够真正表示对应参数的功能,在代码的最终版本中我们将重新把setters和getters命名成set/getHalfSize和set/getStdDev以及类似的名字。

代码注释

PCL试图在用户和API文档方面保持高标准,支持Doxygen的文档生成的注释已经在上面的例子中删减掉。实际中,我们的bilateral.h头文件类部分如下:

...
/** \brief Compute the intensity average for a single point
* \param[in] pid the point index to compute the weight for
* \param[in] indices the set of nearest neighor indices
* \param[in] distances the set of nearest neighbor distances
* \return the intensity average at a given point index
*/
double
computePointWeight (const int pid, const std::vector<int> &indices, const std::vector<float> &distances); /** \brief Set the half size of the Gaussian bilateral filter window.
* \param[in] sigma_s the half size of the Gaussian bilateral filter window to use
*/
inline void
setHalfSize (const double sigma_s)
{
sigma_s_ = sigma_s;
}
...
#endif // PCL_FILTERS_BILATERAL_H_

很明显比上面的代码中的注释多了不少,并且都符合一定的格式,这样就是标准的PCL编码风格了,即方便代码的维护,又方便用户的使用和学习,bilateral.hpp文件部分如下:

...
// Copy the input data into the output
output=*input_; // For all the indices given (equal to the entire cloud if none given)
for (size_t i =; i < indices_->size (); ++i)
{
// Perform a radius search to find the nearest neighbors
tree_->radiusSearch ((*indices_)[i], sigma_s_ *, k_indices, k_distances);
...
#endif // PCL_FILTERS_BILATERAL_H_

完成的bilateral.h和bilateral.hpp文件见本章源码文件夹下3.0文件夹。

测试新建的类

测试新的类很容易,我们用上面提到的第一个代码段作为例子,转而使用pcl::BilateralFilter类,利用光盘提供的CMakeLists.txt和testfilter.cpp文件,在cmake中建立工程文件,并生成相应的可执行文件,生成执行文件后,就可以运行测试前面定义的类。敬请关注PCL(Point Cloud Learning)中国更多的点云库PCL(Point Cloud Library)相关官方教程。

参考文献:

1.朱德海、郭浩、苏伟.点云库PCL学习教程(ISBN 978-7-5124-0954-5)北京航空航天出版社2012-10

PCL基础的更多相关文章

  1. PCL基础3.2-如何编写新的PCL类

    1.文件名为mainBilateralFilter.cpp的文件内容如下 #include <pcl/point_types.h> #include <pcl/io/pcd_io.h ...

  2. 第三章:PCL基础3.1

    架构师为了确保在PCL中所有代码风格的一致性,使得其他开发者及用户容易理解源码,PCL开发者制定并遵循着一套严格的编写规范,PCL的开发者都默认此规范. 3.1PCL推荐的命名规范 1.文件命名 1) ...

  3. 点云库PCL学习

    1. 点云的提取 点云的获取:RGBD获取 点云的获取:图像匹配获取(通过摄影测量提取点云数据) 点云的获取:三维激光扫描仪 2. PCL简介 PCL是Point Cloud Library的简称,是 ...

  4. [PCL]点云渐进形态学滤波

    PCL支持点云的形态学滤波,四种操作:侵蚀.膨胀.开(先侵蚀后膨胀).闭(先膨胀后侵蚀) 在#include <pcl/filters/morphological_filter.h>中定义 ...

  5. PCL点云库:Kd树

    Kd树按空间划分生成叶子节点,各个叶子节点里存放点数据,其可以按半径搜索或邻区搜索.PCL中的Kd tree的基础数据结构使用了FLANN以便可以快速的进行邻区搜索.FLANN is a librar ...

  6. PCL—低层次视觉—点云分割(基于凹凸性)

    1.图像分割的两条思路 场景分割时机器视觉中的重要任务,尤其对家庭机器人而言,优秀的场景分割算法是实现复杂功能的基础.但是大家搞了几十年也还没搞定——不是我说的,是接下来要介绍的这篇论文说的.图像分割 ...

  7. PCL—低层次视觉—点云分割(基于形态学)

    1.航空测量与点云的形态学 航空测量是对地形地貌进行测量的一种高效手段.生成地形三维形貌一直是地球学,测量学的研究重点.但对于城市,森林,等独特地形来说,航空测量会受到影响.因为土地表面的树,地面上的 ...

  8. PCL—低层次视觉—点云分割(RanSaC)

    点云分割 点云分割可谓点云处理的精髓,也是三维图像相对二维图像最大优势的体现.不过多插一句,自Niloy J Mitra教授的Global contrast based salient region ...

  9. PCL—综述—三维图像处理

    点云模型与三维信息 三维图像是一种特殊的信息表达形式,其特征是表达的空间中三个维度的数据.和二维图像相比,三维图像借助第三个维度的信息,可以实现天然的物体-背景解耦.除此之外,对于视觉测量来说,物体的 ...

随机推荐

  1. 基础网络之EfficientNet

    摘要: 一般情况下,我们都会根据当前的硬件资源来设计相应的卷积神经网络,如果资源升级,可以将模型结构放大以获取更好精度.我们系统地研究模型缩放并验证网络深度,宽度和分辨率之间的平衡以得到更好的性能表现 ...

  2. 四:MVC之LINQ方法语法

    linq 查询 有两种语法  ,前面我们说了一种,接下来说方法语法(我读着一直很绕口) 查询语法,方法语法 ------------------------以下文字都是复制-------------- ...

  3. WebApi接口测试工具

    原文出处: 懒得安分 前言:这两天在整WebApi的服务,由于调用方是Android客户端,Android开发人员也不懂C#语法,API里面的接口也不能直接给他们看,没办法,只有整个详细一点的文档呗. ...

  4. linux——命令2—删除—查看—搜索

    多种查看命令: 多种搜索命令: ll命令 -rw-rw-rw  - 表示文件 drw-rw-rw  d 表示目录文件夹 ========================== 使用rm删除文件 例如:r ...

  5. Python怎么检验数据的正态分布

    在对数据建模前,很多时候我们需要对数据做正态性检验,进而通过检验结果确定下一步的分析方案.下面介绍 Python 中常用的几种正态性检验方法: scipy.stats.kstest kstest 是一 ...

  6. 【Java 基础实例—Bank 项目1】

    (上图Wie任务要求的UML结构) Account.java 文件: package Banking_1; public class Account { private double balance; ...

  7. C# MVC 视图 计算某一个列的总和

    需求:在需要计算每一列的总和显示在最后一行 eg; AA BB CC 1    2      3 1     2      3 SUM    2   4      6 大概是酱紫 我用的是mvc Mo ...

  8. BZOJ3073 [Pa2011]Journeys[最短路—线段树优化建边]

    新技能get✔. 线段树优化建边主要是针对一类连续区间和连续区间之间建边的题,建边非常的优秀.. 这题中,每次要求$[l1,r1]$每一点向$[l2,r2]$每一点建无向边,然后单元最短路. 暴力建边 ...

  9. CSS实现按钮YES-NO按钮+Jquery获取按钮状态。

    前几天我经理突然跟我说,能不能做一个开关按钮,需要过滤的一个标识.说实话,一个做后端我是懵逼状态的. 不过网上资料很多,查了一遭,发现一个不错的哥们给出的案例,模仿一下成功实现,下面就自己总结一下: ...

  10. 在js中获取 input checkbox里选中的多个值

    思路:利用name属性值获取checkbox对象,然后循环判断checked属性(true表示被选中,false表示未选中).下面进行实例演示: 1.html中展示: <input type=& ...