点云压缩入门篇(1):参考软件pcc的编译调试

2023-11-22 19:32

本文主要是介绍点云压缩入门篇(1):参考软件pcc的编译调试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点云压缩入门篇(1):参考软件pcc的编译调试

目录

1.     pcc的简介

2.     pcc在linux的编译

3.     pcc在windows的编译


第一部分pcc的简介

pcc是什么?--目前在mpeg组织中,点云压缩的参考软件是Rufael Mekuria提出的pcc,用来产生一些作参考的anchors,其实也就是一个供大家在其之上做一些算法研究的平台。pcc这个软件不是单纯意义上的standalone的一个软件,它很大程度上依赖于经典的点云库point cloudlibrary。

pcc有哪些功能?--这个依赖于PCL的点云压缩软件pcc的重点功能就是集中于对点云的压缩。这里给出Rufael 自己在201605日内瓦的mpeg会上的w16122output中对pcc的contributions的描述:

The specific contributions of this framework are the following:

-        Quality metrics for point cloud geometry and colorattributes analogous to Peak Signal to Noise Ratio (PSNR)  

-        A test bench including file loaders and evaluationroutines with easy configuration enabling automatic benchmarking

-        Point Cloud pre-processing (outlier removal, octreebounding box normalization) ensuring consistent evaluation

-        Commonly available datasets based on datare-constructed with Microsoft Kinect 1, Kinect 2 and other devices.

-        A time varying PCC anchor codec. Support forbenchmarking time varying point cloud compression.

-        A real-time, parallelized, anchor PCC codec. Supportfor benchmarking real-time performance and parallelization of point cloudcodecs.

-        A lossy attribute coding anchor codec. Support forbenchmarking lossy color attribute coding

(节选自w16122_Description_of_PCC_Software_implementation201605 Geneva)

另外,再给出一篇Rufael在2016CSVT期刊上的一篇关于pcc在immersive video上的应用实例的文章《Design, Implementation and Evaluation of a Point Cloud Codec forTele-Immersive Video》

pcc下载方式

mepg svn(会不定期更新版本):[1]http://wg11.sc29.org/svn/repos/MPEG-04/Part16Animation_Framework_eXtension_(AFX)/trunk/3Dgraphics/3DG-PCC/trunk/

Github:https://github.com/RufaelDev/pcc-mp3dg

编译pcc前的准备工作

先给出Rufael对pcc编译的一段说明:

o  Dependenciesand installation guidelines

The package sharesdependencies with the point cloud library [6] andcan be build in similar fashion. Additionally, the anchor coding uses the JPEGcodec using the libJPEGTurbo library which should also be installed. Theframework does depend on boost, Flann, and Eigen, but not on QT, VTK etc. Thepackage can be build on platforms such as linux, windows and or mac. This istested, the build system uses CMake build scripts and can be build using thecmake configuration and generation GUI.

也就是说pcc是依赖于pcl库的,更概括的是pcc软件中继承了pcl库,可以用编译pcl的方式去编译pcc,但要注意的是pcc除了依赖于pcl以外还依赖于boost、Flann、Eigen和值得注意的libJPEG库。

在pcc软件中,pcl库集成好了不需要单独再安装pcl; boost、Flann、Eigen库在3rdparty文件夹中有.patch和makefile两个文件,初步判断这都是linux系统下的文件,可能说明这三个库在linux系统下都是编译好了,不需要安装,但为了保险起见,无论是windows还是linux还都是安装一遍吧。

值得注意的开发平台使用的是visual studio2010版,开发平台32位、64位可选。

第二部分pcc在linux下的编译使用

楼楼起先是在linux下安装pcc的,因为觉得会简单一些。这里给大家分享一个我作参考的linux下安装pcl的博客-- http://www.cnblogs.com/gaoxiang12/p/4633316.html。我也是参考他的步骤一步一步走的,最后是能成功用pcc压缩和解码ply文件的。

1.     用apt-get命令安装好libjpeg库,然后开始编译pcc。

2.     先在pcc的根目录建一个build文件夹,再把makefile放进build文件夹里,包括pcc的makefile和boost等三个库的makefile。再输入下图命令:


就成功安装pcc,这样一来在bin文件夹里产生各种二进制可执行文件,如下图所示。


3.     如果要开始用pcc软件压缩ply文件,先要把parameter_config.txt和数据集.ply放到bin文件夹,其实parameter_config.txt规定了一些压缩的基本参数,包括块大小之类的。

4.     然后根据pcc的命令行来使用,下图展示了pcc软件的基本命令:


小结:会用命令行压缩解码ply文件不代表pcc这个软件你就弄懂了,会调试会修改才是关键。但在linux下调试一个c++工程真的是有剧毒,当然也因为我是linux菜鸟。所以,开始了在windows下编译pcc的漫长之路。

第三部分pcc在windows下的编译调试

1. pcc在windows下编译的几个步骤:

1)安装boost、Flann、Eigen、libJPEG库,并把相应的头文件路径放到系统环境变量的path里;

