jjzjj

MPEG-PCC基于几何点云压缩(G-PCC codec description v12)学习笔记

点云渣 2023-09-01 原文

目录

前言

一、摘要

二、概述

三、编解码器说明

3.1 预处理与后处理

3.1.1 坐标变换与逆变换

3.2  八叉树几何编解码

3.3 Trisoup几何编解码

3.4 预测几何编码

3.5 几何量化

3.6 几何熵编码

3.7 属性转移(重新着色)

3.8 属性编码(预测变换)

3.9 属性编码(提升变换)


前言

MPEG从2017年呼吁提出建议(CFP),并根据对此 CFP的响应,为点云压缩 (PCC) 标准化活动选择了两种不同的压缩技术:基于视频的 PCC (V-PCC) 和基于几何的 PCC (G-PCC),分别对应测试模型参考软件TMC13和TMC2。

GPCC标准文档目前最新为V12。本文将持续更新。

一、摘要

该文档详细介绍了点云压缩 G-PCC(基于几何的点云压缩)。

点云数据按照获取途径分为三类点云测试数据:静态点云、动态点云和动态获取点云。

G-PCC主要针对第一类静态点云和第三类动态获取点云进行压缩,对稀疏点云更优。V-PCC针对第二类动态点云进行压缩,对密集点云更优。

二、概述

图1描述了G-PCC编码器和解码器。首先对点云位置进行几何编码,然后对属性编码,属性编码要依靠重建后的几何信息。绿色模块通常用于1类数据(静态点云),橙色模块通常用于3类数据(动态获取点云),其他模块在类别1和类别3之间是通用的。

八叉树几何编解码器: 

对第三类数据,压缩的几何图形通常表示为从根到叶子节点为单个体素的八叉树,因此对第三类数据的编解码器被称为八叉树几何编解码器。

trisoup几何编解码器:

对第一类数据,压缩的几何图形表示为由修剪的八叉树和表面模型组成,该表面模型是每块包含1-10个三角形的三角剖分,该表面模型近似于修剪后的八叉树的叶子节点的表面(体素)。因此第一类数据的编解码器被称为trisoup几何编解码器。

对第一类数据和第三类数据的编码都是基于八叉树的编码机制。

G-PCC中有3种属性编码方法:

区域自适应分层变换编码 ( Region Adaptive Hierarchical Transform (RAHT) coding)

基于插值的分层最近邻预测 (interpolation-based hierarchical nearest-neighbour prediction (Predicting Transform))

基于插值的带有更新/提升步骤的分层最近邻预测 (interpolation-based hierarchical nearest-neighbour prediction with an update/lifting step (Lifting Transform))

三、编解码器说明

3.1 预处理与后处理

点云的属性和位置表示:

位置表示: (其中N是点云中点的个数)

属性表示: (其中D是点云中属性个数)

点云的几何结构仅包括点的位置,点云的属性仅包含点的属性。在本测试模型中,仅支持三色和反射率(否则没有属性)。点云的几何图形和属性通常在特定于应用程序的空间中表示。测试模型提供了预处理和后处理,以在这些特定于应用程序的空间( application-specific spaces)和有限分辨率的内部空间(finite-resolution internal spaces)之间进行转换,在这些内部空间中,点云被压缩。在点云进行压缩之前会进行预处理,在点云解码完成后会进行后处理。

3.1.1 坐标变换与逆变换

1)编码:

原始点云空间坐标通常用浮点数表示:

包围盒空间坐标表示:

通过坐标变换将原始点云空间坐标转换为包围盒空间坐标,坐标变换公式,

其中 为包围盒中点的位置,s为包围盒大小。位于包围盒 内,其中d为包围盒划分次数。

在包围盒中,已压缩和解压缩的点的坐标表示为, 其中是解码点云中点的个数。可以不相等。

2)解码:

原始点云坐标通过坐标变换从包围盒中解码点云坐标获得,变换公式,

可以通过齐次变换表示,公式如下,

