PCL学习日记1

来源:互联网 发布:付费软件怎么收费 编辑:程序博客网 时间:2024/05/16 08:52

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\includeD:\PCL 1.7.2\3rdParty\FLANN\includeD:\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

1 0
原创粉丝点击