使用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三个文件夹,解压后的包结构如下图
- mpeg-pcc-tmc2-master:TMC2参考软件本体,将软件参考模型解压至此文件夹下;
- ply:存放.ply文件,将下载的测试序列解压在此处,作为软件输入的测试文件,解压后的包结构会在2.1部分说明;
- 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可以看到增加了几个文件夹
根据笔者的使用,配置文件指定编解码器后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参考软件
目录
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三个文件夹,解压后的包结构如下图
- mpeg-pcc-tmc2-master:TMC2参考软件本体,将软件参考模型解压至此文件夹下;
- ply:存放.ply文件,将下载的测试序列解压在此处,作为软件输入的测试文件,解压后的包结构会在2.1部分说明;
- 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可以看到增加了几个文件夹
根据笔者的使用,配置文件指定编解码器后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博客
发布评论