点云压缩入门篇(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

相关文章

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个

前端bug调试的方法技巧及常见错误

《前端bug调试的方法技巧及常见错误》:本文主要介绍编程中常见的报错和Bug,以及调试的重要性,调试的基本流程是通过缩小范围来定位问题,并给出了推测法、删除代码法、console调试和debugg... 目录调试基本流程调试方法排查bug的两大技巧如何看控制台报错前端常见错误取值调用报错资源引入错误解析错误

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Python利用PIL进行图片压缩

《Python利用PIL进行图片压缩》有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所以本文为大家介绍了Python中图片压缩的方法,需要的可以参考下... 有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所有可以对文件中的图