如果使用Trisoup几何编解码器,s由triSoupIntToOrigScale 参数指定,T=[0,0,0],d由triSoupDepth参数指定。如果有必要,可将包围盒  外的点  裁剪到 内。

如果使用八叉树几何编解码器,1/s由positionQuantizationScale参数指定,T和d分别由以下公式确定,

 

其中,Ceil,Log2,Max的定义如下,

Ceil(x) = the least integer greater than or equal to x.

Log2(x) = the base-2 logarithm of x.

Max(x1,...,xN) = the maximum of x1, …, xN.

3.1.2 颜色变换与逆变换

颜色分量的属性量化与分量的颜色空间无关,因为分量是独立处理的。然而,如果需要,TM支持从RGB到YCbCr再转换(ITU Rec.709)

3.1.3 点量化和重复点去除(体素化)

点位置在内部表示为非负d位整数。为了获得这些整数,将内部坐标系中的点位置舍入。设是内部坐标系中的一个点位置。则其作为非负d位整数的表示为:

 其中Round()是将向量的分量舍入为最接近的整数的函数:

其中Floor(x)为小于或等于x的最大整数。

这样量化之后,可能存在具有相同位置的多个点,称为重复点。重复点删除过程是可选的。如果启用,将删除具有相同量化坐标的点。为了检测重复,利用STL中的set数据结构。

具有相同量化位置和不同属性的多个点将合并到单个点中。与单个点相关的属性将由第3.7节所描述的属性传递模块计算。

位置量化、删除重复点以及将属性分配给剩余点的过程称为体素化。即,体素化是将点分组为体素的过程。体素集合是单位立方体  ,其中i,j,k的值为0和之间的整数。具体地,将体素内所有点的位置量化到体素中心,并且将体素中所有点的属性组合(例如,平均)并分配给体素。如果体素包含点云的任何点,则称其被占用。

3.2  八叉树几何编解码

使用八叉树几何编码解码器,过程如下。首先,由两个端点(0,0,0)和(2^d,2^d、2^d)定义立方体轴对齐的边界框B。然后通过递归细分B来构建八叉树结构。在每个阶段,一个立方体被细分为8个子立方体。然后,通过将1位值与每个子立方体相关联来生成8位代码(称为占用代码),以指示其是否包含点(满且值为1)(空且值为0)。只有大小大于1的完整子立方体(即,非体素)被进一步细分。由于可以复制点,所以可以将多个点映射到大小为1的相同子立方体(即,相同体素)。为了处理这种情况,还对维度1的每个子立方体的点数进行算术编码。使用相同的算术编码器对放入比特流的所有信息进行编码。目前使用[1]中的实现。

3.3 Trisoup几何编解码

3.4 预测几何编码

3.5 几何量化

3.6 几何熵编码

3.7 属性转移(重新着色)

3.8 属性编码(预测变换)

参见:点云压缩 GPCC属性编码 LOD划分方式介绍_点云渣的博客-CSDN博客_点云压缩编码

3.9 属性编码(提升变换)

待续

