CN114078170A - 一种点云几何孤立点解码的方法与装置 - Google Patents
一种点云几何孤立点解码的方法与装置 Download PDFInfo
- Publication number
- CN114078170A CN114078170A CN202010822353.5A CN202010822353A CN114078170A CN 114078170 A CN114078170 A CN 114078170A CN 202010822353 A CN202010822353 A CN 202010822353A CN 114078170 A CN114078170 A CN 114078170A
- Authority
- CN
- China
- Prior art keywords
- decoding
- isolated point
- decoded
- node
- isolated
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 230000003044 adaptive effect Effects 0.000 claims description 4
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- MKXZASYAUGDDCJ-NJAFHUGGSA-N dextromethorphan Chemical compound C([C@@H]12)CCC[C@]11CCN(C)[C@H]2CC2=CC=C(OC)C=C21 MKXZASYAUGDDCJ-NJAFHUGGSA-N 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/40—Tree coding, e.g. quadtree, octree
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10028—Range image; Depth image; 3D point clouds
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Navigation (AREA)
Abstract
本发明提出了一种新的点云几何孤立点解码方法,从码流中解码几何信息时,对当前需要解码的八叉树节点来说,该节点在满足孤立点模式的条件single_condition时,进入孤立点解码模式,通过新增额外的1个二进制符号single_flag作为标志位,指示接下来要解码的是否是孤立点,实质为标识出现孤立点的方法不同,并结合利用周围节点及其父节点周围节点的占用信息,合理地设计了single_flag标志位熵编码的上下文模型,有效地减少了孤立点编码的码流,同时允许孤立点位置信息的降精度表达,更好地权衡了失真和码率的关系。
Description
技术领域
本发明专利属于点云编解码领域,具体涉及一种点云几何编码的方法和装置。
背景技术
媒体技术的下一个重要挑战是支持虚拟现实技术和增强现实技术的应用。这些应用连同计算机视觉、三维渲染和三维相机技术使得新兴的沉浸式媒体体验成为可能。点云作为一种比较理想的三维场景或三维物体表现形式,是在空间中无规则分布并且无连接的一组点。这组点通过三维坐标x、y、z来表达位置信息,并通过与每一个点关联的一个或者多个属性值表达三维场景或者三维物体的结构和表面属性信息。一组点云往往包含几万到几十亿的点,为了使三维D点云的存储处理和传输成为可能,对点云数据进行高效的压缩是十分必要的。
在对点云进行几何编码,即编码点云的xyz坐标时,通常采用的做法是将点云的包围盒(2MaxGeometryOctreeDepth,2MaxGeometryOctreeDepth,2MaxGeometryoctreeDepth)不断地用八叉树递归划分的方法,每个立方体都被递归地划分成8个子立方体,对应于八叉树的8个节点。在每次八叉树节点划分时,该节点的空间占用码包含8个二进制数(b7b6b5b4b3b2b1b0),分别表示该节点的8个子节点占用的情况。如果其中至少有一个子节点被占用,那么这个子节点会进一步划分,直到划分到最小单元(1×1×1), MaxGeometryOctreeDepth是八叉树的总层数,八叉树的根节点所在层数记为第0层,叶子节点所在层数记为第MaxGeometryOctreeDepth层,在点云的几何解码时从码流中依次解码还原出空间占用码,重构出完整的八叉树。
事实上,点云中存在着大量的孤立点,孤立点是指从节点A开始往下不断划分的过程中,该节点下只会存在一个点,这个节点A称为孤立节点,如果在八叉树的第L层 (L<MaxGeometryOctreeDepth)的某个节点出现孤立点,则进入孤立点单独编码模式,即用该孤立点的局部坐标(xyz方向各(MaxGeometryOctreeDepth-L)个二进制符号)代替空间占用码(共需8*(MaxGeometryOctreeDepth-L)个二进制符号),而解码端在解码得到一个孤立点编码的标识符后,如8个符号都是‘0’这样特殊的标识符,接下来就按局部坐标的方式来解码码流,否则则按空间占用码的方式来解码码流。在解码8个‘0’这个孤立点标识符的时候,解码端仍然按空间占用码的上下文来解码这8个符号,为每个符号单独建立一个上下文模型。事实上,使用这种方法来标识孤立点把空间占用码和孤立点标识码混在一起,导致编码不是很高效,造成一定的比特位浪费。
现有方法的语法表:
说明:变量NodeX[depth][idx]、NodeY[depth][idx]和NodeZ[depth][idx]表示在给定深度下,idx节点按解码顺序的x、y和z坐标;变量NumNodesAtDepth[depth]表示在给定深度下要解码的节点数,可以通过分析上一层占用码中的占用数得到;MaxGeometryOctreeDepth是指八叉树的最大深度,single_mode即孤立点编码模式,通过每层解码3个符号,解码孤立点的x、y、z每层的相对坐标,最终再根据当前节点所在的八叉树层次得到完整的坐标。geometry_node即八叉树节点模式,解码8个符号的空间占用码,再根据当前节点所在的八叉树层次确定子节点的位置。
发明内容
为了进一步提高孤立点的编码效率,本发明提出了一种新的点云几何孤立点解码方法,从码流中解码几何信息时,对当前需要解码的八叉树节点来说,在满足孤立点模式的条件single_condition时,进入孤立点解码模式,通过新增额外的1个二进制符号single_flag作为标志位,指示接下来要解码的是否是孤立点,实质为标识出现孤立点的方法不同,结合利用周围节点及其父节点周围节点的占用信息,合理地设计了single_flag标志位熵编码的上下文模型,有效地减少了孤立点编码的码流,同时允许孤立点位置信息的降精度表达,更好地权衡了失真和码率的关系。
本发明的第一目的是提供一种几何孤立点解码方法,包括如下内容:
对于满足孤立点模式条件single_condition的节点,额外解码一个1比特标识符single_flag,根据标识符的值确定标识接下来解码的是孤立点的局部坐标还是空间占用码;
所述的解码局部坐标是对接下来八叉树的每一层,xyz方向分别解码一个1比特的二进制符号表示位置坐标;
所述的解码空间占用码是解码连续的8比特二进制符号作为八叉树节点的占用码。
所述方法的语法表:
作为优选,本方法所述的孤立点模式条件single_condition还包括,当前需要解码节点的父节点相邻的6个邻居节点中被占用的节点数量parentNeighbourCount是否超过T,对于parentNeighbourCount小于等于T的即为满足孤立点模式条件,parentNeighbourCount大于T的即为不满足孤立点模式条件,T是大于等于0的自然数,经过分析大量点云数据,T取1时是较优的。
作为优选,本方法所述的解码本方法所述的额外的1比特标识符single_flag时,采用基于上下文的自适应二进制算术解码,根据当前需要解码节点的父节点相邻6个邻居节点中被占用的节点数量parentNeighbourCount信息建立上下文模型,或者根据当前需要解码节点的相邻已解码的3个邻居节点中被占用的节点数量 childNeighbourCount建立上下文模型,或者结合parentNeighbourCount和 childNeighbourCount两个信息建立上下文模型,最终筛选不同的上下文组合,下表 1所示的上下文模型建立方法是较优的,也可以只用parentNeighbourCount的信息,表2所示的上下文模型建立方法是较优的。
表1
ctx_id | parentNeighbourCount | childNeighbourCount |
0 | 0 | 0 |
1 | 0 | 1 |
2 | 0 | 2,3 |
3 | 1 | 0 |
4 | 1 | 1 |
5 | 1 | 2,3 |
表2
ctx_id | parentNeighbourCount |
0 | 0 |
1 | 1 |
作为优选,本方法所述的解码局部坐标方法还包括,以一定的降精度表达来解码局部坐标,局部坐标的解码位宽depthMax从码流头中获得,用于控制孤立点位置的精度,xyz方向各自解码最多depthMax个二进制符号,即局部坐标的前depthMax位从码流信息中解码获得,depthMax位之后的比特位直接解码为0。
所述优选方法的语法表:
本发明的第二目的是提供一种几何孤立点解码装置,包括如下内容:
孤立点解码模块:对于满足孤立点模式条件single_condition的节点,额外解码一个1比特标识符single_flag,根据标识符的值选择接下来进入孤立点的局部坐标解码模块还是空间占用码解码模块;
所述的孤立点局部坐标解码模块是对接下来八叉树的每一层,xyz方向分别解码一个1比特的二进制符号表示位置坐标;
所述的空间占用码解码模块是解码连续的8比特二进制符号作为八叉树节点的占用码。
作为优选,本装置所述的孤立点模式条件single_condition还包括,当前需要解码节点的父节点相邻的6个邻居节点中被占用的节点数量parentNeighbourCount是否超过T,对于parentNeighbourCount小于等于T的即为满足孤立点模式条件,parentNeighbourCount大于T的即为不满足孤立点模式条件,T是大于等于0的自然数,经过分析大量点云数据,T取1时是较优的。
作为优选,本装置所述的single_flag解码模块,采用基于上下文的自适应二进制算术解码,根据当前需要解码节点的父节点相邻6个邻居节点中被占用的节点数量parentNeighbourCount信息建立上下文模型,或者根据当前需要解码节点的相邻已解码的3个邻居节点中被占用的节点数量childNeighbourCount建立上下文模型,或者结合parentNeighbourCount和childNeighbourCount两个信息建立上下文模型,最终筛选不同的上下文组合,下表3所示的上下文模型建立方法是较优的,也可以只用parentNeighbourCount的信息,表4所示的上下文模型建立方法是较优的。
ctx_id | parentNeighbourCount | childNeighbourCount |
0 | 0 | 0 |
1 | 0 | 1 |
2 | 0 | 2,3 |
3 | 1 | 0 |
4 | 1 | 1 |
5 | 1 | 2,3 |
ctx_id | parentNeighbourCount |
0 | 0 |
1 | 1 |
作为优选,本装置所述的局部坐标解码模块方法还包括,孤立点降精度表达模块,以一定的降精度表达来解码局部坐标,局部坐标的解码位宽depthMax从码流头中获得,用于控制孤立点位置的精度,xyz方向各自解码最多depthMax个二进制符号,即局部坐标的前depthMax位从码流信息中解码获得,depthMax位之后的比特位直接解码为0。
本发明通过在满足一定的孤立点模式条件时,额外解码一个孤立点标识符,改变了标识出现孤立点的方法,且对这个标识符设计了合理的上下文模型,显著减小了孤立点位置信息所占的码流开销,同时允许孤立点位置信息的降精度表达,更好地权衡了失真和码率的关系。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有编码框架中几何信息解码的流程图;
图2是加上了本发明的几何孤立点解码方法后的几何解码流程图;
图3是加上了本发明的孤立点位置信息降精度表达后的几何解码流程图。
具体实施方式
为了进一步理解本发明,下面结合实施例对本发明的优选实施方案进行描述,但是应当理解,这些描述只是为进一步说明本发明的特征和优点,而不是对本发明权利要求的限制。
实施例1
本实施例的一种点云几何孤立点解码方法,包含以下步骤:
在开始几何解码前,从码流头中解码用于表达孤立点位置坐标精度的孤立点局部坐标位宽depthMax。从码流中解码点云的几何信息,对于当前需要解码的节点,八叉树的最大深度记为MaxGeometryOctreeDepth,当前节点所在的八叉树深度记为L,若其不满足条件single_condition,则接下来从码流中解码8个比特的空间占用码,并把当前节点送入八叉树节点队列,若其满足条件single_condition,则接下来需要额外解码一个1比特标识符single_flag,根据single_flag的值选择接下来解码孤立点的局部坐标还是解码空间占用码,具体地:
·统计当前需要解码节点的父节点周围6个相邻邻居节点中被占用的节点数量parentNeighbourCount,若parentNeighbourCount<=1,则认为当前节点满足 single_condition,进入孤立点解码模式,否则,不满足single_condition;
·对于孤立点解码模式,需要解码1比特的标志符single_flag,除了parentNeighbourCount,再统计当前节点的相邻已解码的3个邻居节点中被占用的节点数量childNeighbourCount,根据这两个值从下表中选择一个上下文模型,使用这个模型的概率对single_flag进行解码并相应的更新概率;
·如果single_flag=0,则表示当前节点实际上不是孤立节点,那么进入空间占用码解码模式,若single_flag=0,则当前节点是孤立节点,根据之前从码流头中解码得到的孤立点局部坐标位宽depthMax,从码流中用bypass解码的方式依次解码局部坐标xyz的前depthMax位,depthMax位之后的比特位不能由码流中的信息解码获得,直接解码为0。以depthMax=MaxGeometryOctreeDepth-L为例,xyz每个坐标都需要从码流中解码(MaxGeometryOctreeDepth-L)个符号,此时能准确地解码孤立点的位置坐标,是无损的。
实施例2
本实施例的一种点云几何孤立点解码方法,包含以下步骤:
在开始几何解码前,从码流头中解码用于表达孤立点位置坐标精度的孤立点局部坐标位宽depthMax。从码流中解码点云的几何信息,对于当前需要解码的节点,八叉树的最大深度记为MaxGeometryOctreeDepth,当前节点所在的八叉树深度记为L,若其不满足条件single_condition,则接下来从码流中解码8个比特的空间占用码,并把当前节点送入八叉树节点队列,若其满足条件single_condition,则接下来需要额外解码一个1比特标识符single_flag,根据single_flag的值选择接下来解码孤立点的局部坐标还是解码空间占用码,具体地:
·统计当前需要解码节点的父节点周围6个相邻邻居节点中被占用的节点数量parentNeighbourCount,若parentNeighbourCount==0,则认为当前节点满足 single_condition,进入孤立点解码模式,否则,不满足single_condition;
·对于孤立点解码模式,需要解码1比特的标志符single_flag,除了parentNeighbourCount,再统计当前节点的相邻已解码的3个邻居节点中被占用的节点数量childNeighbourCount,根据这两个值从下表中选择一个上下文模型,使用这个模型的概率对single_flag进行解码并相应的更新概率;
ctx_id | parentNeighbourCount | childNeighbourCount |
0 | 0 | 0 |
1 | 0 | 1 |
2 | 0 | 2,3 |
·如果single_flag=0,则表示当前节点实际上不是孤立节点,那么进入空间占用码解码模式,若single_flag=0,则当前节点是孤立节点,根据之前从码流头中解码得到的孤立点局部坐标位宽depthMax,从码流中用bypass解码的方式依次解码局部坐标xyz的前depthMax位,depthMax位之后的比特位不能由码流中的信息解码获得,直接解码为0。以depthMax=MaxGeometryOctreeDepth-L为例,xyz每个坐标都需要从码流中解码(MaxGeometryOctreeDepth-L)个符号,此时能准确地解码孤立点的位置坐标,是无损的。
实施例3
本实施例的一种点云几何孤立点解码方法,包含以下步骤:
在开始几何解码前,从码流头中解码用于表达孤立点位置坐标精度的孤立点局部坐标位宽depthMax。从码流中解码点云的几何信息,对于当前需要解码的节点,八叉树的最大深度记为MaxGeometryOctreeDepth,当前节点所在的八叉树深度记为L,若其不满足条件single_condition,则接下来从码流中解码8个比特的空间占用码,并把当前节点送入八叉树节点队列,若其满足条件single_condition,则接下来需要额外解码一个1比特标识符single_flag,根据single_flag的值选择接下来解码孤立点的局部坐标还是解码空间占用码,具体地:
·统计当前需要解码节点的父节点周围6个相邻邻居节点中被占用的节点数量parentNeighbourCount,若parentNeighbourCount<=2,则认为当前节点满足 single_condition,进入孤立点解码模式,否则,不满足single_condition;
·对于孤立点解码模式,需要解码1比特的标志符single_flag,除了parentNeighbourCount,再统计当前节点的相邻已解码的3个邻居节点中被占用的节点数量childNeighbourCount,根据这两个值从下表中选择一个上下文模型,使用这个模型的概率对single_flag进行解码并相应的更新概率;
ctx_id | parentNeighbourCount | childNeighbourCount |
0 | 0 | 0 |
1 | 0 | 1 |
2 | 0 | 2,3 |
3 | 1 | 0 |
4 | 1 | 1 |
5 | 1 | 2,3 |
6 | 2 | 0 |
7 | 2 | 1 |
8 | 2 | 2,3 |
·如果single_flag=0,则表示当前节点实际上不是孤立节点,那么进入空间占用码解码模式,若single_flag=0,则当前节点是孤立节点,根据之前从码流头中解码得到的孤立点局部坐标位宽depthMax,从码流中用bypass解码的方式依次解码局部坐标xyz的前depthMax位,depthMax位之后的比特位不能由码流中的信息解码获得,直接解码为0。以depthMax=MaxGeometryOctreeDepth-L为例,xyz每个坐标都需要从码流中解码(MaxGeometryOctreeDepth-L)个符号,此时能准确地解码孤立点的位置坐标,是无损的。
实施例4
本实施例的一种点云几何孤立点解码方法,包含以下步骤:
在开始几何解码前,从码流头中解码用于表达孤立点位置坐标精度的孤立点局部坐标位宽depthMax。从码流中解码点云的几何信息,对于当前需要解码的节点,八叉树的最大深度记为MaxGeometryOctreeDepth,当前节点所在的八叉树深度记为L,若其不满足条件single_condition,则接下来从码流中解码8个比特的空间占用码,并把当前节点送入八叉树节点队列,若其满足条件single_condition,则接下来需要额外解码一个1比特标识符single_flag,根据single_flag的值选择接下来解码孤立点的局部坐标还是解码空间占用码,具体地:
·统计当前需要解码节点的父节点周围6个相邻邻居节点中被占用的节点数量parentNeighbourCount,若parentNeighbourCount<=1,则认为当前节点满足 single_condition,进入孤立点解码模式,否则,不满足single_condition;
·对于孤立点解码模式,需要解码1比特的标志符single_flag,根据parentNeighbourCount的值从下表中选择一个上下文模型,使用这个模型的概率对single_flag进行解码并相应的更新概率;
ctx_id | parentNeighbourCount |
0 | 0 |
1 | 1 |
·如果single_flag=0,则表示当前节点实际上不是孤立节点,那么进入空间占用码解码模式,若single_flag=0,则当前节点是孤立节点,根据之前从码流头中解码得到的孤立点局部坐标位宽depthMax,从码流中用bypass解码的方式依次解码局部坐标xyz的前depthMax位,depthMax位之后的比特位不能由码流中的信息解码获得,直接解码为0。以depthMax=MaxGeometryOctreeDepth-L为例,xyz每个坐标都需要从码流中解码(MaxGeometryOctreeDepth-L)个符号,此时能准确地解码孤立点的位置坐标,是无损的。
实施例5
本实施例的一种点云几何孤立点解码方法,包含以下步骤:
在开始几何解码前,从码流头中解码用于表达孤立点位置坐标精度的孤立点局部坐标位宽depthMax。从码流中解码点云的几何信息,对于当前需要解码的节点,八叉树的最大深度记为MaxGeometryOctreeDepth,当前节点所在的八叉树深度记为L,若其不满足条件single_condition,则接下来从码流中解码8个比特的空间占用码,并把当前节点送入八叉树节点队列,若其满足条件single_condition,则接下来需要额外解码一个1比特标识符single_flag,根据single_flag的值选择接下来解码孤立点的局部坐标还是解码空间占用码,具体地:
·统计当前需要解码节点的父节点周围6个相邻邻居节点中被占用的节点数量parentNeighbourCount,若parentNeighbourCount<=2,则认为当前节点满足 single_condition,进入孤立点解码模式,否则,不满足single_condition;
·对于孤立点解码模式,需要解码1比特的标志符single_flag,根据parentNeighbourCount的值从下表中选择一个上下文模型,使用这个模型的概率对single_flag进行解码并相应的更新概率;
ctx_id | parentNeighbourCount |
0 | 0 |
1 | 1 |
2 | 2 |
·如果single_flag=0,则表示当前节点实际上不是孤立节点,那么进入空间占用码解码模式,若single_flag=0,则当前节点是孤立节点,根据之前从码流头中解码得到的孤立点局部坐标位宽depthMax,从码流中用bypass解码的方式依次解码局部坐标xyz的前depthMax位,depthMax位之后的比特位不能由码流中的信息解码获得,直接解码为0。以depthMax=MaxGeometryOctreeDepth-L为例,xyz每个坐标都需要从码流中解码(MaxGeometryOctreeDepth-L)个符号,此时能准确地解码孤立点的位置坐标,是无损的。
实施例6
本实施例的一种点云几何孤立点解码方法,包含以下步骤:
在开始几何解码前,从码流头中解码用于表达孤立点位置坐标精度的孤立点局部坐标位宽depthMax。从码流中解码点云的几何信息,对于当前需要解码的节点,八叉树的最大深度记为MaxGeometryOctreeDepth,当前节点所在的八叉树深度记为L,若其不满足条件single_condition,则接下来从码流中解码8个比特的空间占用码,并把当前节点送入八叉树节点队列,若其满足条件single_condition,则接下来需要额外解码一个1比特标识符single_flag,根据single_flag的值选择接下来解码孤立点的局部坐标还是解码空间占用码,具体地:
·统计当前需要解码节点的父节点周围6个相邻邻居节点中被占用的节点数量parentNeighbourCount,若parentNeighbourCount<=1,则认为当前节点满足 single_condition,进入孤立点解码模式,否则,不满足single_condition;
·对于孤立点解码模式,需要解码1比特的标志符single_flag,除了parentNeighbourCount,再统计当前节点的相邻已解码的3个邻居节点中被占用的节点数量childNeighbourCount,根据这两个值从下表中选择一个上下文模型,使用这个模型的概率对single_flag进行解码并相应的更新概率;
ctx_id | parentNeighbourCount | childNeighbourCount |
0 | 0 | 0 |
1 | 0 | 1 |
2 | 0 | 2,3 |
3 | 1 | 0 |
4 | 1 | 1 |
5 | 1 | 2,3 |
·如果single_flag=0,则表示当前节点实际上不是孤立节点,那么进入空间占用码解码模式,若single_flag=0,则当前节点是孤立节点,根据之前从码流头中解码得到的孤立点局部坐标位宽depthMax,从码流中用bypass解码的方式依次解码局部坐标xyz的前depthMax位,depthMax位之后的比特位不能由码流中的信息解码获得,直接解码为0。以depthMax=0为例,xyz每个坐标都不需要从码流中解码,局部坐标全部缺省解码为0,此时解码的孤立点位置坐标,是有几何失真的,但能大大节省码流。
实施例7
本实施例的一种点云几何孤立点解码方法,包含以下步骤:
在开始几何解码前,从码流头中解码用于表达孤立点位置坐标精度的孤立点局部坐标位宽depthMax。从码流中解码点云的几何信息,对于当前需要解码的节点,八叉树的最大深度记为MaxGeometryOctreeDepth,当前节点所在的八叉树深度记为L,若其不满足条件single_condition,则接下来从码流中解码8个比特的空间占用码,并把当前节点送入八叉树节点队列,若其满足条件single_condition,则接下来需要额外解码一个1比特标识符single_flag,根据single_flag的值选择接下来解码孤立点的局部坐标还是解码空间占用码,具体地:
·统计当前需要解码节点的父节点周围6个相邻邻居节点中被占用的节点数量parentNeighbourCount,若parentNeighbourCount<=2,则认为当前节点满足 single_condition,进入孤立点解码模式,否则,不满足single_condition;
·对于孤立点解码模式,需要解码1比特的标志符single_flag,除了parentNeighbourCount,再统计当前节点的相邻已解码的3个邻居节点中被占用的节点数量childNeighbourCount,根据这两个值从下表中选择一个上下文模型,使用这个模型的概率对single_flag进行解码并相应的更新概率;
ctx_id | parentNeighbourCount | childNeighbourCount |
0 | 0 | 0 |
1 | 0 | 1 |
2 | 0 | 2,3 |
3 | 1 | 0 |
4 | 1 | 1 |
5 | 1 | 2,3 |
6 | 2 | 0 |
7 | 2 | 1 |
8 | 2 | 2,3 |
·如果single_flag=0,则表示当前节点实际上不是孤立节点,那么进入空间占用码解码模式,若single_flag=0,则当前节点是孤立节点,根据之前从码流头中解码得到的孤立点局部坐标位宽depthMax,从码流中用bypass解码的方式依次解码局部坐标xyz的前depthMax位,depthMax位之后的比特位不能由码流中的信息解码获得,直接解码为0。以depthMax=0为例,xyz每个坐标都不需要从码流中解码,局部坐标全部缺省解码为0,此时解码的孤立点位置坐标,是有几何失真的,但能大大节省码流。
实施例8
本实施例的一种点云几何孤立点解码装置,包含以下步骤:
在开始几何解码前,从码流头中解码用于表达孤立点位置坐标精度的孤立点局部坐标位宽depthMax。从码流中解码点云的几何信息,对于当前需要解码的节点,八叉树的最大深度记为MaxGeometryOctreeDepth,当前节点所在的八叉树深度记为L。
孤立点解码模块:对于当前需要解码的节点,若其不满足条件single_condition,则接下来从码流中解码8个比特的空间占用码,并把当前节点送入八叉树节点队列,若其满足条件single_condition,则接下来需要额外解码一个1比特标识符 single_flag,根据single_flag的值选择接下来进入孤立点解码模块还是空间占用码的解码模块:
孤立点解码模块:统计当前需要解码节点的父节点周围6个相邻邻居节点中被占用的节点数量parentNeighbourCount,若parentNeighbourCount<=1,则认为当前节点满足single_condition,进入single_flag解码模块,否则,不满足 single_condition;
single_flag解码模块:需要额外解码1比特的标志符single_flag,除了parentNeighbourCount,再统计当前节点的相邻已解码的3个邻居节点中被占用的节点数量childNeighbourCount,根据这两个值从下表中选择一个上下文模型,使用这个模型的概率对single_flag进行解码并相应的更新概率;
ctx_id | parentNeighbourCount | childNeighbourCount |
0 | 0 | 0 |
1 | 0 | 1 |
2 | 0 | 2,3 |
3 | 1 | 0 |
4 | 1 | 1 |
5 | 1 | 2,3 |
孤立点降精度表达模块:如果single_flag=0,则表示当前节点实际上不是孤立节点,那么进入空间占用码解码模式,若single_flag=0,则当前节点是孤立节点,根据之前从码流头中解码得到的孤立点局部坐标位宽depthMax,从码流中用bypass 解码的方式依次解码局部坐标xyz的前depthMax位,depthMax位之后的比特位不能由码流中的信息解码获得,直接解码为0。以 depthMax=MaxGeometryOctreeDepth-L为例,xyz每个坐标都需要从码流中解码(MaxGeometryOctreeDepth-L)个符号,此时能准确地解码孤立点的位置坐标,是无损的。
实施例9
本实施例的一种点云几何孤立点解码装置,包含以下步骤:
在开始几何解码前,从码流头中解码用于表达孤立点位置坐标精度的孤立点局部坐标位宽depthMax。从码流中解码点云的几何信息,对于当前需要解码的节点,八叉树的最大深度记为MaxGeometryOctreeDepth,当前节点所在的八叉树深度记为L。
孤立点解码模块:对于当前需要解码的节点,若其不满足条件single_condition,则接下来从码流中解码8个比特的空间占用码,并把当前节点送入八叉树节点队列,若其满足条件single_condition,则接下来需要额外解码一个1比特标识符 single_flag,根据single_flag的值选择接下来进入孤立点解码模块还是空间占用码的解码模块:
孤立点解码模块:统计当前需要解码节点的父节点周围6个相邻邻居节点中被占用的节点数量parentNeighbourCount,若parentNeighbourCount<=2,则认为当前节点满足single_condition,进入single_flag解码模块,否则,不满足 single_condition;
single_flag解码模块:需要额外解码1比特的标志符single_flag,除了parentNeighbourCount,再统计当前节点的相邻已解码的3个邻居节点中被占用的节点数量childNeighbourCount,根据这两个值从下表中选择一个上下文模型,使用这个模型的概率对single_flag进行解码并相应的更新概率;
孤立点降精度表达模块:如果single_flag=0,则表示当前节点实际上不是孤立节点,那么进入空间占用码解码模式,若single_flag=0,则当前节点是孤立节点,根据之前从码流头中解码得到的孤立点局部坐标位宽depthMax,从码流中用bypass 解码的方式依次解码局部坐标xyz的前depthMax位,depthMax位之后的比特位不能由码流中的信息解码获得,直接解码为0。以 depthMax=MaxGeometryOctreeDepth-L为例,xyz每个坐标都需要从码流中解码(MaxGeometryOctreeDepth-L)个符号,此时能准确地解码孤立点的位置坐标,是无损的。
实施例10
本实施例的一种点云几何孤立点解码装置,包含以下步骤:
在开始几何解码前,从码流头中解码用于表达孤立点位置坐标精度的孤立点局部坐标位宽depthMax。从码流中解码点云的几何信息,对于当前需要解码的节点,八叉树的最大深度记为MaxGeometryOctreeDepth,当前节点所在的八叉树深度记为L。
孤立点解码模块:对于当前需要解码的节点,若其不满足条件single_condition,则接下来从码流中解码8个比特的空间占用码,并把当前节点送入八叉树节点队列,若其满足条件single_condition,则接下来需要额外解码一个1比特标识符 single_flag,根据single_flag的值选择接下来进入孤立点解码模块还是空间占用码的解码模块:
孤立点解码模块:统计当前需要解码节点的父节点周围6个相邻邻居节点中被占用的节点数量parentNeighbourCount,若parentNeighbourCount<=1,则认为当前节点满足single_condition,进入single_flag解码模块,否则,不满足 single_condition;
single_flag解码模块:需要额外解码1比特的标志符single_flag,根据parentNeighbourCount的值从下表中选择一个上下文模型,使用这个模型的概率对single_flag进行解码并相应的更新概率;
孤立点降精度表达模块:如果single_flag=0,则表示当前节点实际上不是孤立节点,那么进入空间占用码解码模式,若single_flag=0,则当前节点是孤立节点,根据之前从码流头中解码得到的孤立点局部坐标位宽depthMax,从码流中用bypass 解码的方式依次解码局部坐标xyz的前depthMax位,depthMax位之后的比特位不能由码流中的信息解码获得,直接解码为0。以 depthMax=MaxGeometryOctreeDepth-L为例,xyz每个坐标都需要从码流中解码(MaxGeometryOctreeDepth-L)个符号,此时能准确地解码孤立点的位置坐标,是无损的。
Claims (8)
1.一种点云几何孤立点的解码方法,其特征在于包括:
对于满足孤立点模式条件的节点,额外解码一个1比特标识符single_flag,根据single_flag的值选择接下来从码流信息中获得的是孤立点的局部坐标还是空间占用码;
所述的解码局部坐标是对接下来八叉树的每一层,xyz方向分别解码一个1比特二进制符号表示位置坐标;
所述的解码空间占用码是解码连续的8比特二进制符号作为八叉树节点的占用码。
2.权利要求1所述的几何孤立点的解码方法,其特征还在于包括:
所述的孤立点模式条件,是当前需要解码节点的父节点相邻的6个邻居节点中被占用的节点数量parentNeighbourCount是否超过T,对于parentNeighbourCount小于等于T的即为满足孤立点模式条件,parentNeighbourCount大于T的即为不满足孤立点模式条件,T是大于等于0的自然数。
3.权利要求1所述的几何孤立点的解码方法,其特征还在于包括:
解码所述额外的1比特标识符single_flag时,采用基于上下文的自适应二进制算术解码,根据当前需要解码节点的父节点相邻6个邻居节点中被占用的节点数量parentNeighbourCount信息建立上下文模型,或者根据当前需要解码节点的相邻已解码的3个邻居节点中被占用的节点数量childNeighbourCount建立上下文模型,或者结合parentNeighbourCount和childNeighbourCount两个信息建立上下文模型。
4.权利要求1所述的几何孤立点的解码方法,其特征还在于包括:
所述的解码局部坐标可以解码一定的降精度表达的局部坐标,局部坐标的解码位宽depthMax从码流头中获得,xyz方向各自解码depthMax个二进制符号,即局部坐标的前depthMax位从码流信息中解码获得,depthMax位之后的比特位直接解码为0。
5.一种点云几何孤立点的解码装置,其特征在于包括:
孤立点解码模块:对于满足孤立点模式条件的节点,额外解码一个1比特标识符single_flag,根据single_flag的值选择接下来进入孤立点的局部坐标解码模块还是空间占用码解码模块;
所述的孤立点局部坐标解码模块是对接下来八叉树的每一层,xyz方向分别解码一个1比特二进制符号表示位置坐标;
所述的空间占用码解码模块是解码连续的8比特二进制符号作为八叉树节点的占用码。
6.权利要求5所述的几何孤立点的解码装置,其特征还在于包括:
所述的孤立点模式条件,是当前需要解码节点的父节点相邻的6个邻居节点中被占用的节点数量parentNeighbourCount是否超过T,对于parentNeighbourCount小于等于T的即为满足孤立点模式条件,parentNeighbourCount大于T的即为不满足孤立点模式条件,T是大于等于0的自然数。
7.权利要求5所述的几何孤立点的解码装置,其特征还在于包括:
single_flag解码模块:解码所述额外的1比特标识符single_flag时,采用基于上下文的自适应二进制算术解码,根据当前需要解码节点的父节点相邻6个邻居节点中被占用的节点数量parentNeighbourCount信息建立上下文模型,或者根据当前需要解码节点的相邻已解码的3个邻居节点中被占用的节点数量childNeighbourCount建立上下文模型,或者结合parentNeighbourCount和childNeighbourCount两个信息建立上下文模型。
8.权利要求5所述的几何孤立点的解码装置,其特征还在于包括:
孤立点降精度表达模块:所述的解码局部坐标可以解码一定的降精度表达的局部坐标,局部坐标的解码位宽depthMax从码流头中获得,xyz方向各自解码depthMax个二进制符号,即局部坐标的前depthMax位从码流信息中解码获得,depthMax位之后的比特位直接解码为0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010822353.5A CN114078170A (zh) | 2020-08-16 | 2020-08-16 | 一种点云几何孤立点解码的方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010822353.5A CN114078170A (zh) | 2020-08-16 | 2020-08-16 | 一种点云几何孤立点解码的方法与装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114078170A true CN114078170A (zh) | 2022-02-22 |
Family
ID=80280763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010822353.5A Pending CN114078170A (zh) | 2020-08-16 | 2020-08-16 | 一种点云几何孤立点解码的方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114078170A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024120325A1 (zh) * | 2022-12-09 | 2024-06-13 | 维沃移动通信有限公司 | 点云编码方法、点云解码方法及终端 |
-
2020
- 2020-08-16 CN CN202010822353.5A patent/CN114078170A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024120325A1 (zh) * | 2022-12-09 | 2024-06-13 | 维沃移动通信有限公司 | 点云编码方法、点云解码方法及终端 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111699695B (zh) | 用于对经编码数据集进行解码的方法、设备和存储介质 | |
JP2022521680A (ja) | ポイントクラウドのジオメトリ復号及び符号化のための暗示的な四分木又は二分木ジオメトリ分割 | |
CN112995662B (zh) | 一种点云的属性熵编码和熵解码的方法及设备 | |
WO2021196392A1 (zh) | 一种点云几何编码方法、解码方法、编码设备及解码设备 | |
US11106735B2 (en) | Directed graph compression | |
WO2015007207A1 (zh) | 目标图像块的解码方法和编码方法以及解码器和编码器 | |
JP5456903B2 (ja) | メッシュ・モデルを符号化する方法及び装置、符号化されたメッシュ・モデル、並びに、メッシュ・モデルを復号化する方法及び装置 | |
CN103858433A (zh) | 分层熵编码及解码 | |
US10547324B2 (en) | Data compression coding method, apparatus therefor, and program therefor | |
US10003794B2 (en) | Terminable spatial tree-based position coding and decoding | |
CN106067824B (zh) | 一种基于二联密码子的测序数据压缩方法 | |
CN116506073A (zh) | 一种工业计算机平台数据快速传输方法及系统 | |
CN113630125A (zh) | 数据压缩、编码解压缩方法、装置、电子设备及存储介质 | |
EP4354864A1 (en) | Entropy encoding/decoding methods and apparatuses | |
CN115882866A (zh) | 一种基于数据差值特征的数据压缩方法 | |
CN114078170A (zh) | 一种点云几何孤立点解码的方法与装置 | |
WO2013007171A1 (en) | System and method for encoding and decoding a bitstream for a 3d model having repetitive structure | |
AU2012283580A1 (en) | System and method for encoding and decoding a bitstream for a 3D model having repetitive structure | |
Shantagiri et al. | Pixel size reduction loss-less image compression algorithm | |
CN115865099B (zh) | 基于霍夫曼编码的多类型数据分段压缩方法及系统 | |
CN115474044B (zh) | 一种Bayer域图像有损压缩方法 | |
JP6005273B2 (ja) | データストリームの符号化方法、送信方法、伝送方法、データストリームを符号化するための符号化装置、送信装置、および、伝送装置 | |
EP2783509A1 (en) | Method and apparatus for generating a bitstream of repetitive structure discovery based 3d model compression | |
CN106992786B (zh) | 一种基带数据压缩方法、装置和系统 | |
CN115102934A (zh) | 点云数据的解码方法、编码方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |