release notes什么意思_点云压缩参考软件mpeg-pcc-tmc13-release-v11.0/12.0学习记录(一)...

本文记录了学习点云和G-PCC压缩技术的过程,包括点云概念、G-PCC压缩综述,以及mpeg-pcc-tmc13-release-v12.0参考软件的编译和调试。在Windows与Linux环境下编译遇到的问题及解决方法,如CMake配置、MinGW-w64的使用,并提供了相关资源链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ef4f483dec8591ba90fe63ffba64ba50.png

初次接触点云相关内容,以下是我2020.11.23-2021.01.10学习记录。希望能对你有所帮助,写的不对之处还请指出。

一、点云概念

点云是在同一空间参考系下表达目标空间分布和目标表面特性的海量点集合,在获取到物体表面每个采样点的空间坐标后,得到的是一个点的集合,它称之为“点云”(Point Cloud)。点云除了包含三维空间信息(XYZ)外,还包含颜色、反射率等信息。

https://en.wikipedia.org/wiki/Point_cloud#:~:text=A%20point%20cloud%20is%20a,surfaces%20of%20objects%20around%20them​en.wikipedia.org

二、点云数据压缩 G-PCC综述

G-PCC (Geometry based Point Cloud Compression)

见该博客:点云数据压缩 G-PCC综述_aperture0的博客-CSDN博客

当然,你也可以自己阅读G-PCC codec description v9文档进行学习

链接:https://pan.baidu.com/s/1LurqMJxJSSsLVOJamxR70g

提取码:7icl

三、根据G-PCC test model v11 user manual的指导对GPCC的参考软件代码mpeg-pcc-tmc13-release-v11.0进行编译

1.windows系统下按照文档所述进行如下步骤:

> md build

> cd build

> cmake ... -G "Visual Studio 15 2017 Win64"。

然而我遇到了如下问题:

48a71c38e3c6f1eaddb4814412a2371b.png

和我没安装Visual Studio 15 2017版本有关,我的电脑是Visual Studio 2019,所以你要按照自己电脑上VS的版本修改上面cmake那一行,建议直接cmake ..它会自己用你的编译器。如果你的问题没有解决,可以参考如下几篇博客

完美解决CMake时“could not find any instance of Visual Studio”的问题【每天一个小技巧】​blog.csdn.net
00d3c8b7f9591e3faa62dac0d29d5e6f.png
解决:CMake Error :Visual Studio 15 2017 -could not find any instance of Visual Studio.​www.cnblogs.com
693eac1b192fed1ec30520f3010bec6b.png

作为一个彻头彻尾的小白,其实我首先遇到的问题是:我根本不知道md, cd, cmake的意思(也是近来才了解windows的cmd: command shell和linux的bash: Bourne-Again shell命令行解释器)。

-md和-mkdir都是cmd下创建目录的命令

cd的意思是change dictionary

Download | CMake​cmake.org

可以下载cmake(很可能下载十分慢而且不成功,这里有我的网盘下载链接),之后要记得添加环境变量。

链接:https://pan.baidu.com/s/1dS5fSSXeM0Pfm3icNvoRlA

提取码:amxy

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。

windows 下cmake的安装+使用教程参考这篇博客:

windows 下cmake的安装+使用 教程​blog.csdn.net
cdaa9294f96cea5415c5cc5758df1e7f.png

回来回来,扯远了。。看到你的文件夹会出现这个:然后直接open the generated visual studio solution and build it,就会在你的目录里出现tmc3.exe可执行文件。

ab89364621f3919b0da33870ecbe1e3a.png

2.使用Linux系统(这个如果你有学习Linux的想法可以像我这样在windows系统下配合VScode使用,后续我的工作就按这个来了,上面那个如果你有用VSstudio做项目的经验也是可以哒,不过我可能就解决不了那边出现的问题啦)

visual studio 和visual studio code 的区别是什么?​www.cnblogs.com
844880c651c60d3ae958648b5697d283.png

windows下载安装Git和MinGW-w64(windows版的GCC库,也是linux编程用的库),并配置环境变量。用git-bash作为命令窗口(命令行语法与linux相同),根据以下命令即可快速编译:

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -G "MinGW Makefiles"
make
cd ..

此处又要插句话了。。作为各种小白的我又开始拼命查询这些我之前没接触过的名词含义:

  • MinGW 的全称是:Minimalist GNU on Windows 。它实际上是将经典的开源 C语言 编译器 GCC 移植到了 Windows 平台下,并且包含了 Win32API ,因此可以将源代码编译为可在 Windows 中运行的可执行程序。
  • 下载MinGW-w64离线包,网盘下载链接如下(提取码: c8uc)。解压离线包,得到mingw-w64文件夹,然后把D:mingw-w64x86_64-8.1.0-posix-seh-rt_v6-rev0mingw64bin 这个目录添加到系统环境

https://pan.baidu.com/s/17JPRFzeZEhqxceWUTXTAog

  • 网站https://code.visualstudio.com/docs/cpp/config-mingw有使用GCC与MinGW教程。
  • VSCode开发C、C++的配置三部曲:一、配置编译器路径(Configure the compiler path)及其他信息产生 c_cpp_properties.json;二、配置任务Tasks产生 tasks.json;三、 配置调试debug设置Configure debug settings产生 launch.json。参考优秀博客:
