网站地图 | Tags | 热门标准 | 最新标准 | 订阅

T/AI 128.2-2024 信息技术 时空图形数据编码 第2部分:点云

  • 名  称:T/AI 128.2-2024 信息技术 时空图形数据编码 第2部分:点云 - 下载地址1
  • 类  别:电子信息
  • 下载地址:[下载地址1]
  • 提 取 码
  • 浏览次数:3
下载帮助: 发表评论 加入收藏夹 错误报告目录
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
新闻评论(共有 0 条评论)

资料介绍

ICS 35.040
CCS L 71
团体标准
T/AI 128.2-2024
信息技术 时空图形数据编码 第2部分:点云
Information Technology Space-Time Graphical Data CodingPart 2: Point Cloud
2024 - 10 - 14发布2024 - 10 - 14实施
中关村视听产业技术创新联盟 发布

目 次
前言 .................................................................................... II
引言 ................................................................................... III
1 范围 ................................................................................... 1
2 规范性引用文件 ......................................................................... 1
3 术语和定义 ............................................................................. 1
4 缩略语 ................................................................................. 4
5 约定 ................................................................................... 4
5.1 概述 ................................................................................ 4
5.2 算术运算符 .......................................................................... 4
5.3 逻辑运算符 .......................................................................... 5
5.4 关系运算符 .......................................................................... 5
5.5 位运算符 ............................................................................ 6
5.6 赋值 ................................................................................ 6
5.7 数学函数 ............................................................................ 6
5.8 结构关系符 ......................................................................... 11
5.9 位流语法、解析过程和解码过程的描述方法 ............................................. 11
6 编码位流的结构 ........................................................................ 15
6.1 点云序列 ........................................................................... 15
6.2 点云片 ............................................................................. 15
7 位流的语法和语义 ...................................................................... 15
7.1 语法描述 ........................................................................... 15
7.2 语义描述 ........................................................................... 34
8 解析过程 .............................................................................. 46
8.1 k阶指数哥伦布码 .................................................................... 46
8.2 ue(v)和se(v)的解析过程 ............................................................. 47
8.3 ae(v)的解析过程 .................................................................... 48
9 解码过程 .............................................................................. 60
9.1 解码过程概述 ....................................................................... 60
9.2 几何信息解码过程 ................................................................... 60
9.3 属性信息解码过程 ................................................................... 74
9.4 生成重建点云 ....................................................................... 96
附录A(规范性) 伪起始码方法 ............................................................ 98
附录B(规范性) 档次和规范 .............................................................. 99
B.1 概述 ............................................................................... 99
B.2 档次 ............................................................................... 99
B.3 级别 .............................................................................. 100
B.4 语义取值范围 ...................................................................... 101
T/AI 128.2—2024
II
前 言
本文件按照GB/T 1.1—2020 《标准化工作导则 第1部分:标准化文件的结构和起草规则》的规定起草。
本文件为T/AI 128《信息技术 时空图形数据编码》的第2部分。T/AI 128已发布了以下部分:
——第2部分:点云。
本文件由数字音视频编解码技术标准工作组提出。
本文件由中关村视听产业技术创新联盟归口。
本文件起草单位:鹏城实验室、腾讯科技(深圳)有限公司、北京大学深圳研究生院、深圳市大疆创新科技有限公司、西安电子科技大学、OPPO广东移动通信有限公司、中山大学、浙江大学、北京大学、上海交通大学、电子科技大学、武汉大学、阿里巴巴集团高德软件有限公司、中兴通讯股份有限公司、维沃移动通信有限公司、西北工业大学、南京大学、广东博华超高清创新中心有限公司、中国科学院大学、咪咕文化科技有限公司、中国科学院计算技术研究所、清华大学深圳国际研究生院、深圳佑驾创新科技股份有限公司、中国移动通信集团有限公司。
本文件起草人:高文、黄铁军、李革、刘杉、郑萧桢、王静、高文(腾讯)、张伟(西电)、朱文婕、张琦、王东、梁凡、虞露、马思伟、陈悦汝、魏红莲、李璞、余越、徐异凌、邵薏婷、孙泽星、李鼎权、胡颖、赵文博、马闯、王文义、宋菲、邹春雨、陈建文、陈震中、张悦、秦泰、杨付正、安禹豪、邓江伟、许晓中、高伟、高莹、吕卓逸、万帅、王贵旗,田腾亚,鲁静芸、杨丽慧、刘晓宇、马展、赵海英、张伟民、张伟(鹏城实验室)、何堅、刘祎、黄锐珊、陈嘉枫、金佳民、何盈燊、张新峰、李琳、王苫社、冯亚楠、尹茜、徐逸群、于浩平、谢绍伟、黄成、任青山、魏志文、赵丽丽、章海华、张雨航、郭宇、侯礼志、王剑强、金欣、郑伟。
T/AI 128.2—2024
III
引 言
海量点云数据的高效存储、传输、发布、共享和标准化,是点云应用的关键。点云空间分布的无规则对点云数据的压缩提出了挑战,并且由于点云压缩标准的缺失导致各类点云设备无法实现有效的互联互通。本标准旨在面向自动驾驶、兼顾数字博物馆及虚拟现实等行业应用中的点云数据,提供高效的压缩表示,支持高精度、海量点数的点云数据高效编码,定义高效的点云解码过程和解码规范。T/AI XXX《信息技术 时空图形数据编码》标准拟由四部分组成:
——第1部分:数据传输。规定了点云/网格编码数据的文件封装格式、传输格式与信令格式。
——第2部分:点云。规定了高效的点云解码过程和解码规范。
——第3部分:质量评价。规定了点云/网格数据质量评价规范。
——第4部分:网格。规定了高效的网格解码过程和解码规范。
本文件的发布机构提请注意,声明符合本文件时,可能涉及到: 9.3.6 与《一种基于邻居权重的参数选取和传递的点云属性编码和解码的方法及设备》(专利申请号:CN201910942969.3);9.3.2 与《对三维数据点集进行编码或解码的方法和装置》(专利申请号:CN201980005064.1);9.2.2 、9.2.3 与《用于三维数据点集处理的方法和设备》(专利申请号:CN201980005156.X);9.2.2 与《三维数据点的编解码方法和装置》(专利申请号:CN201980005594.6);9.2.2 与《一种点云编码方法、点云解码方法及相关设备》(专利申请号:CN201980007958.4); 9.2.2 、9.2.3 与《一种用于点云处理、解码的方法、设备及存储介质》(专利申请号:CN201980012174.0);9.2.2 、9.2.3 与《三维数据点的编解码方法和装置》(专利申请号:CN201980012178.9);8.3.3 与《点云属性编码方法和装置及点云属性解码方法和装置》(专利申请号:CN201980039255.X);9.2.3 与《一种用于点云处理、解码的方法、设备及存储介质》(专利申请号:CN201980094938.5);7.1.2.6 、7.1.2.7 、7.1.2.8 、7.1.2.9 、7.1.2.10 与《一种数据编码、数据解码的方法、设备及存储介质》(专利申请号:CN201980094966.7);9.2.3 与《一种点云几何编码方法、解码方法、编码设备及解码设备》(专利申请号:CN202010238176.6);9.3.13 与《一种点云属性编码方法、解码方法、编码设备及解码设备》(专利申请号:CN202010967090.7);9.2.3 与《一种用于点云编码、解码的方法和设备》(专利申请号:CN202080004086.9);9.2.3 与《点云的编解码方法和装置》(专利申请号:CN202080004105.8);9.2.3 与《点云的编解码方法和装置》(专利申请号:CN202080005108.3);9.3.3 与《点云编码和解码方法、装置及计算机可读存储介质》(专利申请号:CN202080081330.1);9.3.3 与《点云编码方法、点云解码方法、装置及存储介质》(专利申请号:CN202080081334.X);9.3.14 与《点云属性编码方法、装置、解码方法、装置及相关设备》(专利申请号:CN202110264409.4);9.3.10 与《一种点云的属性熵编码和熵解码的方法及设备》(专利申请号:CN202110269745.8);9.3.5 与《点云邻居确定、点云预测、点云编码、点云解码方法及设备》(专利申请号:CN202110277920.8);7.1.2.6 、7.1.2.9 、7.2.3 、7.2.6 与《点云编码处理方法、解码处理方法及装置》(专利申请号:CN202110656048.8);7.2.3 、7.2.6 与《熵编码、解码方法及装置》(专利申请号:CN202110656066.6);9.3.14 与《点云属性编码方法、装置、解码方法、装置及相关设备》(专利申请号:CN202110656783.9);9.2.3 与《一种点云孤立点编码方法、解码方法及装置》(专利申请号:CN202110657395.2);9.3.9 与《一种点云属性预测方法、装置、终端及存储介质》(专利申请号:CN202110657405.2);7.2.8 、9.2.6 与《点云编码方法、解码方法及装置》(专利申请号:CN202110941633.2);9.3.13 与《点云属性编码方法、装置、解码方法以及装置》(专利申请号:CN202110969710.5);9.2.6 与《点云编码方法、解码方法、点云编码设备及解码设备》(专利申请号:CN202110975997.2);9.3.7 、9.3.13 与《点云预测、点云编码、点云解码方法及设备》(专
T/AI 128.2—2024
IV
利申请号:CN202110976025.5);7.2.7 、9.3.11 与《属性量化、反量化方法、装置及设备》(专利申请号:CN202111465429.4);9.3.5 、9.3.6 、9.3.9 、9.3.10 与《点云属性编码方法、点云属性解码方法及终端》(专利申请号:CN202111465642.5);9.3.5 、9.3.6 与《一种点云属性编码方法、解码方法、编码设备及解码设备》(专利申请号:CN202111482269.4);9.2.3 与《点云几何解码方法、装置、计算机可读存储介质》(专利申请号:CN202180081867.2);7.1.2.7 与《点云属性解码方法和点云属性编码方法》(专利申请号:CN202180083707.1);9.3.14 与《一种点云属性编码方法、点云属性解码方法及存储介质》(专利申请号:CN202210699502.2);9.2.6 与《基于预测树的点云几何编码、解码方法及设备》(专利申请号:CN202211596014.5);9.2.3 与《点云几何编码方法、解码方法、编码设备及解码设备》(专利申请号:CN202211604777.X);7.2.4 、7.1.4 与《点云属性编码解码方法、装置、电子设备及存储介质》(专利申请号:CN202311129407.X); 9.3.2 与《对三维数据点集进行编码或解码的方法和装置》(专利申请号:PCT/CN2019/071238);9.2.2 、9.2.3 与《用于三维数据点集处理的方法和设备》(专利申请号:PCT/CN2019/071240);9.2.2 与《三维数据点的编解码方法和装置》(专利申请号:PCT/CN2019/071494);8.3.3 与《点云属性编码方法和装置及点云属性解码方法和装置》(专利申请号:PCT/CN2019/079150);9.2.2 与《一种点云编码方法、点云解码方法及相关设备》(专利申请号:PCT/CN2019/091097);9.2.2 、9.2.3 与《三维数据点的编解码方法和装置》(专利申请号:PCT/CN2019/091351);7.1.2.6 、7.1.2.7 、7.1.2.8 、7.1.2.9 、7.1.2.10 与《一种数据编码、数据解码的方法、设备及存储介质》(专利申请号:PCT/CN2019/122209);9.2.3 与《一种用于点云处理、解码的方法、设备及存储介质》(专利申请号:PCT/CN2019/123821);9.2.2 、9.2.3 与《一种用于点云处理、解码的方法、设备及存储介质》(专利申请号:PCT/CN2019/126090);9.2.3 与《一种用于点云编码、解码的方法和设备》(专利申请号:PCT/CN2020/082593);9.2.3 与《点云的编解码方法和装置》(专利申请号:PCT/CN2020/082608);9.2.3 与《点云的编解码方法和装置》(专利申请号:PCT/CN2020/093754);9.3.3 与《点云编码方法、点云解码方法、装置及存储介质》(专利申请号:PCT/CN2020/131246);9.3.3 与《点云编码和解码方法、装置及计算机可读存储介质》(专利申请号:PCT/CN2020/134355);9.2.3 与《点云几何解码方法、装置、计算机可读存储介质》(专利申请号:PCT/CN2021/073422);7.1.2.7 与《点云属性解码方法和点云属性编码方法》(专利申请号:PCT/CN2021/080539);7.2.4 、9.3.5 、9.3.9 与《点云属性的预测方法、装置及编解码器》(专利申请号:PCT/CN2021/099872);7.1.4 、7.2.9 、9.3.6 、9.3.9 、9.3.10 、9.3.11 、9.3.12 与《解码方法、编码方法、解码器以及编码器》(专利申请号:PCT/CN2021/135529);7.1.4 、7.2.9 、8.1 、8.3.4 、9.3.10 与《解码方法、编码方法、解码器以及编码器》(专利申请号:PCT/CN2022/099635);9.2.3 与《点云编码解码方法、装置、设备及存储介质》(专利申请号:PCT/CN2022/122117);9.3.10 与《点云编解码方法、编码器、解码器、码流及存储介质》(专利申请号:PCT/CN2022/132330);8.3.3 与《编解码方法、解码器、编码器、码流及存储介质》(专利申请号:PCT/CN2022/138185);9.3.10 与《点云编解码方法、编码器、解码器、码流及存储介质》(专利申请号:PCT/CN2023/071279);7.1.2.7 、7.2.4 与《解码方法、编码方法、解码器以及编码器》(专利申请号:PCT/CN2023/077410);7.1.2.9 、7.2.6 与《编解码方法、码流、编码器、解码器以及存储介质》(专利申请号:PCT/CN2023/077451);7.1.2 与《点云解码和编码方法及设备、系统、存储介质、码流》(专利申请号:PCT/CN2023/077494);7.1.4 、7.2.9 、8.3.3 与《点云的编解码方法、码流、编码器、解码器以及存储介质》(专利申请号:PCT/CN2023/086334);7.1.4 、7.2.9 、8.3.3 与《点云的编解码方法、码流、编码器、解码器以及存储介质》(专利申请号:PCT/CN2023/086337);7.1.2.6 与《编解码方法、码流、编码器、解码器以及存储介质》(专利申请号:PCT/CN2023/113792);7.2.4 与《编解码方法、编解码器以及存储介质》(专利申请号:PCT/CN2023/113831);9.2.5 与《点云编解码方法、码流、编码器、解码器以及存储介质》(专利申请号:PCT/CN2023/113835);9.3.8 与《编解码方法、编解码器以及存储介质》
T/AI 128.2—2024
V
(专利申请号:PCT/CN2023/113839);9.3.5 、9.3.6 与《编解码方法、编解码器以及存储介质》(专利申请号:PCT/CN2023/113845);7.1.2.7 、7.1.4 、7.2.4 与《编解码方法、码流、编码器、解码器以及存储介质》(专利申请号:PCT/CN2023/114533)。
本文件的发布机构对于该专利的真实性、有效性和范围无任何立场。
该专利持有人已向本文件的发布机构承诺,他愿意同任何申请人在合理且无歧视的条款和条件下,就专利授权许可进行谈判。该专利持有人的声明已在本文件的发布机构备案,相关信息可以通过以下联系方式获得: 专利持有人:鹏城实验室,地址:广东省深圳市南山区兴科一街2号;腾讯科技(深圳)有限公司,地址:深圳市南山区海天二路腾讯滨海大厦;北京大学深圳研究生院,地址:广东省深圳市南山区西丽深圳大学城北大园区H栋208室;深圳市大疆创新科技有限公司。地址:深圳市南山区西丽街道西丽社区仙元路53号大疆天空之城T2-17楼;OPPO广东移动通信有限公司,地址:广东省深圳市南山区科苑南路2666号中国华润大厦39楼;维沃移动通信有限公司,地址:广东省东莞市长安镇维沃路1号。
联 系 人:黄铁军(数字音视频编解码技术标准工作组秘书长)
通讯地址:北京大学理科2号楼2641室
邮政编码:100871
电子邮件:tjhuang@pku.edu.cn
电 话:+8610-62756172
传 真:+8610-62751638
网 址:http://www.avs.org.cn
请注意除上述专利外,本文件的某些内容仍可能涉及专利。本文件的发布机构不承担识别这些专利的责任。

