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

把代码转换成符合PCL思路和句法的代码,对于第一次接触该基础架构的人会显得比较困难,会提出若干疑问。本小节讲述如何编写新的PCL类以及经常碰到的问题,也解释了在PCL目录树下,与全球PCL用户共享你的代码有哪些优势,这里提倡共享,你也可以把这种观念应用于其他类似的项目中,无论读者是自己直接写,还是改写已有代码,本节的内容都很有帮助,最重要的是可以帮助读者快速阅读了解PCL中的源码。

优势:为什么加入PCL开源开发模式?

大家可能问到的第一个问题,也是我们要回答的问题,就是:为什么要加入PCL,它的优势在什么地方?这个问题假设你已经认定PCL提供的这套工具和库对你的工程是有用的,因此你已经是一个用户了。因为开源项目大多都是志愿工作,开发者通常来自世界各地,所以开发过程有一定进度、有一定的反复是正常的。这意味着:

  ·开发者不可能事先考虑他们编写的代码片段可能所有的用途,但也奠定了一定基础……

  ·由于有限的资源和时间,发现解决方案以及应用程序中所有可能出现的漏洞是困难的,由于资源的限制,可能开始的时候进行处理也是不合适的。

在这两种情况下,每个人都很可能遇到了这种情况:要么他们找不到需要的算法或方法,要么现存的方法和应用有漏洞。因此下一步很明显:改变现有代码以适应你的应用程序/问题。当我们在下一节中讨论如何去做的时候,还是要提供我们提出的第一个问题的答案,也就是“为什么要在PCL中共享劳动成果呢?”,依我们的观点,有很多优势存在,引用Eric Raymond的Linus法则:“given enough eyeballs, all bugs are shallow. 给予足够的关注,所有的漏洞都是显而易见的”它的意思是公布你的代码,允许其他人去查看,你的代码就有机会优化和提高鲁棒性,尤其是在出现一个活跃的社区里,PCL就是一个这样的社区。除了上面讲到的,你的贡献可能会有以下众多的作用:

  ·别人以你的代码为基础建立新的项目;

  ·你学习其他人新的用法(例如,你设计的时候没有考虑的非常有用的设计);

  ·无忧无虑的维护者身份(例如,你可以休假一段时间,回来看到你的代码还在更新维护中。其他贡献者会配置它以适应最新的平台、最新的编译器等等);

  ·你在社区的名声会提高——人人都喜欢受人敬仰。

对于大多数人来讲,上面所提到的都适用。对于另一些人,只有一些适用。为了举例说明代码转换过程,我们选择下面的例子,实现对给定点云中的强度数据应用双边滤波器,把结果保存到磁盘。首先,在本书提供光盘的第3章例1文件夹中,打开名为mainBilateralFilter.cpp的代码文件,这里打开的源代码段包括以下步骤:

  ·输入输出代码块:从磁盘读数据,向磁盘写数据;

  ·初始化代码块:用KD树建立一种搜索最近邻的方法;

  ·实际算法代码块:对每个点进行双边滤波处理。

我们的目的是把给出的源码程序转换成PCL的类,以便能够在其他地方重复使用。

敬请关注PCL(Point Cloud Learning)中国更多的点云库PCL(Point Cloud Library)相关官方教程。

参考文献:

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

05-22 18:46