您的位置:首页 > 其它

PCL学习日记1

2016-11-09 17:08 204 查看
1. PCL(Point Cloud Library)

解析:PCL(Point Cloud Library)是在吸收前人点云相关研究基础上建立起来的大型跨平台开源C++编程库,它实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。如果说OpenCV是2D信息获取与处理的结晶,那么PCL在3D信息获取与处理上具有同等地位。

2. PCL和VS2013安装

解析:

(1)环境变量Path配置

D:\PCL 1.7.2\bin
D:\PCL 1.7.2\3rdParty\FLANN\bin
D:\PCL 1.7.2\3rdParty\Qhull\bin
D:\PCL 1.7.2\3rdParty\VTK\bin
(2)VS 2013包含目录配置
D:\PCL 1.7.2\include\pcl-1.7
D:\PCL 1.7.2\3rdParty\VTK\include\vtk-6.2
D:\PCL 1.7.2\3rdParty\Qhull\include
D:\PCL 1.7.2\3rdParty\FLANN\include
D:\PCL 1.7.2\3rdParty\Boost\include\boost-1_57
D:\PCL 1.7.2\3rdParty\Eigen\eigen3
(3)VS 2013库目录配置
D:\PCL 1.7.2\lib
D:\PCL 1.7.2\3rdParty\VTK\lib
D:\PCL 1.7.2\3rdParty\Qhull\lib
D:\PCL 1.7.2\3rdParty\FLANN\lib
D:\PCL 1.7.2\3rdParty\Boost\lib
(4)VS
2013附加依赖项配置(Release)
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_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_surface_release.lib
pcl_tracking_release.lib
pcl_visualization_release.lib
libboost_atomic-vc120-mt-1_57.lib
libboost_chrono-vc120-mt-1_57.lib
libboost_container-vc120-mt-1_57.lib
libboost_context-vc120-mt-1_57.lib
libboost_coroutine-vc120-mt-1_57.lib
libboost_date_time-vc120-mt-1_57.lib
libboost_exception-vc120-mt-1_57.lib
libboost_filesystem-vc120-mt-1_57.lib
libboost_graph-vc120-mt-1_57.lib
libboost_iostreams-vc120-mt-1_57.lib
libboost_locale-vc120-mt-1_57.lib
libboost_log-vc120-mt-1_57.lib
libboost_log_setup-vc120-mt-1_57.lib
libboost_math_c99-vc120-mt-1_57.lib
libboost_math_c99f-vc120-mt-1_57.lib
libboost_math_c99l-vc120-mt-1_57.lib
libboost_math_tr1-vc120-mt-1_57.lib
libboost_math_tr1f-vc120-mt-1_57.lib
libboost_math_tr1l-vc120-mt-1_57.lib
libboost_mpi-vc120-mt-1_57.lib
libboost_prg_exec_monitor-vc120-mt-1_57.lib
libboost_program_options-vc120-mt-1_57.lib
libboost_random-vc120-mt-1_57.lib
libboost_regex-vc120-mt-1_57.lib
libboost_serialization-vc120-mt-1_57.lib
libboost_signals-vc120-mt-1_57.lib
libboost_system-vc120-mt-1_57.lib
libboost_test_exec_monitor-vc120-mt-1_57.lib
libboost_thread-vc120-mt-1_57.lib
libboost_timer-vc120-mt-1_57.lib
libboost_unit_test_framework-vc120-mt-1_57.lib
libboost_wave-vc120-mt-1_57.lib
libboost_wserialization-vc120-mt-1_57.lib
flann_cpp_s.lib
qhullstatic.lib
vtkalglib-6.2.lib
vtkChartsCore-6.2.lib
vtkCommonColor-6.2.lib
vtkCommonComputationalGeometry-6.2.lib
vtkCommonCore-6.2.lib
vtkCommonDataModel-6.2.lib
vtkCommonExecutionModel-6.2.lib
vtkCommonMath-6.2.lib
vtkCommonMisc-6.2.lib
vtkCommonSystem-6.2.lib
vtkCommonTransforms-6.2.lib
vtkDICOMParser-6.2.lib
vtkDomainsChemistry-6.2.lib
vtkexoIIc-6.2.lib
vtkexpat-6.2.lib
vtkFiltersAMR-6.2.lib
vtkFiltersCore-6.2.lib
vtkFiltersExtraction-6.2.lib
vtkFiltersFlowPaths-6.2.lib
vtkFiltersGeneral-6.2.lib
vtkFiltersGeneric-6.2.lib
vtkFiltersGeometry-6.2.lib
vtkFiltersHybrid-6.2.lib
vtkFiltersHyperTree-6.2.lib
vtkFiltersImaging-6.2.lib
vtkFiltersModeling-6.2.lib
vtkFiltersParallel-6.2.lib
vtkFiltersParallelImaging-6.2.lib
vtkFiltersProgrammable-6.2.lib
vtkFiltersSelection-6.2.lib
vtkFiltersSMP-6.2.lib
vtkFiltersSources-6.2.lib
vtkFiltersStatistics-6.2.lib
vtkFiltersTexture-6.2.lib
vtkFiltersVerdict-6.2.lib
vtkfreetype-6.2.lib
vtkftgl-6.2.lib
vtkGeovisCore-6.2.lib
vtkgl2ps-6.2.lib
vtkhdf5-6.2.lib
vtkhdf5_hl-6.2.lib
vtkImagingColor-6.2.lib
vtkImagingCore-6.2.lib
vtkImagingFourier-6.2.lib
vtkImagingGeneral-6.2.lib
vtkImagingHybrid-6.2.lib
vtkImagingMath-6.2.lib
vtkImagingMorphological-6.2.lib
vtkImagingSources-6.2.lib
vtkImagingStatistics-6.2.lib
vtkImagingStencil-6.2.lib
vtkInfovisCore-6.2.lib
vtkInfovisLayout-6.2.lib
vtkInteractionImage-6.2.lib
vtkInteractionStyle-6.2.lib
vtkInteractionWidgets-6.2.lib
vtkIOAMR-6.2.lib
vtkIOCore-6.2.lib
vtkIOEnSight-6.2.lib
vtkIOExodus-6.2.lib
vtkIOExport-6.2.lib
vtkIOGeometry-6.2.lib
vtkIOImage-6.2.lib
vtkIOImport-6.2.lib
vtkIOInfovis-6.2.lib
vtkIOLegacy-6.2.lib
vtkIOLSDyna-6.2.lib
vtkIOMINC-6.2.lib
vtkIOMovie-6.2.lib
vtkIONetCDF-6.2.lib
vtkIOParallel-6.2.lib
vtkIOPLY-6.2.lib
vtkIOSQL-6.2.lib
vtkIOVideo-6.2.lib
vtkIOXML-6.2.lib
vtkIOXMLParser-6.2.lib
vtkjpeg-6.2.lib
vtkjsoncpp-6.2.lib
vtklibxml2-6.2.lib
vtkmetaio-6.2.lib
vtkNetCDF-6.2.lib
vtkNetCDF_cxx-6.2.lib
vtkoggtheora-6.2.lib
vtkParallelCore-6.2.lib
vtkpng-6.2.lib
vtkproj4-6.2.lib
vtkRenderingAnnotation-6.2.lib
vtkRenderingContext2D-6.2.lib
vtkRenderingCore-6.2.lib
vtkRenderingFreeType-6.2.lib
vtkRenderingFreeTypeOpenGL-6.2.lib
vtkRenderingGL2PS-6.2.lib
vtkRenderingImage-6.2.lib
vtkRenderingLabel-6.2.lib
vtkRenderingLIC-6.2.lib
vtkRenderingLOD-6.2.lib
vtkRenderingOpenGL-6.2.lib
vtkRenderingVolume-6.2.lib
vtkRenderingVolumeOpenGL-6.2.lib
vtksqlite-6.2.lib
vtksys-6.2.lib
vtktiff-6.2.lib
vtkverdict-6.2.lib
vtkViewsContext2D-6.2.lib
vtkViewsCore-6.2.lib
vtkViewsInfovis-6.2.lib
vtkzlib-6.2.lib