有关MPEG-PCC基于几何点云压缩(G-PCC codec description v12)学习笔记的更多相关文章

  1. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  2. 深度学习12. CNN经典网络 VGG16 - 2

    深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG

  3. Unity Shader 学习笔记(5)Shader变体、Shader属性定义技巧、自定义材质面板 - 2

    写在之前Shader变体、Shader属性定义技巧、自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用,方便后续回顾查看,如有以偏概全、不祥不尽之处,还望海涵。1、Shader变体先看一段代码......Properties{ [KeywordEnum(on,off)]USL_USE_COL("IsUseColorMixTex?",int)=0 [Toggle(IS_RED_ON)]_IsRed("IsRed?",int)=0}......//中间省略,后续会有完整代码 #pragmamulti_c

  4. Tcl脚本入门笔记详解(一) - 2

    TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是

  5. ruby-on-rails - 无法构建 gem native 扩展 (mkmf (LoadError)) - Ubuntu 12.04 - 2

    这个问题在这里已经有了答案:Unabletoinstallgem-Failedtobuildgemnativeextension-cannotloadsuchfile--mkmf(LoadError)(17个答案)关闭9年前。嘿,我正在尝试在一台新的ubuntu机器上安装rails。我安装了ruby​​和rvm,但出现“无法构建gemnative扩展”错误。这是什么意思?$sudogeminstallrails-v3.2.9(没有sudo表示我没有权限)然后它会输出很多“获取”命令,最终会出现这个错误:Buildingnativeextensions.Thiscouldtakeawhi

  6. ruby - 使用 OpenSSL ruby​​ 从一个 .p12 文件中提取多个 key - 2

    我想知道如何从Apple.p12文件中提取key。根据我有限的理解,.p12文件是X504证书和私钥的组合。我看到我遇到的每个.p12文件都有一个X504证书和至少一个key,在某些情况下有两个key。这是因为每个.p12都有一个Apple开发人员key,有些还有一个额外的key(可能是Appleroot授权key)。我只考虑那些具有两个key的.p12文件是有效的。我的目标是区分具有一个key的.p12文件和具有两个key的.p12文件。到目前为止,我已经使用OpenSSL来检查X504文件和任何.p12的key。例如,我有这段代码可以检查目录中的所有.p12文件:Dir.glob(

  7. ruby - 为什么 openssl 在 windows 上产生错误但在 centos 上不产生错误:PKCS12_parse: mac verify failure (OpenSSL::PKCS12::PKCS12Error) - 2

    require'openssl'ifARGV.length==2pkcs12=OpenSSL::PKCS12.new(File.read(ARGV[0]),ARGV[1])ppkcs12.certificateelseputs"Usage:load_cert.rb"end运行它会在Windows上产生错误,但在Linux上不会。错误:OpenSSL::PKCS12::PKCS12Error:PKCS12_parse:macverifyfailurefrom(irb):21:ininitializefrom(irb):21:innewfrom(irb):21fromC:/Ruby192/

  8. 计算机网络笔记:TCP三次握手和四次挥手过程 - 2

    TCP是面向连接的协议,连接的建立和释放是每一次面向连接的通信中必不可少的过程。TCP连接的管理就是使连接的建立和释放都能正常地进行。三次握手TCP连接的建立—三次握手建立TCP连接①若主机A中运行了一个客户进程,当它需要主机B的服务时,就发起TCP连接请求,并在所发送的分段中用SYN=1表示连接请求,并产生一个随机发送序号x,如果连接成功,A将以x作为其发送序号的初始值:seq=x。主机B收到A的连接请求报文,就完成了第一次握手。客户端发送SYN=1表示连接请求客户端发送一个随机发送序号x,如果连接成功,A将以x作为其发送序号的初始值:seq=x②主机B如果同意建立连接,则向主机A发送确认报

  9. ruby-on-rails - macOS 10.12 Sierra 上的 bundle 错误 - 2

    Ignoringbinding_of_caller-0.7.2becauseitsextensionsarenotbuilt.Try:gempristinebinding_of_caller--version0.7.2Ignoringbyebug-9.0.6becauseitsextensionsarenotbuilt.Try:gempristinebyebug--version9.0.6Ignoringcapybara-webkit-1.11.1becauseitsextensionsarenotbuilt.Try:gempristinecapybara-webkit--versio

  10. 华为数通笔记VXLAN&BGP EVPN - 2

    VXLAN简介定义RFC定义了VLAN扩展方案VXLAN(VirtualeXtensibleLocalAreaNetwork,虚拟扩展局域网)。VXLAN采用MACinUDP(UserDatagramProtocol)封装方式,是NVO3(NetworkVirtualizationoverLayer3)中的一种网络虚拟化技术。目的随着网络技术的发展,云计算凭借其在系统利用率高、人力/管理成本低、灵活性/可扩展性强等方面表现出的优势,已经成为目前企业IT建设的新趋势。而服务器虚拟化作为云计算的核心技术之一,得到了越来越多的应用。服务器虚拟化技术的广泛部署,极大地增加了数据中心的计算密度;同时,为

随机推荐