2)pcc是基于cmake编译的,所以要用cmake对pcc进行编译。

3)编译成功后,用Visual Studio进行调试,检验是否安装成功。

2. 具体过程

1)依赖库的安装:

在PCL官方网站上去下载对应电脑版本的三种库boost、Flann、Eigen,链接http://pointclouds.org/downloads/windows.html。我的电脑是64位的,所以我分别下载了


然后安装到pcc的3rdparty文件夹的对应文件夹中。成功安装后会出现:

Boost                                                eigen                                               



Flann


再去安装libJPEG库,链接:http://pan.baidu.com/s/1pKCHpAN密码:2k4x。安装以后会出现:


注意:要求所有的库的位数和电脑都是匹配的。

2) 环境变量的配置:

然后把各个库的头文件路径也就是include路径加载到系统环境变量的path里。系统环境变量在:控制面板-系统安全-系统-高级系统设置-环境变量-系统变量;找到其中的Path,把四个库的include路径添加进去,这样是为了项目运行时能找到依赖库的位置。

       再把各个库的.dll(动态库)文件的路径也加载到系统的环境变量path里,这是因为工程在run运行的时候会需要加载动态库。

 



























3)cmake编译:

在pcc根目录中建一个build目录,用来放cmake编译完后的pcc版本。然后启动cmake,将pcc地址放到source code处,where to build the binaries存放刚建的build文件夹的地址。


然后先configuration,看看是否有没检测到的库等问题,解决问题后,再点generate生成。如果会出现问题,那还是系统检测不到依赖库的问题,再重新检查是否将依赖库的include路径放到系统路径中。

成功生成以后,在build文件夹中会出现pcl.sln这个文件。这是pcc这个工程在vs这个开发平台的解决方案。Cmake的好处就是自动检测你所用的开发平台并生成相应格式的解决方案。用visual studio2010打开pcl.sln,将pcl_mpeg_pcc_compression_eval设成启动项。

4)启动项包含路径、库目录、附加依赖项的配置:

(1)右键启动项-属性-配置属性-VC++目录-包含目录,此处添加四个依赖库的include地址;

(2)右键启动项-属性-配置属性-VC++目录-库目录,此处添加四个依赖库.lib文件的路径;

(3)右键启动项-属性-配置属性-链接器-输入-附加依赖项,此处是由cmake的generate后自动生成的,但需要再检查一下几个依赖库是否加载进来以及位置是否正确。

5)开发平台位数选择:由于我的依赖库是64位的,所以开发环境也要选择64位的,不然后期会报“无法解析的符号”和“模块计算机类型和目标计算机类型冲突”这样的问题。X64可以在下拉菜单里选择,如果只有win32这一个选项,可以点配置管理器-活动解决平台方案处选新建,就可以新建一个x64。然后debug一下,没啥情况就调试通过啦。


6)可能出现的问题及相关解决方法:

(1)cmake的generate不成功?

方法:检查依赖库是否安装成功?依赖库的include路径是否添加到系统路径?

(2)debug的时候报错“无法解析的外部符号”?


方法:库的位数和开发平台不匹配,四种依赖库也都需要是同一位数的(32位或64位),以库的位数为准。

(3)debug的时候报错“模块计算机类型和目标计算机类型冲突”(fatal errorLNK1112: module machine type 'x64' conflicts with target machine type 'X86')?

方法:贴两个google到的最佳答案。



楼楼出现这个问题的时候,是第二个回答帮助解决的。也就是修改工程中每个模块的命令行。右键该模块-配置属性-链接器命令行,若此处的其他选项写的是“/machine:x86”(如下图),代表这个模块只能在32位的平台下编译实现,这就会和64位的库冲突。办法就是,删掉这条命令行。因为一个模块的运行很可能跟多个其他模块有关联,而找到与哪些模块有关联十分麻烦,所以最好的办法是每个模块的命令行都检查一下。


好啦,这一篇就讲完啦,欢迎建议。路要走,书要看,希望对你有所用,希望你有所成!


这篇关于点云压缩入门篇(1):参考软件pcc的编译调试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/412422

相关文章

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

IDEA如何实现远程断点调试jar包

《IDEA如何实现远程断点调试jar包》:本文主要介绍IDEA如何实现远程断点调试jar包的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录问题步骤总结问题以jar包的形式运行Spring Boot项目时报错,但是在IDEA开发环境javascript下编译

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

Python MCPInspector调试思路详解

《PythonMCPInspector调试思路详解》:本文主要介绍PythonMCPInspector调试思路详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录python-MCPInspector调试1-核心知识点2-思路整理1-核心思路2-核心代码3-参考网址

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

Linux系统调试之ltrace工具使用与调试过程

《Linux系统调试之ltrace工具使用与调试过程》:本文主要介绍Linux系统调试之ltrace工具使用与调试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、ltrace 定义与作用二、ltrace 工作原理1. 劫持进程的 PLT/GOT 表2. 重定

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1