T/AI 128.2—2024
1
信息技术 时空图形数据编码 第2部分:点云
1 范围
本文件规定了点云编码位流的结构、位流的语法和语义、解析过程及解码过程。
本文件适用于自主导航系统、实时巡检系统、地理信息系统、数字文化遗产、自由视点广播、三维沉浸通信和三维沉浸交互等应用。
2 规范性引用文件
下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
IEEE Std 754TM-2019 IEEE Standard for Floating-Point Arithmetic
ISO/IEC 9899:2018 Information technology — Programming languages — C
3 术语和定义
下列术语和定义适用于本文件。
3.1
八叉树 octree
树中的任一节点包含零个或者至多八个子节点,用于表示点云的几何位置。
3.2
保留 reserved
定义了一些特定语法元素值,这些值用于将来对本文件的扩展。
这些值不应出现在符合本文件的位流中。
3.3
包围盒 bounding box
轴对齐方向包含一组点的长方体。
3.4
残差 residual
样本或数据元素的重建值与其预测值之差。
3.5
档次 profile
本文件规定的语法、语义及算法的子集。
3.6
笛卡尔坐标 Cartesian coordinate
有限精度和动态范围的三个标量(x, y, z),其中动态范围的三个标量x、y和z为三个非负整数,用于表示一个点在笛卡尔直角坐标系下的位置。
3.7
点 point
点云的基本元素,其位置表示为三维空间笛卡尔坐标(x, y, z),并包含零个或多个属性,比如颜
T/AI 128.2—2024
2
色和反射率等。
3.8
点云 point cloud
一组无序的点的集合,表达三维物体或场景的空间结构及表面属性。
3.9
点云帧 point cloud frame
某个时刻的点云。
3.10
二元符号 bin
值的二进制化表示的二进制符号,包括0和1。
3.11
二元符号串 bin string
有限位二元符号组成的有序序列,最左边符号是最高有效位,最右边符号是最低有效位。
3.12
反变换 inverse transform
将变换系数矩阵转换成空域样值矩阵的过程。
3.13
反量化 dequantization
对量化值乘以量化步长缩放后得到乘积值的过程。
3.14
反射率 reflectance
表示点对光的反射强度的一维信号。
3.15
父节点 parent node
树中当前节点靠近根节点方向的上一层节点。一个父节点包含多个节点。
3.16
根节点 root node
树中没有父节点的节点。
3.17
级别 level
在某一档次下对语法元素和语法元素参数值的限定集合。
3.18
几何 geometry
点云中的点的位置,表示为三维空间中的笛卡尔坐标。
3.19
节点 node
树中的元素,表示包含整个点云的空间或者一个子空间。
3.20
解析过程 parse
由位流获得语法元素的过程。
3.21
禁止 forbidden
定义了一些特定语法元素值。禁止某些值的目的通常是为了避免在位流中出现伪起始码。
3.22
亮度 luma
T/AI 128.2—2024
3
Y表示亮度信号的样值矩阵或单个样值。
3.23
莫顿码 Morton code
根据莫顿序将三个d-bit的非负整数的位交错放置后形成的3d-bit的非负整数。
3.24
片 slice
一系列的语法元素,用于表示一部分或者整个点云。
3.25
色度 chroma
用于表示亮度和红色、蓝色的差值的信号。
3.26
属性 attribute
点云中的点对应的标量特征,比如反射率,或颜色,或矢量特征。
3.27
填充位 stuffing bits
编码时插入位流中的位串,在解码时被丢弃。
3.28
位串 bit string
有限个二进制位的有序序列,其最左边位是最高有效位(MSB),最右边位是最低有效位(LSB)。
3.29
位流 bitstream
编码点云所形成的二进制数据流。
3.30
希尔伯特码 Hilbert code
根据希尔伯特序将三个d-bit的非负整数的位交错放置后形成的3d-bit的非负整数。
3.31
颜色 color
点对应的三维RGB或YUV信号。
3.32
预测 prediction
利用先前已解码的样值或数据元素的组合得到估计值的过程。
3.33
预测补偿 prediction compensation
计算由语法元素解码得到的样本残差与其对应的预测值之和的过程。
3.34
预测值 prediction value
在样值或数据元素的解码过程中,经过预测得到的估计值。
3.35
语法元素 syntax element
位流中的数据单元解析后的结果。
3.36
占位码 occupancy code
用于表示一个节点的子节点占用情况的一个字节,其中每个位的值对应该节点的一个子节点的占用情况。
3.37
T/AI 128.2—2024
4
字节 byte
8位的位串。
3.38
子节点 child node
树中当前节点的远离根节点方向的下一层节点。一个当前节点包含至多8个子节点。
3.39
字节对齐 byte alignment
从位流的第一个二进制位开始,某二进制位的位置是8的整数倍。
4 缩略语
下列缩略语适用于本文件。
AEC 高级熵编码(advanced entropy code)
APS 属性参数集(attribute parameter set)
ASH 属性片头(attribute slice header)
attr 属性(attribute)
ctx 二元符号模型(context)
geom 几何(geometry)
GPS 几何参数集(geometry parameter set)
GSH 几何片头(geometry slice header)
idx 索引(index)
LCU 最大编码单元(largest coding unit)
LSB 最低有效位(least significant bit)
MSB 最高有效位(most significant bit)
QP 量化参数(quantization parameter)
QTBT 四叉树和二叉树(quadtree and binary tree)
refl 反射率(reflectance)
SPS 序列参数集(sequence parameter set)
5 约定
5.1 概述
本文件中使用的数学运算符和优先级参照C语言的约定, 符合ISO/IEC 9899:2018中的规定。但对整型除法和算术移位操作进行了特定定义。除特别说明外,约定编号和计数从0开始。
5.2 算术运算符
算术运算符定义见表1。
T/AI 128.2—2024
5

