使用VS运行TMC2参考软件

2023-11-21 07:40
文章标签 使用 运行 软件 vs 参考 tmc2

本文主要是介绍使用VS运行TMC2参考软件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

0 环境配置

0.1 材料准备

0.2 解压文件

1 生成并编译

1.1 CMake生成TMC2

1.2 生成TMC2的可执行文件

1.3 生成HDRTools

2 测试编码

2.1 测试序列下载

2.2 修改测试序列的配置文件

2.3 运行测试

3 参数解释

4 参考文章


0 环境配置

2022·8·23更新:官网已更新至18.0版本,CMake过程的VTM可能已换源,如果仍用15.0进行配置会出错,即使跳过VTM的clone过程在生成过程中也会因为缺失CommonLib报错,建议用18.0版本(当前maste版本)进行配置,实测以下配置过程可以在18.0上使用。

本文使用的版本是TMC2 v15.0

0.1 材料准备

        (官方)Visual Studio下载

        (GitHub)TMC2软件参考模型

        (官方)CMake

        (官方) Git

        (GitLab)HDRTools下载

        (官方)VPCC测试序列


       (百度云)TMC2资料整合,提取码2222

0.2 解压文件

Visual Studio、CMake和Git是常用工具,这里不再赘述安装方法,CMake过程中需要用到Git否则会报错。下文中所用Visual Studio版本为2019,CMake所用版本为3.21.3。

首先建立一个MPEG-PCC-TMC2的文件夹(下文的截图中均错写成了MEPG-PCC-TMC2,见谅),下文将此文件夹作为根目录,用/表示,然后在此文件夹下建立external, mpeg-pcc-tmc2-master, ply三个文件夹,解压后的包结构如下图

  1. mpeg-pcc-tmc2-master:TMC2参考软件本体,将软件参考模型解压至此文件夹下;
  2. ply:存放.ply文件,将下载的测试序列解压在此处,作为软件输入的测试文件,解压后的包结构会在2.1部分说明;
  3. extral:将下载的HDRTools解压到/external下,作为外部调用位置,有的博客会说此文件夹下还需要额外下载编码软件并patch,下载地址在“0.1 材料准备”中给出的GitHub文章中也有给出,但如果直接使用GitHub上下载软件中的CMakeList,在CMake过程可于/mpeg-pcc-tmc2-master/dependencies位置下直接生成patch过的依赖(按后文步骤进行即可,但注意需要保证此时网络可访问GitHub),在一些地方会看到说需要将外部下载的patch过的编解码软件存放在external下,但笔者在使用TMC2过程中发现软件会直接寻找/mepeg-pcc-tmc2-master/dependencies下对应的编解码软件,因此可以不将生成的外部调用放在external中(按后文步骤即可)。

注意解压后尽量不要存在中间包,否则容易给后续设置输出目录或查找文件带来麻烦,即比如TMC2下的source的所在路径为“/mpeg-pcc-tmc2-master”而不是“/mpeg-pcc-tmc2-master/mpeg-pcc-tmc2-master”,external下的HDRTools-v0.18同理。

1 生成并编译

1.1 CMake生成TMC2

首先进入/mpeg-pcc-tmc2-master,创建名为build的文件夹

然后打开CMake,源代码选择CMakeList.txt所在的位置,也就是刚才新建的build文件夹所在的目录,生成代码选择build文件夹下,然后点击Configure→选择自己VS的版本→Finish

在出现Configuring done后点击Generate,出现Generating done后生成结束

注意:在刚才CMake的过程中已经在/mpeg-pcc-tmc2-master/dependencies位置下生成了patch过的依赖(即编码软件),此时进入/mpeg-pcc-tmc2-master/dependencies可以看到增加了几个文件夹

这是CMake前dependencies文件夹下的内容
这是CMake后dependencies文件夹下的内容

根据笔者的使用,配置文件指定编解码器后TMC2会直接将此处的编解码软件源码合并到项目中使用,不会调用/external下的可执行文件,如果要对编解码软件进行修改优化的工作,需要在此处进入修改。

1.2 生成TMC2的可执行文件

在/mpeg-pcc-tmc2-master下创建一个bin文件夹,然后用VS打开/mpeg-pcc-tmc2-master/build/TMC2.sln

如果没有TMC2.sln则用CMake再次Configure和Generate。

在ALL_BUILD上右键→属性→配置属性→常规→输出目录,设置为/bin/Release(后续如果需要用Debug模式调试建议将生成目录设置为/bin/Debug)

注意左上角的配置设置为所有配置,平台设置为x64

修改解决方案的配置和平台为Release和x64,然后生成

生成结束后可能有如下报错,但只要控制台没有生成失败的提示,就可以无视该报错

 此时/mpeg-pcc-tmc2-master/bin/Release下应有如下可执行文件

1.3 生成HDRTools

打开/extral/HDRTools-v0.18/HDRTools.sln

由于版本问题可能出现下图的提示,确定更新即可

不建议修改HDRTools的输出目录,HDRTools的bin目录下本身就已经有一部分可执行文件了,这些可执行文件放在一起也方便后续的查找,修改此处输出目录的话,在2.3运行测试部分使用的参数要同步修改。

将解决方案配置改为Release,平台改为刚才属性页配置的对应情况

选择8个项目然后右键→生成选定内容

8个生成成功后,/extral/HDRTools-v0.18/bin/Release会有如下图中的这些新增文件(用Debug配置可能会生成出错,也没有必要使用Debug模式生成HDRTools)

2 测试编码

2.1 测试序列下载

进入"这里"去找官方的测试序列

官方给出了两个数据集

