-
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点云库入门到精通
2022-04-20 14:34:31PDF-SLAM-点云处理-pcl点云库入门到精通 -
《PCL点云库》.pdf
2021-10-25 17:36:49《PCL点云库》.pdf -
欧式聚类分割_PCL点云库欧式聚类分割_点云PCL_点云库_
2021-09-29 14:46:34点云分割-PCL点云库欧式聚类分割-基于欧式距离的分割 -
PCl点云库资料集合
2018-12-11 21:02:13PCl点云库的一些文档,还有一些相应的代码,共10个单元。 -
PCL点云库学习教程
2018-08-25 20:07:31目前国内比较好的点云库PCL学习教程中文版,适用于目前很热门的深度学习,SLAM,OpenCV等方向学习。 -
PCL 点云库编程测试点云数据 PCD格式
2020-04-04 22:18:37PCL 点云库编程测试点云数据 PCD格式 包括圆柱 长方体 菱形 人体形状 PLC文字点云 -
pcl点云库源代码.zip
2021-03-20 15:13:27点云库PCL学习教程源码 -
PCL点云库配置
2021-08-17 15:50:12PCL1.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点云库中的模版匹配测试点云
2022-05-14 15:50:23用于PCL中模版匹配算法的测试点云,用于PCL中模版匹配算法的测试点云,用于PCL中模版匹配算法的测试点云用于PCL中模版匹配算法的测试点云,用于PCL中模版匹配算法的测试点云,用于PCL中模版匹配算法的测试点云,用于... -
点云库PCL学习教程.pdf
2021-11-15 20:34:08点云库PCL学习教程.pdf 点云库PCL学习教程.pdf 点云库PCL学习教程.pdf 点云库PCL学习教程.pdf -
PCL点云官方点云数据.zip
2020-07-22 14:22:16PCL官方点云数据,包含全部全部点云数据,可以用于官方所有例子的测试与比较,其中有著名的斯坦福大学提供的兔子模型,马模型等。 -
PCL点云库安装及学习(2021.7.28)
2021-07-13 11:27:20PCL点云库学习 2021.7.131、PCL简介2、PCL环境配置3、PCL代码实战 1、PCL简介 PCL是一个点云库,PCL帮助文档,PCL论文下载,PCL的Github地址 2、PCL环境配置 3、...PCL点云库学习 2021.7.28
1、PCL简介
点云库PCL英文全称为Point Cloud Library,它是一个独立的、大规模的、开放的项目,用于2D和3D图像和点云处理,同时还可免费用于商业和科学研究。PCL支持的操作系统有Linux、Windows、MacOS等,它所支持的开发语言有C++和Python,内部所调用的第三方依赖库有Boost、Eigen、FLANN、VTK、QHull和OpenNI2,这六个依赖库特别重要!!!PCL可分为一系列的模块库,包含滤波器
filters
、特征features
、特征keypoints
、配准registration
、kd树kdtree
、oc树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
文件夹下包含Boost
、Eigen
、FLANN
、OpenNI2
、Qhull
和VTK
六个文件夹,各个文件夹目录结构见下图。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_ROOT为
D:\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。
因为lib文件数量较多,手动逐个复制lib文件名较为繁琐耗时,因此采用`Java`和`Eclipse IDE`来批量获取相应目录下的lib文件名称。PCL的lib Boost的lib FLANN的lib OpenNI 2的lib Qhull的lib VTK的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)下载:github、sourceforge
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:05PCL点云概述 点云处理技术广泛应用在逆向工程、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点云库资料,比较经典。 点云库还是比较难的 -
win10下VS2017配置PCL点云库
2022-03-04 10:09:40https://blog.csdn.net/weixin_30572613/article/details/94873091 -
ubuntu下配置PCL点云库全收集
2020-10-18 10:45:16起因 我在跑orb-slam2-semantic的demo,遇到...第一篇文章是讲的最详细的一篇文章,安装PCL库和附属的QT VTK等等库 https://blog.csdn.net/qq_36728314/article/details/89487719?utm_medium=distribute.pc_rele.. -
Win下VS2019配置PCL点云库总结
2021-12-01 18:09:56配置方法: PCL安装与配置(Windows10+VS2017 )_syz201558503103的博客-CSDN博客... 不要用以上博客版本的PCL!!! 本人使用的是PCL 1.12.0版本!!! ... -
【PCL】我是如何从零基础到学会看PCL点云库官方教程的
2021-08-09 15:15:59文章目录????官方教程????视频教程【第6集】【第7/8/9集】 pcl_viewer 参数【第10/11集】【第12集】【第14集】【第15集】 ?...PCL 官方英文教程?...我愿称该系列视频教程为官方教程的... 00-PCL教程-Basic Usage-Using PCL i -
ubuntu18.04中安装pcl点云库
2021-04-19 19:38:48接下来进行编译 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 ..... -
点云测体积演示:用Kinect+PCL点云库测量方体体积_C++_代码_相关文件_下载
2022-07-11 22:19:00驱动及PCL库安装 Windows10下配置KinectV2以支持OpenNI2和PCL Ubuntu16.04下编译libfreenect2和PCL以支持KinectV2点云处理 流程 捕获点云 捕获点云 空间裁剪 空间裁剪 下采样 下采样 滤波 滤波 平面分割找地面 ... -
【PCL点云库】Ubuntu20.04下从源码 安装/卸载 指定版本的PCL点云库
2022-01-04 13:05:21在跑最新官方教程的代码时存在一些数据结构的缺失,这是由于我目前使用的PCL版本低,需要从源码安装PCL。 安装方法 参考链接:Compiling PCL from source on POSIX compliant systems 下载源码:Github Releases ... -
在Ubuntu16.04下安装pcl点云库(pcl-1.8.1)
2021-05-12 07:34:00#pcl #linux #虚拟机linux在Ubuntu16.04下安装pcl点云库(pcl-1.8.1)git刚入门的建议去看一下:B站视频教程:https://www.bilibili.com/video/BV14k4y1z7eV?from=search&seid=1269943738293830823[ 他没有讲安装... -
请问vscode上怎么配置pcl点云库呀?
2021-08-09 22:53:32请问vscode可以配置pcl点云库吗?感觉网上找到的都是VS的教程 -
python pcl点云库安装
2020-12-21 11:11:44python pc点云库安装 -
PCL点云库——点云最大曲率
2021-04-23 11:05:30pcl::PrincipalCurvaturesEstimation是PCL中的点云曲率估计方法,其在法线计算的基础上对点云的曲率进行计算。 如图1所示,红色部分为斯坦福兔子曲率最大的5000个点。 最大曲率估计代码如下: #include <... -
ubuntu18.04 安装pcl点云库(亲测有效)
2022-05-27 23:36:58PCL点云处理库的简单介绍和安装使用。ubuntu18.04 -
MATLAB 到点云库:matpcl 是纯 MATLAB 代码,允许与点云库 (PCL) 工具连接-matlab开发
2021-05-30 13:31:06matpcl 是纯 MATLAB 代码,允许通过读写 PCD 格式文件与点云库 (PCL) 工具连接。 纯 MATLAB 避免了尝试将 PCL 代码链接到 MEX 文件时遇到的各种麻烦,这涉及各种麻烦,例如编译器版本和支持库(例如 boost)。 只有... -
PCL点云库配置流程
2020-10-09 16:21:02配置点云库 配置环境:VS2019、PCL1.11.0。 可选绝对路径和相对路径。 绝对路径暂不赘述。 相对路径:在环境变量中建立总路径后,在设置时引用。 若要一次配置,后面默认使用则将配置加在属性管理器中相应项中。 1...