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

本文详细介绍了点云压缩的G-PCC(基于几何的点云压缩)标准,包括预处理与后处理、八叉树和Trisoup几何编解码、属性编码方法如RAHT、预测变换和提升变换。G-PCC适用于静态和动态获取点云的压缩,提供了高效的几何和属性数据处理策略。
摘要由CSDN通过智能技术生成

目录

前言

一、摘要

二、概述

三、编解码器说明

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 预处理与后处理

点云的属性和位置表示:

位置表示:X_{n} = (x_{n},y_{n},z_{n}),...,N (其中N是点云中点的个数)

属性表示:A_{n} = (A_{1n},A_{2n},...,A_{Dn}),n=1,...,N (其中D是点云中属性个数)

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

3.1.1 坐标变换与逆变换

1)编码:

原始点云空间坐标通常用浮点数表示:X_{n}^{orig}, 1,..., N

包围盒空间坐标表示:X_{n}^{int},1,...,N

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

X_{n} = (X_{n}^{orig} - T) / s

其中 (T=(t_{x},t_{y},t_{z}))为包围盒中点的位置,s为包围盒大小。X_{n}^{int},1,...,N位于包围盒 [0,2^{d})^{3}内,其中d为包围盒划分次数。

在包围盒中,已压缩和解压缩的点的坐标表示为\bar{X}_{n},n=1,...,N_{out}, 其中N_{out}是解码点云中点的个数。N_{out}N可以不相等。

2)解码:

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

\bar{X}_{n}^{orig}=s\bar{X}_{n}+T

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

如果使用Trisoup几何编解码器,s由triSoupIntToOrigScale 参数指定,T=[0,0,0],d由triSoupDepth参数指定。如果有必要,可将包围盒 [0,2^{d})^{3} 外的点 (x_{n},y_{n},z_{n}) 裁剪到 [0,2^{d}-1]内。

如果使用八叉树几何编解码器,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位整数。为了获得这些整数,将内部坐标系中的点位置舍入。设X_{n}^{int}是内部坐标系中的一个点位置。则其作为非负d位整数的表示为:

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

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

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

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

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

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 属性编码(提升变换)

待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值