1 算术运算符定义
算术运算符
定义
+
加法运算
-
减法运算(作为双参数运算符)或取反(作为单参数前缀运算符)
*
乘法运算
ab
幂运算,表示a的b次幂。也可表示上标
a^b
幂运算,表示a的b次幂
/
整除运算,沿向0的取值方向截断。例如,7/4和-7/-4截断至1,-7/4和7/-4截断至-1
ab
除法运算,不做截断或四舍五入
Σf(i)bi=a
自变量i取由a到b(含b)的所有整数值时,函数f(i)的累加和
Πf(i)bi=a
自变量i取由a到b(含b)的所有整数值时,函数f(i)的累乘积
a % b
模运算,a除以b的余数,其中a与b都是正整数
⌈.⌉
上取整
⌊.⌋
下取整
|.|
取绝对值
5.3 逻辑运算符
逻辑运算符定义见表2。

2 逻辑运算符定义
逻辑运算符
定义
a && b
a和b之间的与逻辑运算
a || b
a和b之间的或逻辑运算
!
逻辑非运算
a ? b : c
如果a为真或不为0,则使用b进行赋值;否则,使用c进行赋值
5.4 关系运算符
关系运算符定义见表3。

3 关系运算符定义
关系运算符
定义
>
大于
>=
大于或等于
<
小于
<=
小于或等于
==
等于
!=
不等于
T/AI 128.2—2024
6
5.5 位运算符
位运算符定义见表4。

4 位运算符定义
位运算符
定义
&
与运算
|
或运算
a >> b
将a以2的补码整数表示的形式向右移b位。仅当b取正数时定义此运算
a << b
将a以2的补码整数表示的形式向左移b位。仅当b取正数时定义此运算
5.6 赋值
赋值运算定义见表5。