第一个是8i Voxelized Surface Light Field (8iVSLF),数据内容如下:

2022.4.19日更新:官方已经更改了提供的8i数据集,现在使用的是vox12版本,不再是以前的vox10,且只提供一个300帧的高分辨率序列,其他六个序列均为单帧点云,不提供法线。

官方声明(机翻)如下:

我在0.1材料准备中的百度云资料整合里更新了soldier序列的32帧测试序列和对应法线,可以保证程序的运行,经评论补充,在这里可以下载到部分测试序列。

以下为博客原文。

后续均以Soldier数据集为例,此外注意红框框住的部分下载的仅为简单的一帧测试帧,如果需要完整的多帧测试集需要从蓝色框住的链接下载,在0.1材料准备的百度云整合资料中包含了Soldier数据集的压缩包。

第二个是Owlii Dynamic Human Textured Mesh,与上一个数据集类似,只是内容是MPEG后来补充的数据集,不再赘述

下载好后将文件解压到/ply下,建议将解压出的soldier/Ply中的测试序列移到/ply/soldier下,并删除多余文件夹,保持包结构清晰,即

2.2 修改测试序列的配置文件

进入/mpeg-pcc-tmc2-master/cfg/sequence/soldier_vox10.cfg(如果使用的是别的测试序列则修改对应名称的文件,如果需要无损模式则使用lossless后缀的配置文件)

 注释掉原本的路径值,改为刚才解压到的位置

2.3 运行测试

使用VS的运行参数:

--configurationFolder=cfg/  --config=cfg/common/ctc-common.cfg  --config=cfg/condition/ctc-all-intra.cfg  --config=cfg/sequence/soldier_vox10.cfg --config=cfg/rate/ctc-r3.cfg --uncompressedDataFolder=../ply/ --frameCount=1 --colorSpaceConversionPath=../external/HDRTools-v0.18/bin/HDRConvert.exe --reconstructedDataPath=S26C03R03_rec_%04d.ply --compressedStreamPath=S26C03R03.bin --keepIntermediateFiles=1 --apply3dMotionCompensation=0

使用powershell的运行参数:

bin/Release/PccAppEncoder.exe --configurationFolder=cfg/  --config=cfg/common/ctc-common.cfg  --config=cfg/condition/ctc-all-intra.cfg  --config=cfg/sequence/soldier_vox10.cfg --config=cfg/rate/ctc-r3.cfg --uncompressedDataFolder=../ply/ --frameCount=1 --colorSpaceConversionPath=../external/HDRTools-v0.18/bin/HDRConvert.exe --reconstructedDataPath=S26C03R03_rec_%04d.ply --compressedStreamPath=S26C03R03.bin --keepIntermediateFiles=1 --apply3dMotionCompensation=0

官方教程中,运行参数有一项 --videoEncoderPath,此参数已不使用,取而代之的是--videoEncoderOccupancyPath, --videoEncoderGeometryPath, --videoEncoderAttributePath,对占位图、几何(深度)图、属性(纹理)图的编码软件可以分开选择。

本文以使用VS运行为例

进入/mpeg-pcc-tmc2-master/build/TMC2.sln

找到PccAppEncoder,右键→设为启动项

然后继续对PccAppEncoder右键→属性→配置属性→调试→命令参数,修改为刚才的“使用VS的运行参数”,工作目录使用“浏览”设置为/mpeg-pcc-tmc2-master下的位置,也可以手动输入../../../..,然后注意检查“配置”和“平台”,分别为“所有配置”和“x64”

调试前检查是否为Release模式和x64,然后使用调试

成功开始对patch进行划分说明参数没有问题,否则要去检查参数是否出错。 

注意,如果出现以下错误,请检查/external/HDRTools-v0.18/bin下是否有生成的.exe文件,如果之前修改了HDRTools的输出目录,要把前面的参数中 --colorSpaceConversionPath 的值同步修改

运行结果如下图所示时,表示编码结束运行成功

此时进入/mpeg-pcc-tmc2-master,发现多了一些文件

其中 S26C03R03_GOF0_attribute_1280x1280_8bit_p420.yuv 是属性(纹理)图,包含两帧,一帧是近Map一帧是远Map,S26C03R03_GOF0_attribute_rec_1280x1280_16bit_p444.yuv 是属性(纹理)图的重建结果,.bin是二进制压缩处理结果,占位图、几何(深度)图同理。

3 参数解释

首先注意,参数不要含反斜杠“\”,全部用正斜杠“/”,且目录名中不要含空格,比如像

mpeg-pcc-tmc2-master (2)这种解压后没有调整目录名称的情况,在使用VS时也许没问题,但在调用外部资源时如果在命令中出现这种情况,很容易出现找不到命令的错误。

然后来看刚才使用的参数

        --configurationFolder:指定配置文件位置

        --config:指定要使用的配置文件(关于编码软件的配置文件要如何使用请查看专门的博客)

        --uncompressedDataFolder:指定输入数据的文件根目录,如果不想要这个参数需要在配置序列参数时写全路径

        --frameCount:设置编码帧的数量,这里设置为1就只输入了一个.ply帧,在对patch进行划分之前会显示此次运行编码了多少个3D帧

        --colorSpaceConversionPath:指定外部调用的色域变换处理文件的位置,即HDRTools生成的可执行文件所在的位置,要包含可执行文件的文件名

        --reconstructedDataPath:重建帧的存放位置,要包含文件名

4 参考文章

MPEGGroup/mpeg-pcc-tmc2: Video codec based point cloud compression (V-PCC) test model

TMC2参考软件编译_Tracytang97的博客-CSDN博客

这篇关于使用VS运行TMC2参考软件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(