精华内容
下载资源
问答
  • pcl点云库
    2022-04-27 10:19:43

    RANSAC随机采样一致性算法

    RANSAC是一种随机参数估计算法。RANSAC从样本中抽选出一个样本子集,使用最小方差估计算法对这个子集模型参数,然后计算所有样本与该模型的偏差,在使用预先设定好的阈值与偏差比较,当偏差小于阈值时,该样本点属于模型内样本的(inliers),否则为外样本点(outliers),然后重复该过程,每次重复都记录当前最佳模型参数,所谓最佳即inliers个数最多,此时对应的inlers个数为best_nliers。每次迭代的末尾都会根据期望误差率、best_liersd、总样本个数、当前迭代次数,计算一个迭代结束评判因子,据此决定是否迭代结束。迭代结束,最佳模型参数就是模型参数估计值。
    RANSAC理论上可以剔除outliers的影响,并得到全局最优的参数估计。但是RANSAC有两个问题,首先在每次迭代中都要区分inliers和 outlieres,因此需要事先设定阈值,当模型具有明显的物理意义时,这个阈值还比较容易设定,但是若模型比较抽象时,这个阈值就不那么容易设定了,而且固定阈值不适用于样本动态变化的应用;第二个问题是,RANSAC的迭代次数是运行期决定的,不能预知迭代的确切次数(当然迭代次数的范围是可以预测的)。除此之外,RANSAC 只能从一个特定数据集中估计一个模型,当两个(或者更多个)模型存在时,RANSAC不能找到别的模型。

    LMeds最小中值方差估计算法

    LMedS也是一种随机参数估计算法。LMedS也从样本中随机抽选出一个样本子集,使用最小方差估计算法对子集计算模型参数,然后计算所有样本与该模型的偏差。但是与RANSAC不同的是,LMedS记录的是所有样本中偏差值居中的那个样本的偏差,称为Med偏差(这也是LMedS中 Med的由来),以及本次计算得到的模型参数。由于这一变化, LMedS不需要预先设定阈值来区分inliers和 outliers。重复前面的过程N次,从中N个 Med偏差中挑选出最小的一个,其对应的模型参数就是最终的模型参数估计值。其中迭代次数N是由样本子集中样本的个数、期望的模型误差、事先估计的样本中 outliers的比例所决定。
    LMedS理论上也可以剔除outliers的影响,并得到全局最优的参数估计,而且克服了RANSAC的两个缺点(虽然LMedS也需要实现设定样本中 outliers的比例,但这个数字比较容易设定)。但是当outliers在样本中所占比例达到或超过50%时,LMedS就无能为力了!这与 LMedS每次迭代记录的是“Med”偏差值有关!

    更多相关内容
  • PDF-SLAM-点云处理-pcl点云库入门到精通
  • PCL点云库》.pdf

    2021-10-25 17:36:49
    PCL点云库》.pdf
  • 点云分割-PCL点云库欧式聚类分割-基于欧式距离的分割
  • PCl点云库资料集合

    2018-12-11 21:02:13
    PCl点云库的一些文档,还有一些相应的代码,共10个单元。
  • PCL点云库学习教程

    2018-08-25 20:07:31
    目前国内比较好的点云库PCL学习教程中文版,适用于目前很热门的深度学习,SLAM,OpenCV等方向学习。
  • PCL 点云库编程测试点云数据 PCD格式 包括圆柱 长方体 菱形 人体形状 PLC文字点云
  • pcl点云库源代码.zip

    2021-03-20 15:13:27
    点云库PCL学习教程源码
  • PCL点云库配置

    2021-08-17 15:50:12
    PCL1.8.1+VScode2017+win10 一、下载PCL包 注意首先需要下载两个PCL的包 ... 在此界面一直下拉,找到下图中的两个文件,都下载下来 ...关于win32,win64是指VScode编译器环境的...二、安装PCL点云库 点击下一步 ...

     PCL1.8.1+VScode2017+win10

    一、下载PCL包

    注意首先需要下载两个PCL的包

    https://github.com/PointCloudLibrary/pcl/releases/tag/pcl-1.8.1

     在此界面一直下拉,找到下图中的两个文件,都下载下来

     关于win32,win64是指VScode编译器环境的位数。解压后得到

    双击PCL-1.8.1-AllInOne-msvc2017-win32 


     二、安装PCL点云库

    点击下一步

       

    点击我接受

     

    此处需要修改为      Add PCL to the system PATH for all users

     此处路径自定义,但最好不要出现中文,不要过长,记住你定义的路径之后还要用

    (过长的话后面安装会说你路径名过长,但仍然按照我的步骤配置系统变量就好了)

     点击下一步

     点击安装

    之后就会进入安装环节,中间会弹出一个OpenNI的安装环节(由于我已经安装了就不截图了)

    OpenNI的安装: 点击next,然后会让你选择路径,由于刚刚安装PCL时自定义过路径

    例如:

              我之前安装PCL时的路径为D:\PCL

              就会出现PCL1.8.1,点开3rdParty

              会发现3rdParty中有OpenNI,将OpenNI安装路径设置在此即可

              即:D:\PCL\PCL 1.8.1\3rdParty\OpenNI2

              以上是我的路径

    这是正确安装OpenNI后的截图

    至此,我们已经安装完了下载的两个包中的一个

    还有一个pcl-1.8.1-pdb-msvc2017-win32,直接解压

    打开后,将里面的东西全部复制

    复制到bin中就行了


    三、配置系统变量

    电脑---属性---高级系统设置

    点击环境变量--然后双击path

     手动添加以下几个到path中(新建--输入路径--确定)

     记住输入自己的路径

    不过在这个界面,系统变量好像已经有OpenNI的lib和redist路径了(但我仍然添加到path中了,不会出问题,但我确实不懂doge)


    四、配置环境(VScode2017)

    打开VS---文件---新建---项目---Visual C++---空项目---修改名称,更改存放路径

    然后将解决方案配置设置为

     之后调出属性管理器

     在debug win32 下新建一个属性表

     双击新建的属性表,修改包含目录

    D:\PCL\PCL 1.8.1\include\pcl-1.8
    D:\PCL\PCL 1.8.1\3rdParty\Qhull\include
    D:\PCL\PCL 1.8.1\3rdParty\VTK\include\vtk-8.0
    D:\PCL\PCL 1.8.1\3rdParty\Boost\include\boost-1_64
    D:\PCL\PCL 1.8.1\3rdParty\Eigen\eigen3
    D:\PCL\PCL 1.8.1\3rdParty\FLANN\include
    D:\PCL\PCL 1.8.1\3rdParty\OpenNI2\Include


     然后修改库目录

    D:\PCL\PCL 1.8.1\lib
    D:\PCL\PCL 1.8.1\3rdParty\Boost\lib
    D:\PCL\PCL 1.8.1\3rdParty\FLANN\lib
    D:\PCL\PCL 1.8.1\3rdParty\Qhull\lib
    D:\PCL\PCL 1.8.1\3rdParty\VTK\lib
    D:\PCL\PCL 1.8.1\3rdParty\OpenNI2\Lib

     然后添加附加依赖项

    vtknetcdf_c++-gd.lib
     pcl_common_debug.lib
     pcl_features_debug.lib
     pcl_filters_debug.lib
     pcl_io_ply_debug.lib
     pcl_io_debug.lib
     pcl_kdtree_debug.lib
     pcl_keypoints_debug.lib
     pcl_ml_debug.lib
     pcl_octree_debug.lib
     pcl_outofcore_debug.lib
     pcl_people_debug.lib
     pcl_recognition_debug.lib
     pcl_registration_debug.lib
     pcl_sample_consensus_debug.lib
     pcl_search_debug.lib
     pcl_segmentation_debug.lib
     pcl_stereo_debug.lib
     pcl_surface_debug.lib
     pcl_tracking_debug.lib
     pcl_visualization_debug.lib
     libboost_atomic-vc141-mt-gd-1_64.lib
     libboost_bzip2-vc141-mt-gd-1_64.lib
     libboost_chrono-vc141-mt-gd-1_64.lib
     libboost_container-vc141-mt-gd-1_64.lib
     libboost_context-vc141-mt-gd-1_64.lib
     libboost_coroutine-vc141-mt-gd-1_64.lib
     libboost_date_time-vc141-mt-gd-1_64.lib
     libboost_exception-vc141-mt-gd-1_64.lib
     libboost_fiber-vc141-mt-gd-1_64.lib
     libboost_filesystem-vc141-mt-gd-1_64.lib
     libboost_graph-vc141-mt-gd-1_64.lib
     libboost_graph_parallel-vc141-mt-gd-1_64.lib
     libboost_iostreams-vc141-mt-gd-1_64.lib
     libboost_locale-vc141-mt-gd-1_64.lib
     libboost_log-vc141-mt-gd-1_64.lib
     libboost_log_setup-vc141-mt-gd-1_64.lib
     libboost_math_c99-vc141-mt-gd-1_64.lib
     libboost_math_c99f-vc141-mt-gd-1_64.lib
     libboost_math_c99l-vc141-mt-gd-1_64.lib
     libboost_math_tr1-vc141-mt-gd-1_64.lib
     libboost_math_tr1f-vc141-mt-gd-1_64.lib
     libboost_math_tr1l-vc141-mt-gd-1_64.lib
     libboost_mpi-vc141-mt-gd-1_64.lib
     libboost_numpy3-vc141-mt-gd-1_64.lib
     libboost_numpy-vc141-mt-gd-1_64.lib
     libboost_prg_exec_monitor-vc141-mt-gd-1_64.lib
     libboost_program_options-vc141-mt-gd-1_64.lib
     libboost_python3-vc141-mt-gd-1_64.lib
     libboost_python-vc141-mt-gd-1_64.lib
     libboost_random-vc141-mt-gd-1_64.lib
     libboost_regex-vc141-mt-gd-1_64.lib
     libboost_serialization-vc141-mt-gd-1_64.lib
     libboost_signals-vc141-mt-gd-1_64.lib
     libboost_system-vc141-mt-gd-1_64.lib
     libboost_test_exec_monitor-vc141-mt-gd-1_64.lib
     libboost_thread-vc141-mt-gd-1_64.lib
     libboost_timer-vc141-mt-gd-1_64.lib
     libboost_type_erasure-vc141-mt-gd-1_64.lib
     libboost_unit_test_framework-vc141-mt-gd-1_64.lib
     libboost_wave-vc141-mt-gd-1_64.lib
     libboost_wserialization-vc141-mt-gd-1_64.lib
     libboost_zlib-vc141-mt-gd-1_64.lib
     flann-gd.lib
     flann_cpp-gd.lib
     flann_cpp_s-gd.lib
     flann_s-gd.lib
     qhull_d.lib
     qhullcpp_d.lib
     qhullstatic_d.lib
     qhullstatic_r_d.lib
     qhull_p_d.lib
     qhull_r_d.lib
     vtkalglib-8.0-gd.lib
     vtkChartsCore-8.0-gd.lib
     vtkCommonColor-8.0-gd.lib
     vtkCommonComputationalGeometry-8.0-gd.lib
     vtkCommonCore-8.0-gd.lib
     vtkCommonDataModel-8.0-gd.lib
     vtkCommonExecutionModel-8.0-gd.lib
     vtkCommonMath-8.0-gd.lib
     vtkCommonMisc-8.0-gd.lib
     vtkCommonSystem-8.0-gd.lib
     vtkCommonTransforms-8.0-gd.lib
     vtkDICOMParser-8.0-gd.lib
     vtkDomainsChemistry-8.0-gd.lib
     vtkexoIIc-8.0-gd.lib
     vtkexpat-8.0-gd.lib
     vtkFiltersAMR-8.0-gd.lib
     vtkFiltersCore-8.0-gd.lib
     vtkFiltersExtraction-8.0-gd.lib
     vtkFiltersFlowPaths-8.0-gd.lib
     vtkFiltersGeneral-8.0-gd.lib
     vtkFiltersGeneric-8.0-gd.lib
     vtkFiltersGeometry-8.0-gd.lib
     vtkFiltersHybrid-8.0-gd.lib
     vtkFiltersHyperTree-8.0-gd.lib
     vtkFiltersImaging-8.0-gd.lib
     vtkFiltersModeling-8.0-gd.lib
     vtkFiltersParallel-8.0-gd.lib
     vtkFiltersParallelImaging-8.0-gd.lib
     vtkFiltersPoints-8.0-gd.lib
     vtkFiltersProgrammable-8.0-gd.lib
     vtkFiltersSelection-8.0-gd.lib
     vtkFiltersSMP-8.0-gd.lib
     vtkFiltersSources-8.0-gd.lib
     vtkFiltersStatistics-8.0-gd.lib
     vtkFiltersTexture-8.0-gd.lib
     vtkFiltersTopology-8.0-gd.lib
     vtkFiltersVerdict-8.0-gd.lib
     vtkfreetype-8.0-gd.lib
     vtkGeovisCore-8.0-gd.lib
     vtkgl2ps-8.0-gd.lib
     vtkhdf5-8.0-gd.lib
     vtkhdf5_hl-8.0-gd.lib
     vtkImagingColor-8.0-gd.lib
     vtkImagingCore-8.0-gd.lib
     vtkImagingFourier-8.0-gd.lib
     vtkImagingGeneral-8.0-gd.lib
     vtkImagingHybrid-8.0-gd.lib
     vtkImagingMath-8.0-gd.lib
     vtkImagingMorphological-8.0-gd.lib
     vtkImagingSources-8.0-gd.lib
     vtkImagingStatistics-8.0-gd.lib
     vtkImagingStencil-8.0-gd.lib
     vtkInfovisCore-8.0-gd.lib
     vtkInfovisLayout-8.0-gd.lib
     vtkInteractionImage-8.0-gd.lib
     vtkInteractionStyle-8.0-gd.lib
     vtkInteractionWidgets-8.0-gd.lib
     vtkIOAMR-8.0-gd.lib
     vtkIOCore-8.0-gd.lib
     vtkIOEnSight-8.0-gd.lib
     vtkIOExodus-8.0-gd.lib
     vtkIOExport-8.0-gd.lib
     vtkIOExportOpenGL-8.0-gd.lib
     vtkIOGeometry-8.0-gd.lib
     vtkIOImage-8.0-gd.lib
     vtkIOImport-8.0-gd.lib
     vtkIOInfovis-8.0-gd.lib
     vtkIOLegacy-8.0-gd.lib
     vtkIOLSDyna-8.0-gd.lib
     vtkIOMINC-8.0-gd.lib
     vtkIOMovie-8.0-gd.lib
     vtkIONetCDF-8.0-gd.lib
     vtkIOParallel-8.0-gd.lib
     vtkIOParallelXML-8.0-gd.lib
     vtkIOPLY-8.0-gd.lib
     vtkIOSQL-8.0-gd.lib
     vtkIOTecplotTable-8.0-gd.lib
     vtkIOVideo-8.0-gd.lib
     vtkIOXML-8.0-gd.lib
     vtkIOXMLParser-8.0-gd.lib
     vtkjpeg-8.0-gd.lib
     vtkjsoncpp-8.0-gd.lib
     vtklibharu-8.0-gd.lib
     vtklibxml2-8.0-gd.lib
     vtklz4-8.0-gd.lib
     vtkmetaio-8.0-gd.lib
     vtkNetCDF-8.0-gd.lib
     vtkoggtheora-8.0-gd.lib
     vtkParallelCore-8.0-gd.lib
     vtkpng-8.0-gd.lib
     vtkproj4-8.0-gd.lib
     vtkRenderingAnnotation-8.0-gd.lib
     vtkRenderingContext2D-8.0-gd.lib
     vtkRenderingContextOpenGL-8.0-gd.lib
     vtkRenderingCore-8.0-gd.lib
     vtkRenderingFreeType-8.0-gd.lib
     vtkRenderingGL2PS-8.0-gd.lib
     vtkRenderingImage-8.0-gd.lib
     vtkRenderingLabel-8.0-gd.lib
     vtkRenderingLIC-8.0-gd.lib
     vtkRenderingLOD-8.0-gd.lib
     vtkRenderingOpenGL-8.0-gd.lib
     vtkRenderingVolume-8.0-gd.lib
     vtkRenderingVolumeOpenGL-8.0-gd.lib
     vtksqlite-8.0-gd.lib
     vtksys-8.0-gd.lib
     vtktiff-8.0-gd.lib
     vtkverdict-8.0-gd.lib
     vtkViewsContext2D-8.0-gd.lib
     vtkViewsCore-8.0-gd.lib
     vtkViewsInfovis-8.0-gd.lib
     vtkzlib-8.0-gd.lib
     opengl32.lib

    SDL检查改为否

     修改预处理器定义

    _SCL_SECURE_NO_WARNINGS
    _CRT_SECURE_NO_WARNINGS

     至此PCL配置完成

    展开全文
  • 用于PCL中模版匹配算法的测试点云,用于PCL中模版匹配算法的测试点云,用于PCL中模版匹配算法的测试点云用于PCL中模版匹配算法的测试点云,用于PCL中模版匹配算法的测试点云,用于PCL中模版匹配算法的测试点云,用于...
  • 点云库PCL学习教程.pdf

    2021-11-15 20:34:08
    点云库PCL学习教程.pdf 点云库PCL学习教程.pdf 点云库PCL学习教程.pdf 点云库PCL学习教程.pdf
  • PCL官方点云数据,包含全部全部点云数据,可以用于官方所有例子的测试与比较,其中有著名的斯坦福大学提供的兔子模型,马模型等。
  • PCL点云库安装及学习(2021.7.28)

    千次阅读 2021-07-13 11:27:20
    PCL点云库学习 2021.7.131、PCL简介2、PCL环境配置3、PCL代码实战 1、PCL简介         PCL是一个点云库,PCL帮助文档,PCL论文下载,PCL的Github地址 2、PCL环境配置 3、...

    1、PCL简介

            点云库PCL英文全称为Point Cloud Library,它是一个独立的、大规模的、开放的项目,用于2D和3D图像和点云处理,同时还可免费用于商业和科学研究。PCL支持的操作系统有Linux、Windows、MacOS等,它所支持的开发语言有C++和Python,内部所调用的第三方依赖库有BoostEigenFLANNVTKQHullOpenNI2这六个依赖库特别重要!!!PCL可分为一系列的模块库,包含滤波器filters特征features特征keypoints配准registrationkd树kdtreeoc树octree分割segmentation采样一致性sample_consensus表面surface识别recognition输入输出io可视化visualization

            在三维激光扫描点云数据处理中,PCL可作为一款强大的工具帮助企业和科研人员开展大量的研究工作,具体PCL的细节可参考PCL帮助文档PCL论文下载PCL的Github地址


    2、Win10系统下PCL环境配置

    2.1 前提环境(Win10 64位+Visual Studio 2015)

            这里电脑的操作系统为64位Windows10系统,同时需要电脑安装Visual Studio

    Win10 x64
    VS 2015

            在Windows系统上配置PCL环境通常有两种方式方式一:源码编译方式二:安装包安装。在很多情况下,我们可以使用All-in-one Installer安装包来使用PCL;但是如果用户想要使用其他编译器来使用PCL点云库的功能,就需要自己编译PCL及其依赖的第三方库。

    2.2 方式一:源码编译(过程繁琐但通用性强)

            PCL 1.8.1源码编译英文教程

            如果从源码编译更新版本的PCL点云库,则需要从帮助文档出发。首先参考Building PCL’s dependencies from source on Windows来编译所需的第三方依赖库,然后下载PCL源代码并参考Compiling PCL from source on Windows编译为二进制binaries库可供其他项目调用,这里不再赘述。

    2.3 方式二:安装包安装(简单易懂,推荐使用)

            PCL All-in-one Installer是一个包含预编译好的PCL及其第三方库的安装包,由于电脑安装了VS 2015,通过查找发现安装包PCL-1.8.1-AllInOne-msvc2015-win64.exe和调试数据库文件pcl-1.8.1-pdb-msvc2015-win64.zip比较适合自己的电脑环境。PCL1.8.1安装包下载链接


            第一步,双击安装包PCL-1.8.1-AllInOne-msvc2015-win64.exe,一直点击下一步即可;安装的过程中会弹出OpenNI的安装程序,将OpenNI的安装路径设置为PCL安装路径下的3rdParty\OpenNI2文件夹。










    OpenNI 2
    PCL 1.8.1

            安装程序结束后,PCL安装目录结构如下图所示,其中第三方库3rdParty文件夹下包含BoostEigenFLANNOpenNI2QhullVTK六个文件夹,各个文件夹目录结构见下图。

    PCL 1.8.1 安装目录
    第三方库3rdParty文件夹
    Boost文件夹
    eigen3文件夹
    FLANN文件夹
    OpenNI 2文件夹
    Qhull文件夹
    VTK文件夹

            第二步pcl-1.8.1-pdb-msvc2015-win64.zip解压后文件夹下的文件如下图所示,安装程序执行完成后,将pcl-1.8.1-pdb-msvc2015-win64.zip解压后的pdb文件全部拷贝到PCL安装目录下的bin文件夹中。

            第三步,对系统的环境变量进行设置,设置PCL_ROOTD:\Program Files (x86)\PCL 1.8.1,并在Path文本后添加;%PCL_ROOT%\bin;%PCL_ROOT%\3rdParty\OpenNI2\Tools;%PCL_ROOT%\3rdParty\FLANN\bin;%PCL_ROOT%\3rdParty\Qhull\bin;%PCL_ROOT%\3rdParty\VTK\bin;


            最终设置好的系统环境变量如下图所示,至此,PCL环境配置完成。

    3、PCL项目实战(VS 2015)

    3.1 VS 2015 新建项目进行配置

            第一步,打开Visual Studio 2015后新建一个Visual C++下的Win32控制台应用程序,项目名称输入MyPCL并选择项目保存位置后点击确定,进入Win32应用程序向导窗口后点击下一步后,接下来选择控制台应用程序和空项目后点击完成,



            第二步,在解决方案PCL项目的源文件上右键选择新建项->添加,在弹出的添加新项窗口中选择C++文件(.cpp)后,输入文件名为main.cpp后点击添加


            第三步,在打开的main.cpp文件中输入以下C++代码开始调试运行,运行结果如下图所示,说明程序能够正常运行。

    #include <iostream>
    using namespace std;
    int main()
    {
    	cout<<"hello,world"<<endl;
    	system("pause");
    	return 0;
    }
    

    3.2 PCL项目头文件、库文件配置

            MyPCL项目上右键选择属性进入属性页窗口,配置选择Release或者Debug,平台选择x64
            对于一个C++项目而言,尤其是像包含第三方库(如OpenCV、OSG、PCL等)的项目,尤其要注意对三个部分的设置:1、头文件include包含目录用来指明.h文件的目录位置;2、库文件lib库目录用来指明.lib文件的目录位置;3、链接器中输入下的附加依赖项输入所有项目需要链接到的lib文件名。

    3.2.1 PCL项目配置 Include包含目录(.h)

            在属性页窗口中选择VC++目录,点击右侧的包含目录,向其中添加 .h文件所在目录 后点击确定。

    D:\Program Files (x86)\PCL 1.8.1\3rdParty\FLANN\include
    D:\Program Files (x86)\PCL 1.8.1\3rdParty\Qhull\include
    D:\Program Files (x86)\PCL 1.8.1\3rdParty\OpenNI2\Include
    D:\Program Files (x86)\PCL 1.8.1\3rdParty\VTK\include\vtk-8.0
    D:\Program Files (x86)\PCL 1.8.1\3rdParty\Eigen\eigen3
    D:\Program Files (x86)\PCL 1.8.1\3rdParty\Boost\include\boost-1_64
    D:\Program Files (x86)\PCL 1.8.1\include\pcl-1.8
    

    3.2.2 PCL项目配置 Lib库目录(.lib)

            在属性页窗口中选择VC++目录,点击右侧的库目录,向其中添加 .lib文件所在目录 后点击确定。

    D:\Program Files (x86)\PCL 1.8.1\3rdParty\Qhull\lib
    D:\Program Files (x86)\PCL 1.8.1\3rdParty\OpenNI2\Lib
    D:\Program Files (x86)\PCL 1.8.1\3rdParty\FLANN\lib
    D:\Program Files (x86)\PCL 1.8.1\3rdParty\VTK\lib
    D:\Program Files (x86)\PCL 1.8.1\3rdParty\Boost\lib
    D:\Program Files (x86)\PCL 1.8.1\lib
    

    3.2.3 PCL项目配置 链接器->输入(使用Eclipse+Java来获取lib下的lib文件名)

            由于项目运行时需要链接到其他lib库文件,所以需要向链接器指定项目运行需要链接到的lib文件名称,因此需要获取PCL安装目录下lib文件夹以及第三方库3rdParty文件夹下所有的lib文件名称,具体的lib文件夹包含:(1)D:\Program Files (x86)\PCL 1.8.1\lib;(2)D:\Program Files (x86)\PCL 1.8.1\3rdParty\Boost\lib;(3)D:\Program Files (x86)\PCL 1.8.1\3rdParty\FLANN\lib;(4)D:\Program Files (x86)\PCL 1.8.1\3rdParty\OpenNI2\Lib;(5)D:\Program Files (x86)\PCL 1.8.1\3rdParty\Qhull\lib;(6)D:\Program Files (x86)\PCL 1.8.1\3rdParty\VTK\lib由于MyPCL项目配置为Release,所以获取的lib就是release类型的lib;如果项目配置为Debug,则需要获取debug类型的lib

    PCL的lib
    Boost的lib
    FLANN的lib
    OpenNI 2的lib
    Qhull的lib
    VTK的lib
            因为lib文件数量较多,手动逐个复制lib文件名较为繁琐耗时,因此采用`Java`和`Eclipse IDE`来批量获取相应目录下的lib文件名称。
    Java 1.8
    Eclipse IDE

            获取文件夹下所有文件名的java代码如下

    package com.test;
    
    import java.io.File;
    import java.text.*;
     
    public class BianliFolderFile
    {
    	public static void main(String[] args) 
    	{
    		String path = "D:\\Program Files (x86)\\PCL 1.8.1\\3rdParty\\VTK\\lib";
    		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    		System.out.println(path+ "路径下的所有文件");
    		File file = new File(path);		//获取其file对象
    		File[] fs = file.listFiles();
    		
    		for(File f:fs)
    		{
    			if(f.isFile())
    				{				
    				    String f1 = f.getName();
    				    if(!f1.contains("-gd"))
    				    	System.out.println(f.getName());
    				}
    		}
    	}
    }
    

            运行结果如下图所示,将控制台运行的结果手动复制出来

            将六个lib文件夹字符串分别赋值给上述java代码中的path变量执行六次,同时通过根据条件过滤(lib文件名含有_debug、-gd、_d的均代表Debug项目下的lib其余的则代表Release项目下的lib)可得到每个lib文件夹下的lib文件名。

    D:\Program Files (x86)\PCL 1.8.1\lib
    D:\Program Files (x86)\PCL 1.8.1\3rdParty\Boost\lib
    D:\Program Files (x86)\PCL 1.8.1\3rdParty\FLANN\lib
    D:\Program Files (x86)\PCL 1.8.1\3rdParty\OpenNI2\Lib
    D:\Program Files (x86)\PCL 1.8.1\3rdParty\Qhull\lib
    D:\Program Files (x86)\PCL 1.8.1\3rdParty\VTK\lib
    

            各个lib文件夹汇总后的适用于Release项目的lib文件名如下:

    pcl_common_release.lib
    pcl_features_release.lib
    pcl_filters_release.lib
    pcl_io_ply_release.lib
    pcl_io_release.lib
    pcl_kdtree_release.lib
    pcl_keypoints_release.lib
    pcl_ml_release.lib
    pcl_octree_release.lib
    pcl_outofcore_release.lib
    pcl_people_release.lib
    pcl_recognition_release.lib
    pcl_registration_release.lib
    pcl_sample_consensus_release.lib
    pcl_search_release.lib
    pcl_segmentation_release.lib
    pcl_stereo_release.lib
    pcl_surface_release.lib
    pcl_tracking_release.lib
    pcl_visualization_release.lib
    libboost_atomic-vc140-mt-1_64.lib
    libboost_bzip2-vc140-mt-1_64.lib
    libboost_chrono-vc140-mt-1_64.lib
    libboost_container-vc140-mt-1_64.lib
    libboost_context-vc140-mt-1_64.lib
    libboost_coroutine-vc140-mt-1_64.lib
    libboost_date_time-vc140-mt-1_64.lib
    libboost_exception-vc140-mt-1_64.lib
    libboost_fiber-vc140-mt-1_64.lib
    libboost_filesystem-vc140-mt-1_64.lib
    libboost_graph-vc140-mt-1_64.lib
    libboost_graph_parallel-vc140-mt-1_64.lib
    libboost_iostreams-vc140-mt-1_64.lib
    libboost_locale-vc140-mt-1_64.lib
    libboost_log-vc140-mt-1_64.lib
    libboost_log_setup-vc140-mt-1_64.lib
    libboost_math_c99-vc140-mt-1_64.lib
    libboost_math_c99f-vc140-mt-1_64.lib
    libboost_math_c99l-vc140-mt-1_64.lib
    libboost_math_tr1-vc140-mt-1_64.lib
    libboost_math_tr1f-vc140-mt-1_64.lib
    libboost_math_tr1l-vc140-mt-1_64.lib
    libboost_mpi-vc140-mt-1_64.lib
    libboost_numpy-vc140-mt-1_64.lib
    libboost_numpy3-vc140-mt-1_64.lib
    libboost_prg_exec_monitor-vc140-mt-1_64.lib
    libboost_program_options-vc140-mt-1_64.lib
    libboost_python-vc140-mt-1_64.lib
    libboost_python3-vc140-mt-1_64.lib
    libboost_random-vc140-mt-1_64.lib
    libboost_regex-vc140-mt-1_64.lib
    libboost_serialization-vc140-mt-1_64.lib
    libboost_signals-vc140-mt-1_64.lib
    libboost_system-vc140-mt-1_64.lib
    libboost_test_exec_monitor-vc140-mt-1_64.lib
    libboost_thread-vc140-mt-1_64.lib
    libboost_timer-vc140-mt-1_64.lib
    libboost_type_erasure-vc140-mt-1_64.lib
    libboost_unit_test_framework-vc140-mt-1_64.lib
    libboost_wave-vc140-mt-1_64.lib
    libboost_wserialization-vc140-mt-1_64.lib
    libboost_zlib-vc140-mt-1_64.lib
    flann.lib
    flann_cpp.lib
    flann_cpp_s.lib
    flann_s.lib
    OpenNI2.lib
    qhull.lib
    qhullcpp.lib
    qhullstatic.lib
    qhullstatic_r.lib
    qhull_p.lib
    qhull_r.lib
    vtkalglib-8.0.lib
    vtkChartsCore-8.0.lib
    vtkCommonColor-8.0.lib
    vtkCommonComputationalGeometry-8.0.lib
    vtkCommonCore-8.0.lib
    vtkCommonDataModel-8.0.lib
    vtkCommonExecutionModel-8.0.lib
    vtkCommonMath-8.0.lib
    vtkCommonMisc-8.0.lib
    vtkCommonSystem-8.0.lib
    vtkCommonTransforms-8.0.lib
    vtkDICOMParser-8.0.lib
    vtkDomainsChemistry-8.0.lib
    vtkexoIIc-8.0.lib
    vtkexpat-8.0.lib
    vtkFiltersAMR-8.0.lib
    vtkFiltersCore-8.0.lib
    vtkFiltersExtraction-8.0.lib
    vtkFiltersFlowPaths-8.0.lib
    vtkFiltersGeneral-8.0.lib
    vtkFiltersGeneric-8.0.lib
    vtkFiltersGeometry-8.0.lib
    vtkFiltersHybrid-8.0.lib
    vtkFiltersHyperTree-8.0.lib
    vtkFiltersImaging-8.0.lib
    vtkFiltersModeling-8.0.lib
    vtkFiltersParallel-8.0.lib
    vtkFiltersParallelImaging-8.0.lib
    vtkFiltersPoints-8.0.lib
    vtkFiltersProgrammable-8.0.lib
    vtkFiltersSelection-8.0.lib
    vtkFiltersSMP-8.0.lib
    vtkFiltersSources-8.0.lib
    vtkFiltersStatistics-8.0.lib
    vtkFiltersTexture-8.0.lib
    vtkFiltersTopology-8.0.lib
    vtkFiltersVerdict-8.0.lib
    vtkfreetype-8.0.lib
    vtkGeovisCore-8.0.lib
    vtkgl2ps-8.0.lib
    vtkhdf5-8.0.lib
    vtkhdf5_hl-8.0.lib
    vtkImagingColor-8.0.lib
    vtkImagingCore-8.0.lib
    vtkImagingFourier-8.0.lib
    vtkImagingGeneral-8.0.lib
    vtkImagingHybrid-8.0.lib
    vtkImagingMath-8.0.lib
    vtkImagingMorphological-8.0.lib
    vtkImagingSources-8.0.lib
    vtkImagingStatistics-8.0.lib
    vtkImagingStencil-8.0.lib
    vtkInfovisCore-8.0.lib
    vtkInfovisLayout-8.0.lib
    vtkInteractionImage-8.0.lib
    vtkInteractionStyle-8.0.lib
    vtkInteractionWidgets-8.0.lib
    vtkIOAMR-8.0.lib
    vtkIOCore-8.0.lib
    vtkIOEnSight-8.0.lib
    vtkIOExodus-8.0.lib
    vtkIOExport-8.0.lib
    vtkIOExportOpenGL-8.0.lib
    vtkIOGeometry-8.0.lib
    vtkIOImage-8.0.lib
    vtkIOImport-8.0.lib
    vtkIOInfovis-8.0.lib
    vtkIOLegacy-8.0.lib
    vtkIOLSDyna-8.0.lib
    vtkIOMINC-8.0.lib
    vtkIOMovie-8.0.lib
    vtkIONetCDF-8.0.lib
    vtkIOParallel-8.0.lib
    vtkIOParallelXML-8.0.lib
    vtkIOPLY-8.0.lib
    vtkIOSQL-8.0.lib
    vtkIOTecplotTable-8.0.lib
    vtkIOVideo-8.0.lib
    vtkIOXML-8.0.lib
    vtkIOXMLParser-8.0.lib
    vtkjpeg-8.0.lib
    vtkjsoncpp-8.0.lib
    vtklibharu-8.0.lib
    vtklibxml2-8.0.lib
    vtklz4-8.0.lib
    vtkmetaio-8.0.lib
    vtkNetCDF-8.0.lib
    vtknetcdf_c++.lib
    vtkoggtheora-8.0.lib
    vtkParallelCore-8.0.lib
    vtkpng-8.0.lib
    vtkproj4-8.0.lib
    vtkRenderingAnnotation-8.0.lib
    vtkRenderingContext2D-8.0.lib
    vtkRenderingContextOpenGL-8.0.lib
    vtkRenderingCore-8.0.lib
    vtkRenderingFreeType-8.0.lib
    vtkRenderingGL2PS-8.0.lib
    vtkRenderingImage-8.0.lib
    vtkRenderingLabel-8.0.lib
    vtkRenderingLIC-8.0.lib
    vtkRenderingLOD-8.0.lib
    vtkRenderingOpenGL-8.0.lib
    vtkRenderingVolume-8.0.lib
    vtkRenderingVolumeOpenGL-8.0.lib
    vtksqlite-8.0.lib
    vtksys-8.0.lib
    vtktiff-8.0.lib
    vtkverdict-8.0.lib
    vtkViewsContext2D-8.0.lib
    vtkViewsCore-8.0.lib
    vtkViewsInfovis-8.0.lib
    vtkzlib-8.0.lib
    

            在属性页窗口中选择链接器->输入,点击右侧的附加依赖项,向其中添加 .lib文件名 后点击确定。

            (如果配置的项目属性为Debug调试项目,则Debug项目下的lib文件名参考如下所示)

    pcl_common_debug.lib
    pcl_features_debug.lib
    pcl_filters_debug.lib
    pcl_io_debug.lib
    pcl_io_ply_debug.lib
    pcl_kdtree_debug.lib
    pcl_keypoints_debug.lib
    pcl_ml_debug.lib
    pcl_octree_debug.lib
    pcl_outofcore_debug.lib
    pcl_people_debug.lib
    pcl_recognition_debug.lib
    pcl_registration_debug.lib
    pcl_sample_consensus_debug.lib
    pcl_search_debug.lib
    pcl_segmentation_debug.lib
    pcl_stereo_debug.lib
    pcl_surface_debug.lib
    pcl_tracking_debug.lib
    pcl_visualization_debug.lib
    libboost_atomic-vc140-mt-gd-1_64.lib
    libboost_bzip2-vc140-mt-gd-1_64.lib
    libboost_chrono-vc140-mt-gd-1_64.lib
    libboost_container-vc140-mt-gd-1_64.lib
    libboost_context-vc140-mt-gd-1_64.lib
    libboost_coroutine-vc140-mt-gd-1_64.lib
    libboost_date_time-vc140-mt-gd-1_64.lib
    libboost_exception-vc140-mt-gd-1_64.lib
    libboost_fiber-vc140-mt-gd-1_64.lib
    libboost_filesystem-vc140-mt-gd-1_64.lib
    libboost_graph-vc140-mt-gd-1_64.lib
    libboost_graph_parallel-vc140-mt-gd-1_64.lib
    libboost_iostreams-vc140-mt-gd-1_64.lib
    libboost_locale-vc140-mt-gd-1_64.lib
    libboost_log-vc140-mt-gd-1_64.lib
    libboost_log_setup-vc140-mt-gd-1_64.lib
    libboost_math_c99-vc140-mt-gd-1_64.lib
    libboost_math_c99f-vc140-mt-gd-1_64.lib
    libboost_math_c99l-vc140-mt-gd-1_64.lib
    libboost_math_tr1-vc140-mt-gd-1_64.lib
    libboost_math_tr1f-vc140-mt-gd-1_64.lib
    libboost_math_tr1l-vc140-mt-gd-1_64.lib
    libboost_mpi-vc140-mt-gd-1_64.lib
    libboost_numpy-vc140-mt-gd-1_64.lib
    libboost_numpy3-vc140-mt-gd-1_64.lib
    libboost_prg_exec_monitor-vc140-mt-gd-1_64.lib
    libboost_program_options-vc140-mt-gd-1_64.lib
    libboost_python-vc140-mt-gd-1_64.lib
    libboost_python3-vc140-mt-gd-1_64.lib
    libboost_random-vc140-mt-gd-1_64.lib
    libboost_regex-vc140-mt-gd-1_64.lib
    libboost_serialization-vc140-mt-gd-1_64.lib
    libboost_signals-vc140-mt-gd-1_64.lib
    libboost_system-vc140-mt-gd-1_64.lib
    libboost_test_exec_monitor-vc140-mt-gd-1_64.lib
    libboost_thread-vc140-mt-gd-1_64.lib
    libboost_timer-vc140-mt-gd-1_64.lib
    libboost_type_erasure-vc140-mt-gd-1_64.lib
    libboost_unit_test_framework-vc140-mt-gd-1_64.lib
    libboost_wave-vc140-mt-gd-1_64.lib
    libboost_wserialization-vc140-mt-gd-1_64.lib
    libboost_zlib-vc140-mt-gd-1_64.lib
    flann-gd.lib
    flann_cpp-gd.lib
    flann_cpp_s-gd.lib
    flann_s-gd.lib
    OpenNI2.lib
    qhullcpp_d.lib
    qhullstatic_d.lib
    qhullstatic_r_d.lib
    qhull_d.lib
    qhull_p_d.lib
    qhull_r_d.lib
    vtkalglib-8.0-gd.lib
    vtkChartsCore-8.0-gd.lib
    vtkCommonColor-8.0-gd.lib
    vtkCommonComputationalGeometry-8.0-gd.lib
    vtkCommonCore-8.0-gd.lib
    vtkCommonDataModel-8.0-gd.lib
    vtkCommonExecutionModel-8.0-gd.lib
    vtkCommonMath-8.0-gd.lib
    vtkCommonMisc-8.0-gd.lib
    vtkCommonSystem-8.0-gd.lib
    vtkCommonTransforms-8.0-gd.lib
    vtkDICOMParser-8.0-gd.lib
    vtkDomainsChemistry-8.0-gd.lib
    vtkexoIIc-8.0-gd.lib
    vtkexpat-8.0-gd.lib
    vtkFiltersAMR-8.0-gd.lib
    vtkFiltersCore-8.0-gd.lib
    vtkFiltersExtraction-8.0-gd.lib
    vtkFiltersFlowPaths-8.0-gd.lib
    vtkFiltersGeneral-8.0-gd.lib
    vtkFiltersGeneric-8.0-gd.lib
    vtkFiltersGeometry-8.0-gd.lib
    vtkFiltersHybrid-8.0-gd.lib
    vtkFiltersHyperTree-8.0-gd.lib
    vtkFiltersImaging-8.0-gd.lib
    vtkFiltersModeling-8.0-gd.lib
    vtkFiltersParallel-8.0-gd.lib
    vtkFiltersParallelImaging-8.0-gd.lib
    vtkFiltersPoints-8.0-gd.lib
    vtkFiltersProgrammable-8.0-gd.lib
    vtkFiltersSelection-8.0-gd.lib
    vtkFiltersSMP-8.0-gd.lib
    vtkFiltersSources-8.0-gd.lib
    vtkFiltersStatistics-8.0-gd.lib
    vtkFiltersTexture-8.0-gd.lib
    vtkFiltersTopology-8.0-gd.lib
    vtkFiltersVerdict-8.0-gd.lib
    vtkfreetype-8.0-gd.lib
    vtkGeovisCore-8.0-gd.lib
    vtkgl2ps-8.0-gd.lib
    vtkhdf5-8.0-gd.lib
    vtkhdf5_hl-8.0-gd.lib
    vtkImagingColor-8.0-gd.lib
    vtkImagingCore-8.0-gd.lib
    vtkImagingFourier-8.0-gd.lib
    vtkImagingGeneral-8.0-gd.lib
    vtkImagingHybrid-8.0-gd.lib
    vtkImagingMath-8.0-gd.lib
    vtkImagingMorphological-8.0-gd.lib
    vtkImagingSources-8.0-gd.lib
    vtkImagingStatistics-8.0-gd.lib
    vtkImagingStencil-8.0-gd.lib
    vtkInfovisCore-8.0-gd.lib
    vtkInfovisLayout-8.0-gd.lib
    vtkInteractionImage-8.0-gd.lib
    vtkInteractionStyle-8.0-gd.lib
    vtkInteractionWidgets-8.0-gd.lib
    vtkIOAMR-8.0-gd.lib
    vtkIOCore-8.0-gd.lib
    vtkIOEnSight-8.0-gd.lib
    vtkIOExodus-8.0-gd.lib
    vtkIOExport-8.0-gd.lib
    vtkIOExportOpenGL-8.0-gd.lib
    vtkIOGeometry-8.0-gd.lib
    vtkIOImage-8.0-gd.lib
    vtkIOImport-8.0-gd.lib
    vtkIOInfovis-8.0-gd.lib
    vtkIOLegacy-8.0-gd.lib
    vtkIOLSDyna-8.0-gd.lib
    vtkIOMINC-8.0-gd.lib
    vtkIOMovie-8.0-gd.lib
    vtkIONetCDF-8.0-gd.lib
    vtkIOParallel-8.0-gd.lib
    vtkIOParallelXML-8.0-gd.lib
    vtkIOPLY-8.0-gd.lib
    vtkIOSQL-8.0-gd.lib
    vtkIOTecplotTable-8.0-gd.lib
    vtkIOVideo-8.0-gd.lib
    vtkIOXML-8.0-gd.lib
    vtkIOXMLParser-8.0-gd.lib
    vtkjpeg-8.0-gd.lib
    vtkjsoncpp-8.0-gd.lib
    vtklibharu-8.0-gd.lib
    vtklibxml2-8.0-gd.lib
    vtklz4-8.0-gd.lib
    vtkmetaio-8.0-gd.lib
    vtkNetCDF-8.0-gd.lib
    vtknetcdf_c++-gd.lib
    vtkoggtheora-8.0-gd.lib
    vtkParallelCore-8.0-gd.lib
    vtkpng-8.0-gd.lib
    vtkproj4-8.0-gd.lib
    vtkRenderingAnnotation-8.0-gd.lib
    vtkRenderingContext2D-8.0-gd.lib
    vtkRenderingContextOpenGL-8.0-gd.lib
    vtkRenderingCore-8.0-gd.lib
    vtkRenderingFreeType-8.0-gd.lib
    vtkRenderingGL2PS-8.0-gd.lib
    vtkRenderingImage-8.0-gd.lib
    vtkRenderingLabel-8.0-gd.lib
    vtkRenderingLIC-8.0-gd.lib
    vtkRenderingLOD-8.0-gd.lib
    vtkRenderingOpenGL-8.0-gd.lib
    vtkRenderingVolume-8.0-gd.lib
    vtkRenderingVolumeOpenGL-8.0-gd.lib
    vtksqlite-8.0-gd.lib
    vtksys-8.0-gd.lib
    vtktiff-8.0-gd.lib
    vtkverdict-8.0-gd.lib
    vtkViewsContext2D-8.0-gd.lib
    vtkViewsCore-8.0-gd.lib
    vtkViewsInfovis-8.0-gd.lib
    vtkzlib-8.0-gd.lib
    

    3.2.4 PCL项目配置 预处理器定义

            在属性页窗口中选择C/C+±>预处理器,点击右侧的预处理器定义,向其中添加_CRT_SECURE_NO_WARNINGS;后点击确定。

    3.3 pcd文件简介

            PCD文件格式并不是为了重新发明轮子,而是为了补充现有的文件格式,这些文件格式由于某种原因不支持PCL为n维点云处理带来的某些扩展。PCD不是第一个支持三维点云数据的文件类型。特别是计算机图形学和计算几何界,已经创建了许多格式来描述使用激光扫描仪获取的任意多边形点云点云数据文件(.pcd)下载:githubsourceforge

    3.4 编写C++PCL代码

            PCL点云可视化的C++代码如下,将其复制到main.cpp源文件中即可运行。

    #include<pcl/visualization/cloud_viewer.h>
    #include<iostream>
    #include<pcl/io/io.h>
    #include<pcl/io/pcd_io.h>
    #include<pcl/io/ply_io.h>
    #include<pcl/point_types.h>
    
    
    using namespace std;
    using namespace pcl;
    
    
    
    void viewerOneOff(visualization::PCLVisualizer& viewer) {
    	viewer.setBackgroundColor(0, 0, 0); //设置背景颜色为黑色
    }
    
    int main() {
    
    	PointCloud<PointXYZ>::Ptr cloud(new PointCloud<PointXYZ>);
    
    	char strfilepath[256] = "rabbit.pcd";
    	if (-1 == io::loadPCDFile(strfilepath, *cloud)) {
    		cout << "error input!" << endl;
    		return -1;
    	}
    
    	cout << cloud->points.size() << endl;
    	visualization::CloudViewer viewer("Cloud Viewer: Rabbit");
    
    	viewer.showCloud(cloud);
    	viewer.runOnVisualizationThreadOnce(viewerOneOff);
    	system("pause");
    	return 0;
    }
    

    3.5 运行结果(点云可视化)

    3.5.1 附图

            利用下载的其他点云数据可视化后的部分结果如下图所示。

    展开全文
  • PCL点云库概述

    千次阅读 2020-12-24 14:37:05
    PCL点云概述 点云处理技术广泛应用在逆向工程、CAD/CAM、机器人学、激光遥感测量、机器视觉、虚拟现实、人机交互、立体3D影像等诸多领域。由于其涉及计算机学、图形学、人工智能、模式识别、几何计算、传感器等诸多...

    PCL点云概述

    点云处理技术广泛应用在逆向工程、CAD/CAM、机器人学、激光遥感测量、机器视觉、虚拟现实、人机交互、立体3D影像等诸多领域。由于其涉及计算机学、图形学、人工智能、模式识别、几何计算、传感器等诸多学科,但一直以来由于点云获取手段的昂贵,严重阻碍其在各个行业上的广泛应用,也造成国内点云处理的理论性和工具性书籍匮乏。在2010年,随着消费级RGBD设备(低成本点云获取)的大量上市,以微软的Kinect为前导,目前已有华硕、奥比中光等多家公司开始量产此类产品,正在形成基于RGBD的新一代机器视觉生态链 , PCL(Point Cloud Library)应运而生。PCL是在吸收了前人点云相关研究基础上建立起来的跨平台开源库,可在Windows、Linux、Android、Mac OS X、部分嵌入式实时系统上运行,它实现了大量通用算法和数据结构,涉及点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等基础模块以及人体骨骼识别提取、动作跟踪识别等应用,并且新的其他应用正在大量增加。如果说OpenCV是2D信息获取与处理的结晶,那么PCL就在3D信息获取与处理上具有同等地位。笔者深信随着各大厂商对RGBD设备的大力推出,基于此设备的各种应用将会大量涌现,而PCL不仅是这类应用的核心关键技术,而且基于它进行扩展,将会极大地提高应用系统开发效率和稳定性。
    三维信息的获取与处理是笔者所在研究团队的重要方向之一,在农业对象的三维信息获取与重建、虚拟农业等领域不断探索新的获取技术和处理方法,在2011年7月发现了OpenCV的姐妹PCL及其网站的RSS更新,时刻关注PCL在3D信息获取和处理方面的新动向,并与PCL结缘。在跟踪过程中发现,PCL对RGBD数据的获取和处理提供了强大支持,并有大量的机器人、虚拟现实、人机交互、机器视觉等领域的应用案例,目前几乎每半个月就有新的开发计划,或者有新的资助者或开发者加入。加入PCL开发的团队来自包括全球的AIST,UC Berkeley,University of Bonn,University of British Columbia,ETH Zurich等等。同时我们团队已经把PCL作为开发出实际应用的基础平台,用于跨平台支持嵌入式设备的3D农业信息获取与处理的基础库。目前PCL正在快速成长阶段,国内外尚无相关的中英文系统学习书籍,鉴于此,经过团队讨论,把我们学习和开发应用期间整理的资料与国内读者一起分享,加快PCL在其他各行业中的应用,推动3D信息快速获取与处理的发展。
    PCL的潜在读者群:

    机器人研究或应用开发者机器视觉的研究或应用开发者。人机交互研究或应用开发者。交互式体感游戏开发者。虚拟现实研究或应用开发者。CAD/CAM和逆向工程工作者。工业自动化测量、检测领域的研究或应用开发者。激光雷达遥感的研究或应用开发者。

    1.1 什么是PCL
    PCL是Point Cloud Library的简称,是一个开源的用C++语言开发的点云库,它实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。而且支持多种操作平台,可在Windows、Linux、Android、Mac OS X、部分嵌入式实时系统上运行。如果说OpenCV是2D信息获取与处理的结晶,那么PCL就是在3D信息获取与处理上的结晶,具有同等地位。PCL也是BSD授权方式,可以免费进行商业和学术应用。

    1.2 PCL的发展与创景
    随着加入组织的增多,PCL官方目前的计划是继续加入很多新的功能模块和算法的实现,包括当前最新的3D相关的处理算法和相关设备的支持,如基于PrimeSensor 3D设备,微软Kinect或者华硕的XTionPRO智能交互应用等,详细读者可以参考官方网站每期的新闻,而且也计划进一步支持使用CUDA和OpenCL等基于GPU的高性能计算的技术。笔者相信在近几年内会有更多的人和组织加入到这个项目中来,共享开源PCL带来的各自领域的成果。

    1.3 PCL的潜在应用领域

    1.3.1 机器人领域
    移动机器人对其工作环境的有效感知、辨识与认知,是其进行自主行为优化并可靠完成所承担任务的前提和基础。如何实现场景中物体的有效分类与识别是移动机器人场景认知的核心问题,目前基于视觉图像处理技术来进行场景的认知是该领域的重要方法。但移动机器人在线获取的视觉图像质量受光线变化影响较大,特别是在光线较暗的场景更难以应用,随着RGBD获取设备的大量推广,在机器人领域势必掀起一股深度信息结合2D信息的应用研究热潮,深度信息的引入能够使机器人更好地对环境进行认知、辨识,与图像信息在机器人领域的应用一样,需要强大智能软件算法支撑,PCL就为此而生。最重要的是PCL本身就是为机器人而发起的开源项目,PCL中不仅提供了对现有的RGBD信息的获取设备的支持,还提供了高效的分割、特征提取、识别、追踪等最新的算法,最重要的是它可以移植到ROS、Android、Ubuntu等主流Linux平台上,PCL无疑将会成为机器人应用领域一把“瑞士军刀”。

    1.3.2 CAD/CAM、逆向工程
    大部分工业产品是根据二维或三维CAD模型制造而成,但有时因为数据丢失、设计多次更改、实物引进等原因,产品的几何模型无法获得,因而常常需要根据现有产品实物生成物体几何模型。逆向工程技术能够对产品实物进行测绘,重构产品表面三维几何模型,生成产品制造所需的数字化文档。在一些工业领域,如汽车制造业,许多零件的几何模型都通过逆向工程由油泥模型或实物零件获得,目前在CAD/CAM领域利用激光点云进行高精度测量与重建成为趋势,同时引来了新的问题,通过获取的海量点云数据,来提取重建模型的几何参数或者形状模型,对模型进行智能检索,从点云数据获取模型的曲面模型等,诸如此类的问题解决方案在PCL中都有涉及。例如kd-tree和oc-tree对海量点运进行高效压缩存储与管理,其中滤波、配准、特征描述与提前基础处理,可以应用于模型的智能检索以及后期的曲面重建和可视化都在PCL中有相应的模块。总之,三维点云数据的处理是逆向工程中比较重要的一环,PCL中间所有的模块正是为此而生的。

    1.3.3 激光遥感测量
    能够直接获取高精度三维地面点数据,是对传统测量技术在高程数据获取及自动化快速方面的重要技术补充。激光遥感测量系统在地形测绘、环境检测、三维城市建模、地球科学、行星科学等诸多领域具有广泛的发展前景,是目前最先进的能实时获取地形表面三维空间信息和影像的遥感系统。目前,在各种提取地面点的算法中,算法结果与实际结果之间差别较大,违背了实际情况,PCL中强大的模块可以助力解决此问题。

    1.3.4 虚拟现实、人机交互
    虚拟现实技术(VR)又称灵境技术,是以沉浸性、交互性和构想性为基本特征的计算机高级人机界面。它综合利用了计算机图形学、仿真技术、多媒体技术、人工智能技术、计算机网络技术、并行处理技术和多传感器技术,模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间,具有广阔的应用前景。目前各种交互式体感应用的推出,让虚拟现实与人机交互发展非常迅速,以微软、华硕、三星等为例,目前诸多公司推出的RGBD解决方案,势必会让虚拟现实走出实验室,因为现在的RGBD设备已经开始大量推向市场,只是缺少其他应用的跟进,这正是在为虚拟现实和人机交互应用铸造生态链的底部,笔者认为这也正是PCL为何在此时才把自己与世人分享的重要原因所在,它将是基于RGBD设备的虚拟现实和人机交互应用生态链中最重要的一个环节。让我们抓住这一个节点,立足于交互式应用的一片小天地,但愿本书来的不是太迟。

    1.4 PCL在中国

    PCL虽然在国际上有如此多的组织和公司参与,由于发展如此迅速,目前(2012年4月)在Google中检索出中文相关的PCL探讨,有且只有一条,当然这也是笔者出书原因之一了。事实上,如图1-2所示,在全球范围内,唯独没有中国参与组织,这里希望广大读者可以为中国板块上添加一个小旗帜。当然,肯定有科研工作者在应用或者学习PCL了,笔者依托于中国农业大学农业部信息获取技术重点实验室,在与创始人Radu博士交流后,深感PCL在复杂的农业对象中有不可估量的作用,例如对动植物的重建测度、果蔬等分级检测等应用领域,决定把PCL作为基础研究平台来开展实际应用。同时用学习笔记撰写了本书把PCL与国人分享,相信在不久的将来,与2D信息处理库OpenCV一样,中国将是PCL最大的用户和贡献者基地。

    1.5 PCL的结构和内容

    PCL架构图如图1-3所示,对于3D点云处理来说,PCL完全是一个模块化的现代C++模板库。其基于以下第三方库:Boost、Eigen、FLANN、VTK、CUDA、OpenNI、Qhull,实现点云相关的获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。
    PCL利用OpenMP、GPU、CUDA等先进高性能计算技术,通过并行化提高程序实时性。K近邻搜索操作的构架是基于FLANN(Fast Library for Approximate Nearest Neighbors)所实现的,速度也是目前技术中最快的。

    备注:
    点击下面链接,进入奥比中光开发者社区,了解更多3D视觉技术信息:
    https://developer.orbbec.com.cn/

    或扫描下方二维码,进入奥比中光开发者社区:
    在这里插入图片描述

    展开全文
  • 学习PCL点云库

    2015-05-14 00:08:16
    这是国内少有的PCL点云库资料,比较经典。 点云库还是比较难的
  • https://blog.csdn.net/weixin_30572613/article/details/94873091
  • 起因 我在跑orb-slam2-semantic的demo,遇到...第一篇文章是讲的最详细的一篇文章,安装PCL库和附属的QT VTK等等 https://blog.csdn.net/qq_36728314/article/details/89487719?utm_medium=distribute.pc_rele..
  • 配置方法: PCL安装与配置(Windows10+VS2017 )_syz201558503103的博客-CSDN博客... 不要用以上博客版本的PCL!!! 本人使用的是PCL 1.12.0版本!!! ...
  • 文章目录????官方教程????视频教程【第6集】【第7/8/9集】 pcl_viewer 参数【第10/11集】【第12集】【第14集】【第15集】 ?...PCL 官方英文教程?...我愿称该系列视频教程为官方教程的... 00-PCL教程-Basic Usage-Using PCL i
  •  接下来进行编译 cd pcl mkdir release cd release cmake -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=/usr \ -DBUILD_GPU=ON-DBUILD_apps=ON -DBUILD_examples=ON \ -DCMAKE_INSTALL_PREFIX=/usr .....
  • 驱动及PCL库安装 Windows10下配置KinectV2以支持OpenNI2和PCL Ubuntu16.04下编译libfreenect2和PCL以支持KinectV2点云处理 流程 捕获点云 捕获点云 空间裁剪 空间裁剪 下采样 下采样 滤波 滤波 平面分割找地面 ...
  • 在跑最新官方教程的代码时存在一些数据结构的缺失,这是由于我目前使用的PCL版本低,需要从源码安装PCL。 安装方法 参考链接:Compiling PCL from source on POSIX compliant systems 下载源码:Github Releases ...
  • #pcl #linux #虚拟机linux在Ubuntu16.04下安装pcl点云库(pcl-1.8.1)git刚入门的建议去看一下:B站视频教程:https://www.bilibili.com/video/BV14k4y1z7eV?from=search&seid=1269943738293830823[ 他没有讲安装...
  • 请问vscode可以配置pcl点云库吗?感觉网上找到的都是VS的教程
  • python pcl点云库安装

    2020-12-21 11:11:44
    python pc点云库安装
  • PCL点云库——点云最大曲率

    千次阅读 2021-04-23 11:05:30
     pcl::PrincipalCurvaturesEstimation是PCL中的点云曲率估计方法,其在法线计算的基础上对点云的曲率进行计算。  如图1所示,红色部分为斯坦福兔子曲率最大的5000个点。  最大曲率估计代码如下: #include <...
  • PCL点云处理的简单介绍和安装使用。ubuntu18.04
  • matpcl 是纯 MATLAB 代码,允许通过读写 PCD 格式文件与点云库 (PCL) 工具连接。 纯 MATLAB 避免了尝试将 PCL 代码链接到 MEX 文件时遇到的各种麻烦,这涉及各种麻烦,例如编译器版本和支持库(例如 boost)。 只有...
  • PCL点云库配置流程

    2020-10-09 16:21:02
    配置点云库 配置环境:VS2019、PCL1.11.0。 可选绝对路径和相对路径。 绝对路径暂不赘述。 相对路径:在环境变量中建立总路径后,在设置时引用。 若要一次配置,后面默认使用则将配置加在属性管理器中相应项中。 1...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,324
精华内容 2,929
关键字:

pcl点云库

友情链接: styleplugins.zip