3. PCL架构图



4. PCL依赖库

解析:

(1)Boost:C++“准”标准库。

(2)Eigen:C++开源矩阵计算工具。

(3)FLANN:近似最近邻开源库。

(4)Qhull:解决凸包问题,生成凸包形体。

(5)VTK:三维计算机图形学、图像处理和可视化。

5. PCL核心模块 [4]

解析:

(1)libpcl filters:采样、去除离群点、特征提取、拟合估计等数据实现过滤器。

(2)libpcl features:实现多种三维特征,比如曲面法线、曲率、边界点估计、矩不变量、主曲率,PFH和FPFH特征,旋转图像、积分图像,NARF描述子,RIFT,相对标准偏差,数据强度的筛选等。

(3)libpcl I/O:实现数据的输入和输出操作,比如点云数据文件(PCD)的读/写。

(4)libpcl segmentation:实现聚类提取,比如通过采样一致性方法对一系列参数模型(比如平面、柱面、球面、直线等)进行模型拟合点云分割提取,提取多边形棱镜内部点云等。

(5)libpcl surface:实现表面重建技术,比如网格重建、凸包重建、移动最小二乘法平滑等。

(6)libpcl registration:实现点云配准方法,比如ICP等。

(7)libpcl keypoints:实现不同的关键点的提取方法,这可以用来作为预处理步骤,决定在哪儿提取特征描述符。

