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

相关文章

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

hdu1565(状态压缩)

本人第一道ac的状态压缩dp,这题的数据非常水,很容易过 题意:在n*n的矩阵中选数字使得不存在任意两个数字相邻,求最大值 解题思路: 一、因为在1<<20中有很多状态是无效的,所以第一步是选择有效状态,存到cnt[]数组中 二、dp[i][j]表示到第i行的状态cnt[j]所能得到的最大值,状态转移方程dp[i][j] = max(dp[i][j],dp[i-1][k]) ,其中k满足c

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

2、PF-Net点云补全

2、PF-Net 点云补全 PF-Net论文链接:PF-Net PF-Net (Point Fractal Network for 3D Point Cloud Completion)是一种专门为三维点云补全设计的深度学习模型。点云补全实际上和图片补全是一个逻辑,都是采用GAN模型的思想来进行补全,在图片补全中,将部分像素点删除并且标记,然后卷积特征提取预测、判别器判别,来训练模型,生成的像

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2