PCL基础

博客转载自: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