(8)libpcl range:实现支持不同点云数据集生成的范围图像。



6. 如何获取点云数据?

解析:

(1)硬件传感器(比如,立体相机,3D扫描仪,TOF相机)。

(2)SFM算法。

(3)深度相机(PrimeSensor 3D cameras,Microsoft Kinect和Asus XTionPRO)。

7. Kinect SDK for Windows和OpenNI

解析:两者都支持Kinect开发。



8. 全景视频拼接算法 [5][6]

解析:图像拼接(Image Stitching)是一种利用实景图像组成全景空间的技术,它将多幅图像拼接成一幅大尺度图像或360度全景图,图像拼接技术涉及到计算机视觉、计算机图形学、数字图像处理以及一些数学工具等技术。图像拼接的基本步骤主要包括:摄相机的标定、传感器图像畸变校正、图像的投影变换、匹配点选取、全景图像拼接(融合),以及亮度与颜色的均衡处理等。

9. 视频跟踪算法

解析:Casevision公司的AVT21自动视频跟踪算法模块提供了多种跟踪算法:质心跟踪算法(Centroid)、多目标跟踪算法(MTT)、相关跟踪算法(Correlation)、边缘跟踪算法(Edge)、相位相关跟踪算法(Phase Correlation),场景锁定算法(SceneLock)和组合(Combined)跟踪算法。

参考文献:

[1] Point Cloud Library (PCL) 1.7.2:http://docs.pointclouds.org/1.7.2/

[2] PCL中国:http://www.pclcn.org/

[3] PCL-1.7.2-AllInOne-msvc2013-win64 + VS 2013安装:http://blog.csdn.net/jiaojialulu/article/details/51404368

[4] PCL Walkthrough:http://www.pointclouds.org/documentation/tutorials/walkthrough.php#walkthrough

[5] 全景视频拼接关键技术:http://blog.csdn.net/shanghaiqianlun/article/details/12090595
[6] OpenCV中的全景拼接例程:http://www.cnblogs.com/zjutzz/p/4960422.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  boost eigen vtk qhull flann