5 赋值运算定义
赋值运算
定义
=
赋值运算符
++
递增,x++相当于x = x + 1。当用于数组下标时,在递增运算前先求变量值
--
递减,x--相当于x = x – 1。当用于数组下标时,在递减运算前先求变量值
+=
自加指定值,例如x += 3相当于x = x + 3,x += (-3)相当于x = x + (-3)
-=
自减指定值,例如x -= 3相当于x = x - 3,,x -= (-3)相当于x = x - (-3)
<<=
算术左移指定的量,即x <<= 1等于x = x<< 1
|=
按位或赋值运算符,对左侧变量和右侧表达式执行按位或操作,然后将结果赋值给左侧的变量。例如a |= b 的操作等价于 a = a | b
5.7 数学函数
5.7.1 通用函数
数学函数定义见式(1)~式(5)。
Clip(i,j,x)={i ;xjx ;其他 ................................. (1)
式中:
x ——自变量x;
i ——下界;
j ——上界。
Max(x,y)={x ;x≥yy ;x式中:
x ——自变量x;
y ——自变量y。
Min(x,y)={x ;x≤yy ;x>y .................................. (3)
T/AI 128.2—2024
7
式中:
x ——自变量x;
y ——自变量y。
Round(x)=⌊x+0.5⌋ .................................. (4)
式中:
x ——自变量x。
Sign(x)={1 ;x>00 ;x=0−1 ;x<0 .................................. (5)
式中:
x ——自变量x。
5.7.2 三维笛卡尔坐标到莫顿码的转换
输入:三维笛卡尔坐标(X,Y,Z),其中X、Y和Z表示成n-bit的二进制数如下:
X = xn-1xn-2…x1x0
Y = yn-1yn-2…y1y0
Z = zn-1zn-2…z1z0
输出:对应的三维莫顿码M的二进制表示即为:
M = xn-1yn-1zn-1xn-2yn-2zn-2…x1y1z1x0y0z0
下表6举例展示了该转换过程:

6 三维笛卡尔坐标到莫顿码的转换
二进制表示
整数表示
X
Y
Z
M
M
0 0
0 0
0 0
0 0 0 0 0 0
0
0 0
0 0
0 1
0 0 0 0 0 1
1
1 0
0 1
1 0
1 0 1 0 1 0
42
1 0
0 1
1 1
1 0 1 0 1 1
43
1 1
1 0
0 0
1 1 0 1 0 0
52
1 1
1 0
0 1
1 1 0 1 0 1
53
0 1
1 1
1 0
0 1 1 1 1 0
30
0 1
1 1
1 1
0 1 1 1 1 1
31
xn-1…x0
yn-1…y0
zn-1…z0
xn-1yn-1zn-1…x0y0z0
...
5.7.3 三维笛卡尔坐标到三维希尔伯特码的转换
输入:三维笛卡尔坐标(X,Y,Z),其中X、Y和Z表示成n-bit的二进制数如下:
X = xn-1xn-2…x1x0
Y = yn-1yn-2…y1y0
Z = zn-1zn-2…z1z0
输出:对应的三维希尔伯特码。
三维希尔伯特码hilbertCode通过下述方法得到:
T/AI 128.2—2024
8
state = 4
hilbertCode = 0
hilbertCode <<= 6
pos = ((X & 0xC0000) >> 14) | ((Y & 0xC0000) >> 16) | ((Z & 0xC0000) >> 18)
hilbertCode += HilbertTable[state][pos][1]
state = HilbertTable[state][pos][0]
hilbertCode <<= 6
pos = ((X & 0x30000) >> 12) | ((Y & 0x30000) >> 14) | ((Z & 0x30000) >> 16)
hilbertCode += HilbertTable[state][pos][1]
state = HilbertTable[state][pos][0]
hilbertCode <<= 6
pos = ((X & 0xC000) >> 10) | ((Y & 0xC000) >> 12) | ((Z & 0xC000) >> 14)
hilbertCode += HilbertTable[state][pos][1]
state = HilbertTable[state][pos][0]
hilbertCode <<= 6
pos = ((X & 0x3000) >> 8) | ((Y & 0x3000) >> 10) | ((Z & 0x3000) >> 12)
hilbertCode += HilbertTable[state][pos][1]
state = HilbertTable[state][pos][0]
hilbertCode <<= 6
pos = ((X & 0xC00) >> 6) | ((Y & 0xC00) >> 8) | ((Z & 0xC00) >> 10)
hilbertCode += HilbertTable[state][pos][1]
state = HilbertTable[state][pos][0]
hilbertCode <<= 6
pos = ((X & 0x300) >> 4) | ((Y & 0x300) >> 6) | ((Z & 0x300) >> 8)
hilbertCode += HilbertTable[state][pos][1]
state = HilbertTable[state][pos][0]
hilbertCode <<= 6
pos = ((X & 0xC0) >> 2) | ((Y & 0xC0) >> 4) | ((Z & 0xC0) >> 6)
hilbertCode += HilbertTable[state][pos][1]
state = HilbertTable[state][pos][0]
hilbertCode <<= 6
pos = (X & 0x30) | ((Y & 0x30) >> 2) | ((Z & 0x30) >> 4)
hilbertCode += HilbertTable[state][pos][1]
state = HilbertTable[state][pos][0]
hilbertCode <<= 6
T/AI 128.2—2024
9
pos = ((X & 0xC) << 2) | (Y & 0xC) | ((Z & 0xC) >> 2)
hilbertCode += HilbertTable[state][pos][1]
state = HilbertTable[state][pos][0]
hilbertCode <<= 6
pos = ((X & 0x3) << 4) | ((Y & 0x3) << 2) | (Z & 0x3)
hilbertCode += HilbertTable[state][pos][1]
其中三维HilbertTable查询如下:
HilbertTable[12][64][2] = {
{{4,0}, {10,3}, {6,60}, {2,63}, {9,7}, {10,4}, {6,59}, {8,56},
{0,8}, {5,9}, {1,54}, {0,55}, {8,11}, {5,10}, {1,53}, {9,52},
{0,1}, {0,2}, {0,61}, {0,62}, {7,6}, {7,5}, {7,58}, {7,57},
{11,15}, {6,14}, {10,49}, {11,48}, {8,12}, {6,13}, {10,50}, {9,51},
{9,26}, {8,29}, {9,34}, {8,37}, {0,27}, {0,28}, {0,35}, {0,36},
{0,16}, {5,17}, {1,46}, {0,47}, {8,19}, {5,18}, {1,45}, {9,44},
{9,25}, {8,30}, {9,33}, {8,38}, {6,24}, {10,31}, {6,32}, {10,39},
{11,23}, {6,22}, {10,41}, {11,40}, {8,20}, {6,21}, {10,42}, {9,43}},
{{11,38}, {11,37}, {1,62}, {0,63}, {3,33}, {3,34}, {1,61}, {9,60},
{11,30}, {11,29}, {1,2}, {4,3}, {3,25}, {3,26}, {1,1}, {7,0},
{4,39}, {1,36}, {10,57}, {11,56}, {9,32}, {1,35}, {10,58}, {9,59},
{4,31}, {1,28}, {10,5}, {4,4}, {9,24}, {1,27}, {10,6}, {3,7},
{5,40}, {1,47}, {5,48}, {1,55}, {4,41}, {2,46}, {4,49}, {2,54},
{9,22}, {8,17}, {9,14}, {8,9}, {5,23}, {1,16}, {5,15}, {1,8},
{3,43}, {3,44}, {3,51}, {3,52}, {4,42}, {2,45}, {4,50}, {2,53},
{9,21}, {8,18}, {9,13}, {8,10}, {11,20}, {11,19}, {11,12}, {11,11}},
{{6,52}, {2,55}, {5,56}, {1,63}, {6,51}, {8,48}, {4,57}, {2,62},
{6,44}, {2,47}, {2,36}, {5,37}, {6,43}, {8,40}, {7,39}, {5,38},
{0,53}, {0,54}, {3,59}, {3,60}, {7,50}, {7,49}, {4,58}, {2,61},
{0,45}, {0,46}, {2,35}, {6,34}, {7,42}, {7,41}, {3,32}, {6,33},
{11,10}, {11,9}, {7,4}, {7,3}, {3,13}, {3,14}, {4,5}, {2,2},
{11,18}, {11,17}, {2,28}, {5,29}, {3,21}, {3,22}, {7,31}, {5,30},
{5,11}, {2,8}, {6,7}, {10,0}, {5,12}, {8,15}, {4,6}, {2,1},
{5,19}, {2,16}, {2,27}, {6,26}, {5,20}, {8,23}, {3,24}, {6,25}},
{{2,20}, {5,21}, {1,42}, {4,43}, {7,23}, {5,22}, {1,41}, {7,40},
{5,24}, {1,31}, {5,32}, {1,39}, {4,25}, {2,30}, {4,33}, {2,38},
{2,19}, {6,18}, {10,45}, {4,44}, {3,16}, {6,17}, {10,46}, {3,47},
{3,27}, {3,28}, {3,35}, {3,36}, {4,26}, {2,29}, {4,34}, {2,37},
{2,12}, {5,13}, {1,50}, {4,51}, {7,15}, {5,14}, {1,49}, {7,48},
{11,6}, {11,5}, {11,58}, {11,57}, {3,1}, {3,2}, {3,61}, {3,62},
{2,11}, {6,10}, {10,53}, {4,52}, {3,8}, {6,9}, {10,54}, {3,55},
{4,7}, {1,4}, {5,59}, {2,56}, {9,0}, {1,3}, {5,60}, {8,63}},
{{5,0}, {1,7}, {4,8}, {10,11}, {4,1}, {2,6}, {9,15}, {10,12},
T/AI 128.2—2024
10
{1,26}, {4,27}, {4,16}, {10,19}, {1,25}, {7,24}, {9,23}, {10,20},
{3,3}, {3,4}, {0,9}, {0,10}, {4,2}, {2,5}, {7,14}, {7,13},
{10,29}, {4,28}, {0,17}, {0,18}, {10,30}, {3,31}, {7,22}, {7,21},
{7,60}, {7,59}, {11,54}, {11,53}, {4,61}, {2,58}, {3,49}, {3,50},
{1,34}, {4,35}, {11,46}, {11,45}, {1,33}, {7,32}, {3,41}, {3,42},
{6,63}, {10,56}, {4,55}, {1,52}, {4,62}, {2,57}, {9,48}, {1,51},
{10,37}, {4,36}, {4,47}, {1,44}, {10,38}, {3,39}, {9,40}, {1,43}},
{{0,0}, {5,1}, {11,26}, {11,25}, {8,3}, {5,2}, {3,29}, {3,30},
{2,60}, {5,61}, {11,34}, {11,33}, {7,63}, {5,62}, {3,37}, {3,38},
{11,7}, {6,6}, {5,27}, {2,24}, {8,4}, {6,5}, {5,28}, {8,31},
{2,59}, {6,58}, {5,35}, {2,32}, {3,56}, {6,57}, {5,36}, {8,39},
{5,8}, {1,15}, {5,16}, {1,23}, {4,9}, {2,14}, {4,17}, {2,22},
{9,54}, {8,49}, {9,46}, {8,41}, {5,55}, {1,48}, {5,47}, {1,40},
{3,11}, {3,12}, {3,19}, {3,20}, {4,10}, {2,13}, {4,18}, {2,21},
{9,53}, {8,50}, {9,45}, {8,42}, {11,52}, {11,51}, {11,44}, {11,43}},
{{7,52}, {7,51}, {7,44}, {7,43}, {4,53}, {2,50}, {4,45}, {2,42},
{9,10}, {8,13}, {9,18}, {8,21}, {0,11}, {0,12}, {0,19}, {0,20},
{6,55}, {10,48}, {6,47}, {10,40}, {4,54}, {2,49}, {4,46}, {2,41},
{9,9}, {8,14}, {9,17}, {8,22}, {6,8}, {10,15}, {6,16}, {10,23},
{0,56}, {5,57}, {6,36}, {2,39}, {8,59}, {5,58}, {6,35}, {8,32},
{2,4}, {5,5}, {6,28}, {2,31}, {7,7}, {5,6}, {6,27}, {8,24},
{11,63}, {6,62}, {0,37}, {0,38}, {8,60}, {6,61}, {7,34}, {7,33},
{2,3}, {6,2}, {0,29}, {0,30}, {3,0}, {6,1}, {7,26}, {7,25}},
{{2,52}, {5,53}, {1,10}, {4,11}, {7,55}, {5,54}, {1,9}, {7,8},
{4,56}, {10,59}, {6,4}, {2,7}, {9,63}, {10,60}, {6,3}, {8,0},
{2,51}, {6,50}, {10,13}, {4,12}, {3,48}, {6,49}, {10,14}, {3,15},
{0,57}, {0,58}, {0,5}, {0,6}, {7,62}, {7,61}, {7,2}, {7,1},
{2,44}, {5,45}, {1,18}, {4,19}, {7,47}, {5,46}, {1,17}, {7,16},
{7,36}, {7,35}, {7,28}, {7,27}, {4,37}, {2,34}, {4,29}, {2,26},
{2,43}, {6,42}, {10,21}, {4,20}, {3,40}, {6,41}, {10,22}, {3,23},
{6,39}, {10,32}, {6,31}, {10,24}, {4,38}, {2,33}, {4,30}, {2,25}},
{{6,20}, {2,23}, {0,24}, {5,25}, {6,19}, {8,16}, {8,27}, {5,26},
{6,12}, {2,15}, {9,6}, {8,1}, {6,11}, {8,8}, {5,7}, {1,0},
{0,21}, {0,22}, {11,31}, {6,30}, {7,18}, {7,17}, {8,28}, {6,29},
{0,13}, {0,14}, {9,5}, {8,2}, {7,10}, {7,9}, {11,4}, {11,3},
{11,42}, {11,41}, {0,32}, {5,33}, {3,45}, {3,46}, {8,35}, {5,34},
{11,50}, {11,49}, {9,58}, {8,61}, {3,53}, {3,54}, {0,59}, {0,60},
{5,43}, {2,40}, {11,39}, {6,38}, {5,44}, {8,47}, {8,36}, {6,37},
{5,51}, {2,48}, {9,57}, {8,62}, {5,52}, {8,55}, {6,56}, {10,63}},
{{1,38}, {0,39}, {4,40}, {10,43}, {1,37}, {9,36}, {9,47}, {10,44},
{9,62}, {8,57}, {4,48}, {10,51}, {5,63}, {1,56}, {9,55}, {10,52},
{10,33}, {11,32}, {0,41}, {0,42}, {10,34}, {9,35}, {7,46}, {7,45},
{9,61}, {8,58}, {0,49}, {0,50}, {11,60}, {11,59}, {7,54}, {7,53},
T/AI 128.2—2024
11
{1,30}, {0,31}, {11,22}, {11,21}, {1,29}, {9,28}, {3,17}, {3,18},
{9,2}, {8,5}, {11,14}, {11,13}, {0,3}, {0,4}, {3,9}, {3,10},
{10,25}, {11,24}, {4,23}, {1,20}, {10,26}, {9,27}, {9,16}, {1,19},
{9,1}, {8,6}, {4,15}, {1,12}, {6,0}, {10,7}, {9,8}, {1,11}},
{{7,20}, {7,19}, {7,12}, {7,11}, {4,21}, {2,18}, {4,13}, {2,10},
{9,42}, {8,45}, {9,50}, {8,53}, {0,43}, {0,44}, {0,51}, {0,52},
{6,23}, {10,16}, {6,15}, {10,8}, {4,22}, {2,17}, {4,14}, {2,9},
{9,41}, {8,46}, {9,49}, {8,54}, {6,40}, {10,47}, {6,48}, {10,55},
{4,24}, {10,27}, {1,6}, {0,7}, {9,31}, {10,28}, {1,5}, {9,4},
{4,32}, {10,35}, {1,58}, {4,59}, {9,39}, {10,36}, {1,57}, {7,56},
{0,25}, {0,26}, {10,1}, {11,0}, {7,30}, {7,29}, {10,2}, {9,3},
{0,33}, {0,34}, {10,61}, {4,60}, {7,38}, {7,37}, {10,62}, {3,63}},
{{9,38}, {8,33}, {9,30}, {8,25}, {5,39}, {1,32}, {5,31}, {1,24},
{0,40}, {5,41}, {1,22}, {0,23}, {8,43}, {5,42}, {1,21}, {9,20},
{9,37}, {8,34}, {9,29}, {8,26}, {11,36}, {11,35}, {11,28}, {11,27},
{11,47}, {6,46}, {10,17}, {11,16}, {8,44}, {6,45}, {10,18}, {9,19},
{11,62}, {11,61}, {11,2}, {11,1}, {3,57}, {3,58}, {3,5}, {3,6},
{0,48}, {5,49}, {1,14}, {0,15}, {8,51}, {5,50}, {1,13}, {9,12},
{4,63}, {1,60}, {5,3}, {2,0}, {9,56}, {1,59}, {5,4}, {8,7},
{11,55}, {6,54}, {10,9}, {11,8}, {8,52}, {6,53}, {10,10}, {9,11}}}
5.8 结构关系符
结构关系符定义见表7。

7 结构关系符
结构关系符
定义
->
例如:a->b表示a是一个结构,b是a的一个成员变量
()
取值范围区间,例如:x的取值范围是(a,b),表示a[]
取值范围区间,例如:x的取值范围是[a,b],表示a<=x<=b
5.9 位流语法、解析过程和解码过程的描述方法
5.9.1 位流语法的描述方法
位流语法描述方法类似C语言。位流的语法元素使用粗体字表示。每个语法元素通过名字(用下划线分割的英文字母组,所有字母都是小写)、语法和语义来描述。语法表和正文中语法元素的值用常规字体表示。
某些情况下,可在语法表中应用从语法元素导出的其他变量值,这样的变量在语法表或正文中用不带下划线的小写字母和大写字母混合命名。大写字母开头的变量用于解码当前以及相关的语法结构,也可用于解码后续的语法结构。小写字母开头的变量只在它们所在的小节内使用。
语法元素值的助记符和变量值的助记符与它们的值之间的关系在正文中说明。在某些情况下,二者等同使用。助记符由一个或多个使用下划线分隔的字母组表示,每个字母组以大写字母开始,也可包括
T/AI 128.2—2024
12
多个大写字母。
位串的长度是4的整数倍时,可使用十六进制符号表示。十六进制的前缀是‘0x’,例如‘0x1a’表示位串‘0001 1010’。
条件语句中0表示FALSE,非0表示TRUE。
语法表描述了所有符合本文件的位流语法的超集,附加的语法限制在相关条中说明。
表8给出了描述语法的伪代码例子。当语法元素出现时,表示从位流中读一个数据单元。

8 语法描述的伪代码
伪代码
描述符
/*语句是一个语法元素的描述符,或者说明语法元素的存在、类型和数值,下面给出两个例子。*/
syntax_element
ue(v)
conditioning statement
/*花括号括起来的语句组是复合语句,在功能上视作单个语句。*/
{
statement

}
/*“while”语句测试condition是否为TRUE,如果为TRUE,则重复执行循环体,直到condition不为TRUE。*/
while (condition)
statement
/*“do … while”语句先执行循环体一次,然后测试condition是否为TRUE,如果为TRUE,则重复执行循环体,直到condition不为TRUE。*/
do
statement
while (condition)
/*“if … else”语句首先测试condition,如果为TRUE,则执行primary语句,否则执行alternative语句。如果alternative语句不需要执行,结构的“else”部分和相关的alternative语句可忽略。*/
if (condition)
primary statement
else
alternative statement
/*“for”语句首先执行initial语句,然后测试condition,如果condition为TRUE,则重复执行primary语句和subsequent语句直到condition不为TRUE。*/
T/AI 128.2—2024
13
表8 语法描述的伪代码(续)
伪代码
描述符
for (initial statement; condition; subsequent statement)
primary statement
/*“break”语句用于do-while、while和for循环体中,可使当前循环体立即终止循环。*/
break
解析过程和解码过程用文字和类似C语言的伪代码描述。
5.9.2 函数
5.9.2.1 概述
以下函数用于语法描述。假定解码器中存在一个位流指针,这个指针指向位流中要读取的下一个二进制位的位置。函数由函数名及左右圆括号内的参数构成。函数也可没有参数。
5.9.2.2 byte_aligned( )
如果位流的当前位置是字节对齐的,返回TRUE,否则返回FALSE。
5.9.2.3 next_bits(n)
返回位流的随后n个二进制位,MSB在前,不改变位流指针。如果剩余的二进制位少于n,则返回0。
5.9.2.4 byte_aligned_next_bits(n)
如果位流当前位置不是字节对齐的,返回位流当前位置的下一个字节开始的n个二进制位,MSB在前,不改变位流指针;如果位流当前位置是字节对齐的,返回位流随后的n个二进制位,MSB在前,不改变位流指针。如果剩余的二进制位少于n,则返回0。
5.9.2.5 next_start_code( )
在位流中寻找下一个起始码,将位流指针指向起始码前缀的第一个二进制位。函数定义见表9。

9 next_start_code函数的定义
函数定义
描述符
next_start_code( ) {
stuffing_bit
1
while (!byte_aligned( ))
stuffing_bit
0
while (next_bits(24) != 0000 0000 0000 0000 0000 0001)
stuffing_byte
00000000
}
stuffing_byte应出现图像头之后和第一个片起始码之前。
T/AI 128.2—2024
14
5.9.2.6 is_stuffing_pattern( )
在位流中检测当前字节中剩下的位或在字节对齐时,判断下一个字节是否是片结尾填充的二进制位,如果是,则返回TRUE,否则返回FALSE。此函数不修改位流指针。函数定义见表10。

10 is_stuffing_pattern函数的定义
函数定义
描述符
is_stuffing_pattern( ) {
if (next_bits(8-n) == (1<<(7-n))) /* n=0~7,为位流指针在当前字节的位置偏移,n为0时位流指针指向当前字节最高位 */
return TRUE
else
return FALSE
}
5.9.2.7 read_bits(n)
返回位流的随后n个二进制位,MSB在前,同时位流指针前移n个二进制位。如果n等于0,则返回0,且位流指针不前移。
函数也用于解析过程和解码过程的描述。
5.9.3 描述符
描述符表示不同语法元素的解析过程,见表11。

11 描述符
描述符
说明
ae(v)
高级熵编码的语法元素。解析过程在8.3 中定义。
b(8)
一个任意取值的字节。解析过程由函数read_bits(8)的返回值规定。
f(n)
取特定值的连续n个二进制位。解析过程由函数read_bits(n)的返回值规定。
i(n)
n位整数。在语法表中,如果n是“v”,其位数由其他语法元素值确定。解析过程由函数read_bits(n)的返回值规定,该返回值用高位在前的2的补码表示。
r(n)
连续n个0。解析过程由函数read_bits(n)的返回值规定。
se(v)
有符号整数语法元素,用指数哥伦布码编码。解析过程在8.2 中定义。
u(n)
n位无符号整数。在语法表中,如果n是“v”,其位数由其他语法元素值确定。解析过程由函数read_bits(n)的返回值规定,该返回值用高位在前的二进制表示。
ue(v)
无符号整数语法元素,用指数哥伦布码编码。解析过程在8.2 中定义。
5.9.4 保留、禁止和标记位
本文件定义的位流语法中,某些语法元素的值被标注为“保留”(reserved)或“禁止”(forbidden)。
“保留”定义了一些特定语法元素值。这些值用于将来对本文件的扩展,且不应出现在符合本文件的位流中。
T/AI 128.2—2024
15
“禁止”定义了一些特定语法元素值。这些值不应出现在符合本文件的位流中。
“标记位”(marker_bit)指该位的值应为1。
位流中的“保留位”(reserved_bits)表明保留了一些语法单元用于将来对本文件的扩展,解码处理应忽略这些位。“保留位”不应出现从任意字节对齐位置开始的21个以上连续的0。
6 编码位流的结构
6.1 点云序列
点云序列是位流的最高层语法结构。点云序列由序列头、几何头和属性头(若存在)开始,后面跟着一个或多个点云帧。每个点云帧应包含帧头和一个或多个点云片数据。
6.2 点云片
点云片由几何片头、几何数据、属性片头和属性数据组成,在本标准中片及点云片具有相同的含义。
7 位流的语法和语义
7.1 语法描述
7.1.1 起始码
起始码是一组特定的位串。在符合本文件的位流中,除起始码外的任何情况下都不应出现这些位串。
起始码由起始码前缀和起始码值构成。起始码前缀是位串‘0000 0000 0000 0000 0000 0001’。所有的起始码都应字节对齐。
起始码值是一个8位整数,用来表示起始码的类型,见表12。

12 起始码值
起始码类型
起始码值(十六进制)
点云序列起始码(sequence_start_code)
00
点云序列结束码(sequence_end_code)
01
几何序列起始码(geometry_start_code)
02
属性序列起始码(attribute_start_code)
03
点云帧起始码(frame_start_code)
04
用户数据起始码(user_data_start_code)
05
点云几何片头起始码(geometry_slice_header_start_code)
06
点云属性片头起始码(attribute_slice_header_start_code)
07,08
几何数据起始码(geometry_slice_payload_start_code)
09
颜色数据起始码(color_slice_payload_start_code)
0A
反射率数据起始码(refl_slice_payload_start_code)
0B
保留
0C~FF
其中,attribute_slice_header_start_code = 07表示颜色对应的点云属性片头,attribute_slice_header_start_code = 08表示反射率对应的点云属性片头。
部分语法元素取特定值时可得到与起始码前缀相同的位串,称为伪起始码。符合本文件的编码器和
16
点云序列定义见表13
T/AI 128.2—2024
解码器应使用附录A 定义的方法处理伪起始码问题。
7.1 .2 点云序列及片
7.1.2.1 点云序列


13 点云序列定义
伪代码
描述符
PCC_sequence( ) {
do {
sequence_header( )
geometry_header( )
if (attribute_present_flag) {
attribute_header( )
}
if (next_bits(32) == user_data_start_code)
userdata_bitstream( )
do {
frame_header( )
if (next_bits(32) == user_data_start_code)
userdata_bitstream( )
do {
geometry_slice( )
if (attribute_present_flag) {
do {
attribute_slice( )
} while (next_bits(32) == attribute_slice_header_start_code)
}
} while (next_bits(32) == geometry_slice_header_start_code)
} while (next_bits(32) == frame_start_code)
} while (next_bits(32) != sequence_end_code)
}
7.1.2.2 几何片
几何片定义见表14。
T/AI 128.2—2024
17

14 几何片定义
伪代码
描述符
geometry_slice( ) {
geometry_slice_header( )
general_geometry_data_bitstream( )
}
7.1.2.3 属性片
属性片定义见表15。

15 属性片定义
伪代码
描述符
attribute_slice( ) {
attribute_slice_header( )
general_attribute_data_bitstream( )
}
7.1.2.4 序列头
序列头SPS定义见表16。

16 序列头定义
伪代码
描述符
sequence_header( ) {
sequence_start_code
f(32)
profile_id
u(4)
level_id
u(8)
frame_rate_code
u(4)
geom_remove_duplicate_flag
u(1)
attribute_present_flag
u(1)
if (attribute_present_flag) {
max_num_attributes_minus1
u(7)
multi_attributes_set_flag
u(1)
}
byte_alignment( )
}
7.1.2.5 字节对齐
T/AI 128.2—2024
18
字节对齐定义见表17。

17 字节对齐定义
伪代码
描述符
byte_alignment( ) {
while (!byte_aligned( ))
alignment_bit_equal_to_one /* equal to 1 */
}
7.1.2.6 几何头
几何头GPS定义见表18。

18 几何头定义
伪代码
描述符
geometry_header( ) {
geometry_start_code
f(32)
geometry_quant_step_significand
u(21)
marker_bit
f(1)
geometry_quant_step_exponent
u(5)
geom_max_tree_size_log2_minus8
ue(v)
implicit_geom_partition_flag
u(1)
single_mode_flag
u(1)
occupancy_search_range_side_log2
ue(v)
save_state_flag
u(1)
if (!save_state_flag) {
lcu_dependency_flag
u(1)
}
byte_alignment( )
}
7.1.2.7 属性头
属性头APS定义见表19。
T/AI 128.2—2024
19

19 属性头定义
伪代码
描述符
attribute_header( ) {
attribute_start_code
f(32)
for (attrIdx = 0; attrIdx < (max_num_attributes_minus1 + 1); attrIdx ++) {
attribute_data_present_flag[attrIdx]
u(1)
if (attribute_data_present_flag[attrIdx]) {
attribute_data_num_set_minus1[attrIdx]
ue(v)
if ((attrIdx == 1) && (attribute_data_num_set_minus1[1] > 0)) {
for (i = 0; i < ((attribute_data_num_set_minus1[1] + 1); I ++) {
multi_attr_group_id[i]
ue(v)
}
}
if (multi_attributes_set_flag)
multi_data_set_flag[attrIdx]
u(1)
if (multi_data_set_flag[attrIdx])
attribute_info_num_set_minus1[attrIdx]
ue(v)
for (i = 0; i < (attribute_info_num_set_minus1[attrIdx] + 1); i++) {
output_bit_depth_minus1[attrIdx][i]
ue(v)
attr_quant_param[attrIdx][i]
ue(v)
if (attrIdx == 0) {
order_switch[i]
u(1)
color_reorder_mode[i]
ue(v)
color_golomb_num[i]
ue(v)
golomb_group_size_log2[i]
ue(v)
}
if (attrIdx == 1) {
axis_bias_minus1[i]
ue(v)
refl_reorder_mode[i]
ue(v)
refl_golomb_num[i]
ue(v)
pred_fixed_point_frac_bit[i]
ue(v)
}
transform[attrIdx][i]
u(2)
if ((transform[attrIdx][i] == 0) || (transform[attrIdx][i] == 2)) {
max_num_of_neighbours_log2_minus7[attrIdx][i]
u(2)
if (attrIdx == 0) {
cross_component_pred[i]
u(1)
chroma_qp_offset_cb[i]
se(v)
chroma_qp_offset_cr[i]
se(v)
}
T/AI 128.2—2024
20
表19 属性头定义(续)
伪代码
描述符
if (attrIdx == 1) {
nearest_pred_param1[i]
ue(v)
nearest_pred_param2[i]
ue(v)
pred_dist_weight_group_size_log2[i]
ue(v)
}
}
if (transform[attrIdx][i] == 1) {
transform_segment_size_upper[attrIdx][i]
u(16)
marker_bit
f(1)
transform_segment_size_lower[attrIdx][i]
u(16)
marker_bit
f(1)
k_frac_bits[attrIdx][i]
ue(v)
attr_transform_qp_delta[attrIdx][i]
ue(v)
trans_res_layer[attrIdx][i]
u(1)
}
if (transform[attrIdx][i] == 2) {
max_num_of_coeff_log2_minus8[attrIdx][i]
ue(v)
qp_offset_dc[attrIdx][i]
se(v)
qp_offset_ac[attrIdx][i]
se(v)
if (attrIdx == 0) {
color_max_trans_num[i]
ue(v)
chroma_qp_offset_dc[i]
se(v)
chroma_qp_offset_ac[i]
se(v)
color_qp_adjust_flag[i]
u(1)
}
if (attrIdx == 1) {
refl_max_trans_num[i]
ue(v)
refl_group_pred[i]
u(1)
}
}
coeff_length_control_log2_minus8[attrIdx][i]
ue(v)
}
}
}
if ((attribute_data_num_set_minus1[0] == 0) && (attribute_data_num_set_minus1[1] == 0)) {
T/AI 128.2—2024
21
表19 属性头定义(续)
伪代码
描述符
cross_attr_type_pred
u(1)
if (cross_attr_type_pred) {
attr_coding_order
u(1)
cross_attr_type_pred_param1
u(15)
marker_bit
f(1)
cross_attr_type_pred_param2
u(21)
marker_bit
f(1)
}
}
byte_alignment( )
}
7.1.2.8 点云帧头
帧头frame_header定义见表20。

20 帧头定义
伪代码
描述符
frame_header( ) {
frame_start_code
f(32)
frame_idx
ue(v)
marker_bit
f(1)
frame_num_slice_minus1
ue(v)
lcu_node_size_log2_minus1
ue(v)
geom_num_points_upper
u(16)
marker_bit
f(1)
geom_num_points_lower
u(16)
marker_bit
f(1)
bounding_box_offset_x_upper
u(16)
marker_bit
f(1)
bounding_box_offset_x_lower
u(16)
marker_bit
f(1)
bounding_box_offset_y_upper
u(16)
marker_bit
f(1)
bounding_box_offset_y_lower
u(16)
marker_bit
f(1)
bounding_box_offset_z_upper
u(16)
marker_bit
f(1)
bounding_box_offset_z_lower
u(16)
T/AI 128.2—2024
22
表20 帧头定义(续)
伪代码
描述符
marker_bit
f(1)
bounding_box_size_width_upper
u(16)
marker_bit
f(1)
bounding_box_size_width_lower
u(16)
marker_bit
f(1)
bounding_box_size_height_upper
u(16)
marker_bit
f(1)
bounding_box_size_height_lower
u(16)
marker_bit
f(1)
bounding_box_size_depth_upper
u(16)
marker_bit
f(1)
bounding_box_size_depth_lower
u(16)
marker_bit
f(1)
byte_alignment( )
}
7.1.2.9 几何片头
几何片头GSH定义见表21。

21 几何片头定义
伪代码
描述符
geometry_slice_header( ) {
geometry_slice_header_start_code
f(32)
slice_id
ue(v)
marker_bit
f(1)
context_mode
u(1)
if (implicit_geom_partition_flag) {
max_num_implicit_qtbt_before_ot
ue(v)
min_size_implicit_qtbt
ue(v)
}
if (single_mode_flag) {
gsh_single_mode_flag
u(1)
}
planar_mode
u(1)
marker_bit
f(1)
slice_bounding_box_offset_x_upper
u(16)
marker_bit
f(1)
slice_bounding_box_offset_x_lower
u(16)
T/AI 128.2—2024
23
表21 几何片头定义(续)
伪代码
描述符
marker_bit
f(1)
slice_bounding_box_offset_y_upper
u(16)
marker_bit
f(1)
slice_bounding_box_offset_y_lower
u(16)
marker_bit
f(1)
slice_bounding_box_offset_z_upper
u(16)
marker_bit
f(1)
slice_bounding_box_offset_z_lower
u(16)
marker_bit
f(1)
slice_bounding_box_sizeXLog2
u(6)
slice_bounding_box_sizeYLog2
u(6)
slice_bounding_box_sizeZLog2
u(6)
marker_bit
f(1)
slice_num_points_upper
u(16)
marker_bit
f(1)
slice_num_points_lower
u(16)
marker_bit
f(1)
byte_alignment( )
}
7.1.2.10 属性片头
属性片头ASH定义见表22。

22 属性片头定义
伪代码
描述符
attribute_slice_header( ) {
attribute_slice_header_start_code
f(32)
slice_id
ue(v)
marker_bit
f(1)
attribute_id
ue(v)
qp_offset
se(v)
color_init_pred_trans_ratio
se(v)
refl_init_pred_trans_ratio
se(v)
if (color_qp_adjust_flag) {
color_qp_adjust_scalar
ue(v)
}
byte_alignment( )
}
T/AI 128.2—2024
24
7.1.3 几何数据
7.1.3.1 通用几何语法
通用几何语法见表23。

23 通用几何语法
伪代码
描述符
general_geometry_data_bitstream( ) {
geometry_slice_payload_start_code
f(32)
geometry_data( )
byte_alignment( )
}
7.1.3.2 几何数据语法
几何数据语法见表24。

24 几何数据语法
伪代码
描述符
geometry_data( ) {
depthX = depthY = depthZ = 0
for (depth = 0; depth < MaxGeometryOctreeDepth; depth++) {
if (gsh_single_mode_flag && depth != 0)
single_point_eligible_flag_per_depth[depth]
ae(v)
for (nodeIdx = 0; nodeIdx < NumNodesAtDepth[depth]; nodeIdx++) {
if (lcu_node_size_log2 > max(NodeSizeXLog2, NodeSizeYLog2, NodeSizeZLog2)) {
geom_tree_type
ae(v)
if (geom_tree_type == 0) {
lcu_octree_data( )
} else {
lcu_predtree_data( )
}
} else {
xN = NodeX[depth][nodeIdx]
yN = NodeY[depth][nodeIdx]
zN = NodeZ[depth][nodeIdx]
geometry_node(depthX, depthY, depthZ, partitionSkip, nodeIdx, xN, yN, zN,single_point_eligible_flag_per_depth[depth])
}
} // end for nodeIdx loop
T/AI 128.2—2024
25
表24 几何数据语法(续)
伪代码
描述符
if (!(partitionSkip & 4))
depthX = depthX + 1
if (!(partitionSkip & 2))
depthY = depthY + 1
if (!(partitionSkip & 1))
depthZ = depthZ + 1
} // end of depth loop
termination_bit_one /* equals to 1 */
ae(v)
}
7.1.3.3 八叉树数据语法
八叉树数据语法见表25。

25 八叉树数据语法
伪代码
描述符
lcu_octree_data( ) {
lcuDepthX = lcuDepthY = lcuDepthZ = 0
for (lcuDepth = 0; lcuDepth < lcuMaxGeometryOctreeDepth; lcuDepth++) {
if (gsh_single_mode_flag && lcuDepth != 0)
single_point_eligible_flag_per_depth[depth]
ae(v)
for (nodeIdx = 0; nodeIdx < lcuNumNodesAtDepth[lcuDepth]; nodeIdx++) {
xN = lcuNodeX[lcuDepth][nodeIdx]
yN = lcuNodeY[lcuDepth][nodeIdx]
zN = lcuNodeZ[lcuDepth][nodeIdx]
geometry_node(lcuDepthX, lcuDepthY, lcuDepthZ, lcuPartitionSkip, nodeIdx, xN, yN, zN,single_point_eligible_flag_per_depth[depth])
} // end for nodeIdx
if (!(lcuPartitionSkip & 4))
lcuDepthX = lcuDepthX + 1
if (!(lcuPartitionSkip & 2))
lcuDepthY = lcuDepthY + 1
If (!(lcuPartitionSkip & 1))
lcuDepthZ = lcuDepthZ + 1
}
termination_bit_one /* equals to 1 */
ae(v)
}
T/AI 128.2—2024
26
7.1.3.4 预测树数据语法
预测树数据语法见表26。

26 预测树数据语法
伪代码
描述符
lcu_predtree_data( ) {
num_bits_in_lcu_num_points
ae(v)
for (i = 0; i < num_bits_in_lcu_num_points; i++) {
lcu_num_points[i]
ae(v)
}
for (n = 0; n < lcu_num_points; n++) {
for (k = 0; k < 3; k++) {
is_geom_residual_zero[n][k]
ae(v)
if (!is_geom_residual_zero[n][k]) {
num_bits_geom_residual_minus1[n][k]
ae(v)
for (j = 0; j < num_bits_geom_residual_minus1[n][k] – 1; j++) {
geom_residual_minus1_div2[n][k][j]
ae(v)
}
geom_residual_minus1_div2_remain[n][k]
ae(v)
}
} // loop over k
if (geom_residual_max_rel_sign[n] >= 4) {
geom_residual_ord_rel_sign[n][0]
ae(v)
}
if ((geom_residual_ord_rel_sign[n][0] >> 2) + 2 <= geom_residual_max_rel_sign[n]) {
geom_residual_ord_rel_sign[n][1]
ae(v)
}
if ((geom_residual_ord_rel_sign[n][0] >> 2) + (geom_residual_ord_rel_sign[n][1] >> 1) + 1 <= geom_residual_max_rel_sign[n]) {
geom_residual_ord_rel_sign[n][2]
ae(v)
}
} // loop over points
termination_bit_one /* equals to 1 */
ae(v)
}
7.1.3.5 几何节点语法
几何节点语法见表27。
T/AI 128.2—2024
27

27 几何节点语法
伪代码
描述符
geometry_node(depth, depthX, depthY, depthZ, partitionSkip, nodeIdx, xN, yN, zN, numSiblings,single_point_eligible_flag_per_depth[depth]) {
if (single_point_eligible_flag_per_depth [depth] && (!GeomSingleNodeControlFlag)) {
if (GeometryNodeOccupancyCnt[depth][xN][yN][zN] == 1 && GeomSingleEligibleFlag[depth - 1]) {
geom_single_flag = 0
} else {
geom_single_flag
ae(v)
}
if (geom_single_flag) {
for (i = ChildNodeSizeXLog2 - 1; i >= 0; --i) {
point_offset_x[i]
ae(v)
}
for (i = ChildNodeSizeYLog2-1; i >= 0; --i) {
point_offset_y[i]
ae(v)
}
for (i = ChildNodeSizeZLog2-1; i >= 0; --i) {
point_offset_z[i]
ae(v)
}
}
} else {
if (!geom_single_flag) {
occupancy_code
ae(v)
if (depthX >= MaxNodeSizeXLog2 − 1 && depthY >= MaxNodeSizeYLog2 – 1 && depthZ >= MaxNodeSizeZLog2 – 1) {
if (!geomRemoveDuplicateFlag) {
for (child = 0; child < GeometryNodeChildrenCnt; child++) {
num_duplicated_points_eq1
ae(v)
if (!num_duplicated_points_eq1)
num_duplicated_points_minus2
ae(v)
}
}
}
}
}
}
7.1.4 属性数据
7.1.4.1 通用属性语法
T/AI 128.2—2024
28
通用属性语法见表28。

28 通用属性语法
伪代码
描述符
general_attribute_data_bitstream( ) {
if (next_start_code( ) == color_slice_payload_start_code)
general_color_data_bitstream( )
if (next_start_code( ) == refl_slice_payload_start_code)
general_refl_data_bitstream( )
}
7.1.4.2 通用颜色语法
通用颜色语法见表29。

29 通用颜色语法
伪代码
描述符
general_color_data_bitstream( ) {
color_slice_payload_start_code
f(32)
attribute_data_color( )
byte_alignment( )
}
7.1.4.3 通用反射率语法
通用反射率语法见表30。

30 通用反射率语法
伪代码
描述符
general_refl_data_bitstream( ) {
refl_slice_payload_start_code
f(32)
if (attribute_data_num_set_minus1[1] > 1 && multi_attr_group_num > 1) {
attribute_data_multiple_refl( )
} else {
attribute_data_refl( )
}
byte_alignment( )
}
7.1.4.4 颜色数据语法
颜色数据语法定义见表31。
T/AI 128.2—2024
29

31 颜色数据
伪代码
描述符
attribute_data_color ( ) {
isLengthControl = false
residual_zero_run_length = zero_run_length_code( )
for (i = 0; i < slice_num_points; i ++) {
if (residual_zero_run_length = maxLatency) {
isLengthControl = true
}
if (residual_zero_run_length) {
residual_zero_run_length--
} else {
if (isLengthControl) {
residual_zero_run_length = zero_run_length_code( )
isLengthControl = false
} else {
color_residual_correlation_code( )
residual_zero_run_length = zero_run_length_code( )
}
}
}
termination_bit_one /* equals to 1 */
ae(v)
}
7.1.4.5 反射率数据语法
反射率数据语法定义见表32。

32 反射率数据
伪代码
描述符
attribute_data_refl( ) {
isLengthControl = false
residual_zero_run_length = zero_run_length_code()
for (i = 0; i < slice_num_points; i++) {
if (residual_zero_run_length = maxLatency) {
isLengthControl = true
}
T/AI 128.2—2024
30
表32 反射率数据(续)
伪代码
描述符
if (residual_zero_run_length) {
-- residual_zero_run_length
abs_reflectance = 0
} else {
if (isLengthControl) {
residual_zero_run_length = zero_run_length_code( )
isLengthControl = false
} else {
if
2351358755235
下载排行 | 下载帮助 | 下载声明 | 信息反馈 | 网站地图  360book | 联系我们谢谢