VSCode开发C、C++环境搭建系列(一)--基于Mingw-w64搭建_MIss-Y的博客-CSDN博客​blog.csdn.net
55e93f64ebb729bebec1fefcbae1994b.png
  • Git-bash中Ctrl+ins 复制 Shift+ins 粘贴
  • 讲linux的优秀网站:
http://c.biancheng.net/view/3546.html​c.biancheng.net
  • 回来回来,又扯远了。。在make环节出现错误:

mpeg-pcc-tmc13-release-v11.0/dependencies/nanoflann/nanoflann .hpp:474:22: error: 'M_PI' was not declared in this scopeif (result > M_PI)

(这个应该上面用VS的小伙伴也会遇到,不过GPCC参考软件发布了v12版本,解决了这个问题,无需再自己添加定义)

解决:打开nanoflann.hhp,看到如下:

#define _USE_MATH_DEFINES // Required by MSVC to define M_PI,etc. in <cmath>
#include <cmath> // for abs()

去cmath 里添加定义:

#define M_PI    3.14159265358979323846

注意:要把vs code软件配置为用mingw-w64。GPCC参考软件发布了v12版本,解决了这个问题,无需再自己添加定义。配置调试debug设置Configure debug settings产生 launch.json:

"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/tmc3/tmc3.exe",
"args": ["--config=./cfg/octree-predlift/lossless-geom-lossless-attrs/egyptian_mask_vox12/encoder.cfg", "--uncompressedDataPath=../uncompressedDataPath/Cat1/ClassA/Egyptian_mask_vox12.ply", "--compressedStreamPath=./comp/octree-predlift/lossless-geom-lossless-attrs/egyptian_mask_vox12/Egyptian_mask_vox12.bin"],
"stopAtEntry": true,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:/mingw-w64/mingw64/bin/gdb.exe",//这个要改成自己的gdb.exe位置
"setupCommands": [
    {
        "description": "为 gdb 启用整齐打印",
        "text": "-enable-pretty-printing",
        "ignoreFailures": true
    }
]

8e54b374bd2e55c3150a2248f41c2d5b.png

Make成功后在..mpeg-pcc-tmc13-release-v12.0buildtmc中出现tmc3.exe可执行文件,就是GPCC的编码器,可以用来编解码点云

4c39e59ff62e8f54e1219d857d0c3fa9.png

四、用GPCC的参考软件代码mpeg-pcc-tmc13-release-v12.0对点云序列编解码

1.对make后生成可执行文件tmc3.exe后,用mpeg-pcc-tmc13/cfg$ ../scripts/gen-cfg.sh –all生产cfg文件 (先到cfg的路径里去,其次用命令../scripts/gen-cfg.sh –all)

88d1af347ff9ead48e5bb2ef90b481ac.png
  • https://metacpan.org/ 下载相应的模块
https://blog.csdn.net/weixin_44721386/article/details/103103043​blog.csdn.net
712740e965e161ab0241545c4bd04790.png

a6aa97c7496f8d388a3ad074bbb3af1e.png

9525d6e973f6754cd1064ab4c5c259fc.png

2.命令行格式举例:(make -f 这个命令行是把编码,解码,计算失真这3个步骤统一在一起)

make -f ./scripts/Makefile.tmc13-step VPATH=./cfg/octree-predlift/lossless-geom-lossless-attrs/redandblack_viewdep_vox12/ ENCODER=./build/tmc3/tmc3.exe DECODER=./build/tmc3/tmc3.exe PCERROR=../mpeg-pcc-dmetric-master/test/pc_error.exe SRCSEQ=../uncompressedDataPath/Cat1/ClassA/redandblack_viewdep_vox12.ply NORMSEQ=../normalsDataPath/Cat1/ClassA/redandblack_viewdep_vox12_n.ply

“..”代表上一级目录、“~”代表HOME目录、“-”代表前一目录

  • 进行这一步前首先需要去拷贝所需的点云序列,注意一个带_n一个不带,并且去D:mpeg-pcc-tmc13scriptsMakefile.tmc13-step里面,把185和206行注释掉,因为windows里面没有/usr/bin/time工具。
  • 但是出现错误:没有pc_error,原因是还没编译mpeg-pcc-dmetric-master

五、对点云的测量失真的程序代码mpeg-pcc-dmetric-master进行编译

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ../source -G "MinGW Makefiles"
make
cd ..

之后就会编译出pc_error

六、对GPCC的参考软件代码mpeg-pcc-tmc13-release-v12.0进行逐行调试

把build的相应命令行里替换成如下:

cmake .. -DCMAKE_BUILD_TYPE=Debug -G "MinGW Makefiles"

Debug和Release的区别

  • Debug:调试版本,包括调试信息,所以其容量一般来说比Release大很多,并且不进行任何的优化(优化会使得调试信息复杂化,因为源代码和生成的指令之间关系会更复杂),以便于程序员进行调试。
    Debug模式下生成两个文件:除了**.exe或者.dll**文件外,还有一个.pdb文件,该文件记录了代码中断点等调试信息。
  • Release:发布版本,不对源代码进行调试,编译时对应用程序的速度进行优化,使得程序在代码大小和运行速度上都是最优的(调试信息可以在单独的PDB文件中生成)。
    Release模式下生成一个文件**.exe.dll**文件。

701954f14ffdc6276b90d82efee61a43.png

然后就逐行调试对照文档学习吧。。。(虽然我还在摸索中。。。毕竟C++,VScode,git-bash命令窗口都是刚刚起步。。。)

希望能和大家多多交流,欢迎批评指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值