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

相关文章

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

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