CN112272922A - 点云的二进制熵编码的方法和设备 - Google Patents
点云的二进制熵编码的方法和设备 Download PDFInfo
- Publication number
- CN112272922A CN112272922A CN201980039083.6A CN201980039083A CN112272922A CN 112272922 A CN112272922 A CN 112272922A CN 201980039083 A CN201980039083 A CN 201980039083A CN 112272922 A CN112272922 A CN 112272922A
- Authority
- CN
- China
- Prior art keywords
- volume
- context
- occupancy
- bit
- sub
- 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 84
- 230000009467 reduction Effects 0.000 claims abstract description 64
- 230000002829 reductive effect Effects 0.000 claims description 39
- 230000001419 dependent effect Effects 0.000 claims description 6
- 230000036961 partial effect Effects 0.000 abstract description 16
- 230000000873 masking effect Effects 0.000 abstract description 11
- 238000009826 distribution Methods 0.000 description 80
- 230000008569 process Effects 0.000 description 29
- 230000006870 function Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 15
- 238000007906 compression Methods 0.000 description 13
- 230000006835 compression Effects 0.000 description 13
- 238000000638 solvent extraction Methods 0.000 description 13
- 230000011218 segmentation Effects 0.000 description 9
- 238000011156 evaluation Methods 0.000 description 8
- 238000013507 mapping Methods 0.000 description 7
- 238000012360 testing method Methods 0.000 description 7
- 230000003068 static effect Effects 0.000 description 5
- 230000006872 improvement Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000004883 computer application Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010790 dilution Methods 0.000 description 2
- 239000012895 dilution Substances 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000002310 reflectometry Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 238000003066 decision tree Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000007670 refining Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000009827 uniform distribution Methods 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
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/001—Model-based coding, e.g. wire frame
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/005—Statistical coding, e.g. Huffman, run length coding
-
- 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Image Processing (AREA)
Abstract
用于编码点云的方法和设备。使用二进制熵编码来对比特序列进行编码,该比特序列以信号通知用于体积的子体积的占用模式。上下文可以基于邻居配置和比特序列的先前编码的比特的部分序列。做出关于是否应用上下文减少操作的确定,并且如果是,则该操作减少可用上下文的数目。示例性的上下文减少操作包括基于以下项来减少邻居配置:由与先前编码的比特相关联的子体积的屏蔽、对空的邻居配置的特殊处理、以及基于统计的上下文合并。
Description
技术领域
本申请总体上涉及点云压缩,并且尤其涉及用于点云的二进制熵编码的方法和设备。
背景技术
数据压缩被用于通信和计算机联网中以高效地存储、传输和再现信息。对三维对象或空间的表示的兴趣日益浓厚,因为它可能涉及大型数据集,而对于它们而言,高效和有效的压缩将是非常有用和有价值的。在某些情况下,可以使用点云表示三维对象或空间,点云是点的集合,每个点具有三个坐标位置(X,Y,Z),并且在某些情况下还具有其他属性,例如颜色数据(例如亮度和色度)、透明度、反射率、法线矢量等。点云可以是静态的(单个时间点的固定对象或环境/对象的快照),也可以是动态的(点云的时间序列)。
点云的示例应用包括地形和地图应用。自主车辆和其他机器视觉应用可能依赖以环境3D扫描的形式的点云传感器数据,诸如来自LiDAR扫描仪。虚拟现实模拟可能依赖于点云。
将会意识到,点云可能涉及大量数据,并且快速而准确地压缩(编码和解码)该数据非常重要。因此,提供更高效和/或有效地压缩点云数据的方法和设备将是有利的。此外,将有利的是找到用于编码点云的方法和设备,其可以使用上下文自适应二进制熵编码来实现而无需管理过多数量的上下文。
附图说明
现在将通过示例方式参考示出本申请示例实施例的附图,在附图中:
图1示出了示例点云编码器的简化框图;
图2示出了示例点云解码器的简化框图;
图3示出了用于编码的示例部分子体积和相关联的树结构;
图4示出了八叉树的递归分割和编码;
图5示出了来自八叉树的示例立方体内的示例扫描模式;
图6示出了示例立方体内的示例占用模式;
图7以流程图形式示出了一种用于编码点云的示例方法;
图8示出了示例八叉树的一部分;
图9示出了邻居子体积的示例;
图10示出了示例邻居配置,其示出了邻居节点之间的占用;
图11示意性地示出了使用依赖于父模式的上下文的点云熵编码的过程的一个示意性实施例;
图12示出了使用依赖于邻居配置的上下文的点云熵编码的过程的示意性实施例;
图13以流程图形式示出了用于解码压缩点云数据的比特流的示例方法;
图14示出了编码器的示例简化框图;
图15示出了解码器的示例简化框图;
图16示出了示例笛卡尔坐标系以及示例绕轴的旋转和/或反射;
图17示出了围绕Z轴的旋转的一次或几次迭代下的邻居配置的不变性的类;
图18示出了用于垂直反射的邻居配置的不变性的类;
图19示出了旋转和反射两者的不变性的类;
图20示出了在三个旋转和反射下的不变性的类;
图21示出了针对占用模式的非二进制编码与级联二进制编码之间的等效关系;
图22以流程图形式示出了一种用于使用二进制编码在基于树的点云编码器中编码占用模式的示例方法;
图23示出了示例编码器的一部分的简化框图;
图24示意性地示出了基于邻居屏蔽的示例上下文减少操作;
图25示出了基于邻居屏蔽的另一示例上下文减少操作;以及
图26以流程图形式示出了一种使用组合上下文减少来对占用模式进行二进制编码的方法的示例。
在不同的附图中可能已经使用了相似的附图标记来表示相似的组件。
具体实施方式
本申请描述了编码和解码点云的方法,以及用于编码和解码点云的编码器和解码器。可以使用二进制熵编码来对比特序列进行编码,该比特序列以信号通知用于体积的子体积的占用模式。上下文可以基于邻居配置和比特序列的先前编码的比特的部分序列。确定是否应用上下文减少操作,如果是,则该操作减少可用上下文的数量。示例上下文减少操作包括基于与先前编码的比特相关联的子体积的屏蔽来减少邻居配置、对空邻居配置的特殊处理、以及基于统计的上下文合并。可以在编码之前应用减少,并且可以在编码期间确定是否满足使用减少的上下文集合的情况。
在一个方面,本申请提供了一种对点云进行编码以生成压缩的点云数据的比特流的方法,所述点云以树结构被定义,树结构具有多个节点,所述多个节点具有父子关系并且代表体积空间的几何结构,该体积空间被递归地划分为子体积,并且包含所述点云的所述点,其中体积的子体积的占用使用比特序列被指示,所述比特序列中的每个比特指示在所述体积内按扫描顺序的相应子体积的占用,并且其中体积具有多个邻居体积,所述邻居体积的占用的模式是邻居配置,所述方法包括:针对所述体积的所述比特序列中的至少一个比特,确定上下文减少条件被满足,并在此基础上,选择减少的上下文集合,所述减少的上下文集合包含比邻居配置的计数和所述序列中的先前编码的比特的数目的乘积小的上下文;基于所述邻居体积中的至少一些邻居体积的占用状态和所述比特序列的至少一个先前编码的比特,从所述减少的上下文集合中选择用于对所述至少一个比特进行编码的上下文;使用二进制熵编码器基于所选择的上下文对至少一个比特进行熵编码以产生用于所述比特流的编码数据;以及更新所选择的上下文。
在另一方面,本申请提供了一种对压缩的点云数据的比特流进行解码以产生重构的点云的方法,所述点云以树结构被定义,所述树结构具有多个节点,所述多个节点具有父子关系,并且代表体积空间的几何结构,所述体积空间被递归地划分为子体积,并且包含所述点云的所述点,其中体积的子体积的占用使用比特序列被指示,所述比特序列中的每个比特指示在所述体积内按扫描顺序的相应子体积的占用,并且其中体积具有多个邻居体积,所述邻居体积的占用模式是邻居配置。解码的方法包括:针对所述体积的所述比特序列中的至少一个比特,确定上下文减少条件被满足,并在此基础上,选择减少的上下文集合,所述减少的上下文集合包含比邻居配置的计数和所述序列中的先前编码的比特的数目的乘积小的上下文;基于所述邻居体积中的至少一些邻居体积的占用状态和所述比特序列的至少一个先前编码的比特,从所述减少的上下文集合中选择上下文用于对所述至少一个比特进行编码;使用二进制熵解码器基于所选择的上下文对至少一个比特进行熵解码以从所述比特流产生重构的比特;以及更新所选择的上下文。
在一些实现中,所述上下文减少条件包括:确定一个或多个先前编码的占用比特与一个或多个相应子体积相关联,所述一个或多个相应子体积位于与所述至少一个比特相关联的所述子体积与所述邻居体积中的所述一个或多个邻居体积之间。在某些情况下,这可以包括确定与先前编码的比特相关联的四个子体积与特定邻居体积共享面。
在一些实现中,上下文减少条件可以包括确定比特序列的至少四个比特先前已经被编码。
在一些实现中,确定所述上下文减少条件被满足包括确定所述邻居体积的所述占用模式指示所述多个邻居体积未被占用。在那些情况中的一些情况下,所选择的减少的上下文集合可以包括与比特序列中的先前编码的比特数目相对应的多个上下文,并且可选地,选择上下文可以包括基于比特序列中的先前编码的比特的总和来选择上下文。
在一些实现中,上下文减少条件可以包括确定比特序列中的至少阈值数目的比特已经被预先编码,并且减少的上下文集合可以包括查找表,查找表将邻居配置和比特序列中先前编码比特的模式的每种可能组合映射到较少的上下文。在一些示例中,可以基于以下各项来生成查找表:基于确定各对可用上下文之间的距离测量小于阈值的值,将可用上下文迭代分组分为多个类,并且多个类中的每个类可以在较小的集合中包括相应的上下文,并且对于邻居配置和比特序列中的先前编码比特的模式的每种可能组合,可以存在可用的上下文。
在一些实现中,至少一些邻居体积是与该体积共享至少一个面的邻居体积。
在另一方面,本申请描述了被配置为实现这种编码和解码方法的编码器和解码器。
在另一方面,本申请描述了存储计算机可执行程序指令的非暂态计算机可读介质,该计算机可执行程序指令在被执行时使一个或多个处理器执行所描述的编码和/或解码方法。
在另一方面,本申请描述一种包含程序指令的计算机可读信号,该程序指令在由计算机执行时使计算机执行所描述的编码和/或解码方法。
本领域的普通技术人员将从结合附图对示例的以下描述进行回顾来理解本申请的其他方面和特征。
关于本发明的一个方面或实施例描述的任意特征也可以关于一个或多个其他方面/实施例来使用。通过参考本文描述的实施例,本发明的这些和其他方面将变得显而易见并且被说明。
有时在以下描述中,术语“节点”、“体积”和“子体积”可以互换使用。将意识到,节点与体积或子体积相关联。节点是树上的特定点,其可以是内部节点或叶节点。体积或子体积是节点表示的有限物理空间。在某些情况下,术语“体积”可用于表示为包含点云而定义的最大有界空间。为了建立互连节点的树结构以对点云数据进行编码的目的,可以将体积递归地划分为多个子体积。
在本申请中,术语“和/或”旨在覆盖所列元件的所有可能的组合和子组合,包括单独列出的元件中的任一元件、任意子组合或所有元件,而不必排除其他元素。
在本申请中,短语“…或…中的至少一个”旨在覆盖所列出的元素中的任意一个或多个,包括元素中的单独所列出的元素中的任意一个、任意子组合或全部元素,而不必排除任意其他元素,也不必要求所有元素。
点云是三维坐标系中的点集合。这些点通常旨在表示一个或多个对象的外表面。每个点都有在三维坐标系中的位置(地点)。该位置可以由三个坐标(X,Y,Z)表示,它们可以是笛卡尔坐标系或任意其他坐标系。这些点可能具有其他关联属性,诸如颜色,在某些情况下也可能是三分量值,诸如R、G、B或Y、Cb、Cr。取决于点云数据的所需应用,其他相关属性可以包括透明度、反射率、法向矢量等。
点云可以是静态的或动态的。例如对象或地形的详细扫描或映射可能是静态点云数据。用于机器视觉目的的基于LiDAR的环境扫描可能是动态的,因为点云(至少潜在地)随时间变化,例如在每次连续扫描体积时。因此,动态点云是点云的按时间排序的序列。
点云数据可以用于多个应用中,包括保护(历史或文化物体的扫描)、地图绘制、机器视觉(诸如自动或半自动汽车)和虚拟现实系统,以给出一些示例。用于如机器视觉的应用的动态点云数据可能与用于保护目的的静态点云数据完全不同。例如汽车视觉通常涉及相对小的分辨率、无色、高度动态的点云,这些点云是通过具有较高捕获频率的LiDAR(或类似)传感器获得的。这种点云的目的不是供人类消耗或查看,而是用于决策过程中的机器对象检测/分类。例如典型的LiDAR框架包含数万量级的点,而高质量的虚拟现实应用则需要数百万个点。可以预期,随着计算速度的提高和新应用的出现,随着时间的流逝将需要更高分辨率的数据。
尽管点云数据是有用的,但是缺乏有效和高效的压缩,即编码和解码过程,可能会妨碍采用和部署。在编码点云时,在如音频或视频的其他数据压缩情况下不会出现的特殊挑战是对点云的几何形状进行编码。点云往往分布稀疏,这使得高效编码点的位置更具挑战性。
用于编码点云数据的较普遍的机制之一是通过使用基于树的结构。在基于树的结构中,将点云的有界三维体积递归划分为子体积。树的节点对应于子体积。是否进一步划分子体积的决策可以基于树的分辨率和/或子体积中是否包含任意点。叶节点可以具有占用标志,该占用标志指示其相关联的子体积是否包含点。分割标志可以以信号通知节点是否具有子节点(即,当前体积是否已被进一步分割为子体积)。在某些情况下,可以对这些标志进行熵编码,并且在某些情况下,可以使用预测编码。
常用的树结构是八叉树。在这种结构中,体积/子体积都是立方体,子体积的每个分割都会产生另外八个子体积/子立方体。另一种常用的树结构是KD树,其中体积(立方体或矩形长方体)被正交于其中轴中的一个轴的平面递归分为两部分。八叉树是KD树的特例,其体积被三个平面划分,每个平面与三个轴之一正交。这两个示例均涉及立方体或矩形长方体;然而,本申请不限于这种树结构,并且在一些应用中,体积和子体积可以具有其他形状。体积的分区并不一定要分为两个子体积(KD树)或八个子体积(八叉树),而可能涉及其他分区,包括划分为非矩形形状或涉及不相邻的子体积。
为了便于解释,本申请可以参考八叉树,因为八叉树是用于汽车应用的流行的候选树结构,但是应当理解,本文所述的方法和设备可以使用其他树结构来实现。
现在参考图1,其示出了根据本申请的方面的点云编码器10的简化框图。点云编码器10包括树构建模块12,该树构建模块12用于接收点云数据并生成树(在该示例中为八叉树),该树表示包含点云的体积空间的几何形状,并指示来自点云的点在该几何形状中的位置或地点。
用于创建八叉树以编码点云的基本过程可以包括:
1.从坐标系统中包含点云的边界体积(立方体)开始
2.将体积分成8个子体积(八个子立方体)
3.对于每个子体积,如果子体积为空,则用0标记子体积,如果存在至少有一个点,则用1标记。
4.对于标记为1的所有子体积,重复(2)分割这些子体积,直到达到最大分割深度
5.对于最大深度的所有叶子子体积(子立方体),如果叶子立方体不是空的,则用1标记叶子子体积,否则用0。
上面的过程可以描述为占用等于分割过程,其中分割意味着占用,其约束是存在最大深度或分辨率,超过该最大深度或分辨率将不会发生进一步分割。在这种情况下,单个标志以信号通知节点是否被分割,因此是否被至少一个点占用,反之亦然。在最大深度处,标志发出信号通知占用,无法进一步分割。
在一些实现中,分割和占用是独立的,使得节点可以被占用并且可以被分割或可以不被分割。此实现有两种变体:
1.先分割后占用。信号标志指示是否分割节点。如果分割,则该节点必须包含点-分割意味着占用。否则,如果该节点不被分割,则另一占用标志以信号通知该节点是否包含至少一个点。因此,当节点没有进一步分割时,即它是一个叶节点,该叶节点必须具有一个关联的占用标志,以指示其是否包含任意点。
2.先占用然后分割。单个标志指示该节点是否被占用。如果未被占用,则不会发生分割。如果已被占用,则对分割标记进行编码以指示该节点是否进一步分割。
不管使用上述过程中的哪个过程来构建树,其都可以按照预定的顺序(以宽度优先或深度优先,并根据每个划分的子体积内的扫描模式/顺序)被遍历,以从标志中产生一系列比特(占用和/或分割标志)。这可以称为树的序列化或二值化。如图1所示,在该示例中,点云编码器10包括二值化器14,二值化器14用于对八叉树进行二值化以产生表示树的二值化数据的比特流。
然后,可以使用熵编码器16对该比特序列进行编码,以产生压缩比特流。熵编码器16可以使用上下文模型18对比特序列进行编码,该上下文模型18基于熵编码器16的上下文确定来指定用于编码比特的概率。可以在对每个比特或定义的比特集合进行编码之后自适应地更新上下文模型18。在某些情况下,熵编码器16可以是二进制算术编码器。在一些实现中,二进制算术编码器可以采用上下文自适应二进制算术编码(CABAC)。在一些实现中,可以使用除算术编码器之外的编码器。
在某些情况下,熵编码器16可以不是二进制编码器,而是可以对非二进制数据进行操作。来自树构建模块12的输出八叉树数据可以不以二进制形式被评估,而是可以被编码为非二进制数据。例如在八叉树的情况下,子体积内按其扫描顺序的八个标志(例如占用标志)可被视为28-1比特数(例如整数的值介于1到255之间,因为该值0对于分割子体积不可能的,即如果完全未被占用,则不会被分割)。在一些实现中,该数字可以由熵编码器使用多符号算术编码器来编码。在子体积,例如立方体内,定义此整数的标志序列可以被称为“模式”。
与视频或图像编码一样,点云编码可以包括预测性操作,在该预测性操作中做出了努力以预测子体积的模式。预测可以是空间的(取决于相同点云中以前编码的子体积)或时间的(取决于点云的时间顺序序列中的先前编码的点云)。
在图2中示出了对应于编码器10的示例点云解码器50的框图。点云解码器50包括使用由编码器10使用的相同上下文模型54的熵解码器52。熵解码器52接收压缩数据的输入比特流,并对数据进行熵解码以产生解压缩比特的输出序列。然后,该序列由树重构器56转换为重构的点云数据。树重构器56根据解压缩的数据和对树数据被二值化的扫描顺序的知识来重构树结构。因此,树重构器56能够从点云重构点的位置(受制于树编码的分辨率)。
图3中示出了示例性部分子体积100。在该示例中,为了易于说明,以二维方式示出了子体积100,并且子体积100的尺寸为16x16。应当注意的是,该子体积已被划分为四个8x8子正方形,其中两个已进一步细分为4x4子正方形,其中三个进一步被划分为2x2子正方形,而2x2子正方形之一然后被划分为1x1正方形。1x1正方形是树的最大深度,并且代表位置点数据的最高分辨率。来自点云的点在图中被示出为点。
在子体积100的右侧示出了树102的结构。在树102的右侧示出了以预定义的广度优先扫描顺序获得的分割标志104的序列和对应的占用标志106的序列。将观察到,在该示意性示例中,对于每个未被分割的子体积(节点)存在占用标记,即,其具有被设置为零的相关联的分割标记。这些序列可以被熵编码。
图4中示出了采用占用分割条件的另一个示例。图4示出了八叉树150的递归分割和编码。图中仅示出了八叉树150的一部分。FIFO 152被示为处理用于分割的节点,以示出本过程的广度优先性。FIFO 152输出在FIFO 152中排队的占用节点154,以便在对其父节点156进行处理之后进行进一步分割。树构建器将与占用节点154相关联的子体积分割为八个子体积(立方体)并确定他们的占用。可以通过每个子体积的占用标志来指示占用。在规定的扫描顺序中,标记可以被称为节点154的占用模式。该模式可以由整数来指定,该整数表示与预扫描顺序中的子体积相关联的占用标记的序列。对于八叉树,模式是范围[1,255]内的整数。
然后,熵编码器基于上下文模型指定的概率,使用非二进制算术编码器对该模式进行编码。在该示例中,概率可以是基于初始分布模型的模式分布并且被自适应地更新。在一个实现中,模式分布实际上是在编码期间遇到每个模式的次数(从1到255的整数)的计数器。在对每个子体积进行编码之后,可以更新模式分布。可以根据需要对模式分布进行归一化,因为模式的相对频率与概率评估密切相关,而与绝对计数无关。
基于该模式,然后被占用的那些子节点(例如具有标志=1)被推送到FIFO 152中,以依次进行进一步分割(提供这些节点不是树的最大深度)。
现在参考图5,图5示出了八叉树的示例立方体180。立方体180细分为八个子立方体。读取标志的扫描顺序将产生八比特字符串,该八比特字符串可以二进制形式读取为整数[1,255]。基于扫描顺序和字符串中每个子立方体标志的最终比特位置,这些子立方体具有图5所示的值。假设编码器和解码器两者均使用相同的扫描顺序,则扫描顺序可以是子立方体的任何序列。
作为示例,图6示出其中四个“前”子立方体被占据的立方体180。基于占用的子立方体是立方体1+4+16+64,这将对应于模式85。整数模式编号指定子立方体中的占用模式。
八叉树表示,或更一般地,任意树表示,在表示具有空间相关性的点时是高效的,因为树倾向于分解点坐标的高阶比特。对于八叉树,每个深度级别针对每个组件以每次精炼八比特的开销将子体积内的点的坐标精炼一比特。通过对与每个树节点关联的分割信息(即模式)进行熵编码,可以获得进一步的压缩。进一步的压缩是可能的,因为模式分布不均匀-非均一性是相关性的另一个结果。
当前系统中的一个潜在的低效率是模式分布(例如在树的先前编码的节点中看到的模式编号的直方图)是在对点云进行编码的处理中开发的。在某些情况下,模式分布可以被初始化为等概率(equiprobable),或者可以被初始化为其他预定分布;但是使用一种模式分布意味着上下文模型不会考虑或利用局部几何相关性。
在欧洲专利申请No.18305037.6,本申请人描述了一种方法和设备,该方法和设备用于基于来自特定节点附近的先前编码节点的一些占用信息,在将用于对特定节点的占用模式进行编码的可用模式分布中进行选择。在一个示例实现中,从父级到特定节点的占用模式获得占用信息。在另一示例实现中,从邻近特定节点的一个或多个节点获得占用信息。欧洲专利申请No.18305037.6通过引用并入本文。
现在参考图7,其以流程图形式示出了一种对点云进行编码的示例方法200。在该示例中的方法200涉及对占用的节点(子体积)进行递归分割以及对树进行广度优先遍历以进行编码。
在操作202中,编码器确定当前节点的占用模式。当前节点是已占用的节点,其已被分成八个子节点,每个子节点对应于一个相应的子立方体。当前节点的占用模式按扫描顺序指定八个子节点的占用。如上所述,可以使用1和255之间的整数来指示这种占用模式,例如八比特二进制字符串。
在操作204中,编码器从概率分布集合中选择概率分布。概率分布的选择基于来自附近的先前编码的节点的一些占用信息,即,至少一个与当前节点为邻居的节点。在一些实施例中,如果两个节点与共享至少一个面的相应子体积相关联,则这两个节点是邻近的。在更广义的定义中,如果节点共享至少一个边缘,则它们是邻居的。在更广泛的定义中,如果两个节点共享至少一个顶点,则它们是邻近的。当前节点是子节点的父模式将当前节点和七个兄弟节点的占用数据提供给当前节点。在一些实现中,占用信息是父模式。在一些实现中,占用信息是邻居节点集合的占用数据,该邻居节点的集合包括与当前节点在树的深度级别相同但具有不同父节点的节点。在某些情况下,这些的组合是可能的。例如邻居节点集合可以包括一些兄弟节点和一些非兄弟节点。
一旦选择了概率分布,如操作206所示,编码器随后使用选择的概率分布对当前节点的占用模式进行熵编码。然后,在操作208中,基于占用模式来更新所选的概率分布,例如它可以增加与该占用模式相对应的计数。在操作210中,编码器评估是否还有其他节点要编码,如果是,则返回操作202以对下一个节点进行编码。
在操作204中的概率分布选择将基于附近的先前编码的节点的占用数据。这样,允许编码器和解码器两者独立进行相同的选择。对于下面的概率分布选择的讨论,将参考图8,其示意性地示出了包括当前节点302的部分八叉树300。当前节点302是被占用的节点并且正在被评估以进行编码。当前节点302是父节点306的八个孩子之一,父节点306进而又是祖父母节点(未示出)的孩子。当前节点302被分成八个子节点304。当前节点302的占用模式基于子节点304的占用。例如如图所示,使用黑点是占用节点的约定,占用模式可以是00110010,即模式50。
当前节点302具有兄弟节点308,该兄弟节点308具有相同父节点306。父模式是父节点306的占用模式,如图所示将为00110000,即模式48。父模式可以用作选择用于对当前节点的占用模式进行熵编码的合适概率分布的基础。
图9示出了当前节点周围的邻居的集合,其中邻居被定义为共享面的节点。在此示例中,节点/子体积是立方体,并且图像中心的立方体具有六个邻居,每个而一个邻居。在八叉树中,将意识到,当前节点的邻居将包括三个兄弟节点。它还将包括没有相同父节点的三个节点。因此,一些邻居节点的占用数据将是可用的,因为它们是兄弟,但是某些邻居节点的占用数据可能是可用的,也可能是不可用的,这取决于这些节点先前是否已编码。特殊处理可能适用于处理失踪邻居。在一些实现中,丢失的邻居可以被假定为被占用或可以被假定为未被占用。将理解的是,邻居定义可以被扩展为包括基于共享边缘或基于共享顶点的相邻节点,以在评估中包括附加的邻居子体积。
将理解,前述过程着眼于附近节点的占用,以试图确定当前节点302的占用的可能性,以便选择更合适的(多个)上下文并使用更准确的概率对当前节点302的占用数据进行熵编码。将理解,与基于同级节点的占用状态的评估相比,与当前节点302共享面的邻居节点的占用状态可以是对当前节点302是否可能被隔离的更准确的评估,其中三个将仅共享一条边,而其中一个仅将共享一个顶点(在八叉树的情况下)。但是,对兄弟的占用状态的评估具有模块化的优势,因为用于评估的所有相关数据都是父节点的一部分,这意味着它具有可用于实现的较小的存储器占用量(footprint),而对邻居占用状态的评估涉及对树占用数据进行缓冲,以防在确定与编码未来附近节点有关的邻居占用状态时需要树占用数据。
可以按照有效地向每个邻居分配值的扫描顺序来读取邻居的占用,这与上面关于占用模式所描述的非常相似。如图所示,邻居节点有效地取值为1、2、4、8、16或32,因此有64(0到63)个可能的邻居占用配置。该值在本文中可以被称为“邻居配置”。作为示例,图10示出了邻居配置15的示例,其中邻居1、2、4和8被占用而邻居16和32为空。
在某些情况下,可以同时应用上述两个标准(父模式和邻居配置)或在两者之间进行选择。例如如果邻居可用,则可以基于邻居节点来进行概率分布选择;但是,如果一个或多个邻居不可用,因为它们来自尚未编码的节点,则概率分布选择可以恢复为基于兄弟节点的分析(父模式)。
在又一个实施例中,概率分布选择可以替代地或附加地基于祖父母模式。换句话说,概率分布选择可以基于作为父节点306的兄弟的叔叔节点的占用状态。
在又一实现中,可以将附加或替代评估计入概率分布选择。例如概率分布选择可以查看父节点的邻居节点或祖父母节点的邻居节点的占用状态。
在一些实现中,可以结合使用以上用于评估本地占用状态的标准的任意两个或更多个标准。
在非二进制熵编码器的情况下,可以通过选择概率分布来编码当前节点的占用数据。概率分布包含与当前节点的可能占用模式的数目相对应的多个概率。例如在对八叉树的占用模式进行编码的情况下,存在28-1=255个可能的模式,这意味着每个概率分布都包含255个概率。在一些实施例中,概率分布的数目可以等于选择标准中的可能占用结果的数目,即使用邻居、兄弟和/或父亲占用数据。例如在使用八叉树的父模式作为用于确定要使用的概率分布的选择标准的情况下,将存在255个概率分布,每个概率分布涉及255个概率。在邻居配置的情况下,如果将邻居被定义为共享面,则将有64个概率分布,每个分布包含255个概率。
将理解的是,由于数据的缺乏,即上下文稀释,太多的分布可能导致缓慢的适应。因此,在一些实施例中,可以将相似的模式分组以便使用相同的概率分布。例如单独的分布可以用于与完全占据、垂直定向、水平定向、主要是空的、然后是所有其他情况相对应的模式。这可以将概率分布的数目减少到大约五个。应当理解,可以形成模式的不同分组以导致不同数目的概率分布。
现在参考图11,其图示性地示出了使用依赖于父模式的上下文的点云熵编码的过程400的一个示意性实施例。在该示例中,当前节点402已被划分为八个子节点,并且其占用模式404将使用非二进制熵编码器406进行编码。非二进制熵编码器406使用从六个可能的概率分布408之一中选择的概率分布。选择基于父模式-即选择基于从父节点到当前节点402的占用信息。父模式由1到255之间的整数标识。
概率分布的选择可以是决策树,其评估模式是否对应于整个节点(例如模式=255)、水平结构(例如模式=170或85;假设Z轴垂直)、垂直结构(例如模式=3、12、48、192)、稀疏填入的分布(例如模式=1、2、4、8、16、32、64或128;即没有兄弟节点被占用)、半稀疏填充分布(当前节点和兄弟节点之间的已占用节点总数3)以及所有其他情况。为不同类别指示的示例模式仅是示例。例如“水平”类别可以包括涉及在相同水平级别上的两个或三个占据的立方体的模式。“垂直”类别可以包括涉及以壁状布置的三个或四个占据的立方体的模式。还应当理解,可以使用更细的渐变。例如“水平”类别可以进一步细分为立方体的上部中的水平和立方体的下部中的水平,每个具有不同的概率分布。具有一些相关性的其他占用模式分组可以被进行,并被分配给对应的概率分布。下面进一步阐述关于在邻居配置的上下文中的模式分组以及邻居配置之间的不变性的进一步讨论。
图12示出了使用依赖于邻居配置的上下文的点云熵编码的过程500的示意性实施例。该示例假定上面结合图9使用的邻居和邻居配置编号的定义。该示例还假定每个邻居配置都有专用的概率分布,这意味着有64种不同的概率分布。当前节点502具有要被编码的占用模式504。基于与当前节点502邻居的节点来选择概率分布。即,[0,63]中的邻居配置NC被找到,并用于选择关联的概率分布。
应当理解,在一些实施例中,可以对邻居配置进行分组,使得多于一个的邻居配置基于模式中的相似性使用相同的概率分布。在一些实施例中,该过程可以使用邻居的不同布置来用于对分布的上下文化(选择)。可以添加其他邻居,诸如在所有三个轴上对角相邻的八个邻居,或在两个轴上对角相邻的十二个邻居。也可以使用避免特定邻居的实施例,例如用于避免使用在深度优先扫描中引入附加依赖性的邻居,或仅引入对特定轴的依赖性以便于减少大树的编解码器状态的实施例。
在该示例中,以特定方式处理NC=0的情况。如果没有邻居被占用,则可以指示当前节点502被隔离。因此,过程500进一步检查到当前节点502的多少个子节点被占用。如果仅一个子节点被占用,即NumberOccupied(NO)等于1,则对标志进行编码以指示单个子节点被占用,并且使用3比特编码该节点的索引。如果多个的子节点被占用,则过程500使用NC=0概率分布来对占用模式进行编码。
现在参考图13,图13以流程图形式示出了用于解码编码点云数据的比特流的一种示例方法600。
在操作602中,解码器基于来自当前节点附近的一个或多个节点的占用信息来选择概率分布之一。如上所述,占用信息可以是从父节点到当前节点的父模式,即当前节点及其兄弟节点的占用,或者它可以是邻居节点到当前节点的占用,其可以包括一些兄弟节点。在某些实现中可以使用其他或额外的占用信息。
一旦已经选择了概率分布,则在操作604中,解码器熵使用所选择的概率分布对比特流的一部分进行解码,以重构当前节点的占用模式。占用模式由解码器用于重建树,以便重建编码的点云数据。一旦点云数据被解码,就可以将其从解码器输出以供使用,诸如用于绘制视图、分割/分类或其他应用。
在操作606中,解码器基于重构的占用模式来更新概率分布,然后,如果还有其他节点要解码,则其移至缓冲器中的下一个节点并返回操作602。
已经证明上述方法的示例实现提供了压缩改进,而编码复杂性的增加可忽略不计。尽管基于邻居的选择具有更高的计算复杂度和存储器使用,但其示出了比基于父模式的选择更好的压缩性能。在某些测试中,相对于MPEG点云测试模型,每点比特数的相对改进介于4%到20%之间。已经注意到,与利用均匀分布进行初始化相比,基于由测试数据得出的分布来初始化概率分布可以提高性能。
以上示例中的一些示例基于树编码过程,该树编码过程使用非二进制编码器来发信号通知占用模式。下面进一步介绍采用二进制熵编码器的新发展。
在对基于邻居的概率分布选择的一种变型中,可以通过利用邻居的对称性来减少分布的数目。通过置换邻居或置换模式分布,具有对称线的结构上相似的配置可以重新使用相同的分布。换句话说,可以将可以使用相同模式分布的邻居配置分组为一个类。包含多于一个邻居配置的类在本文中可以被称为“邻居配置”,因为邻居配置之一通过反射或置换那些其他配置而有效地包容(subsumes)其他邻居配置。
作为示例,考虑八个角模式NC∈[21,22,25,26,37,38,41,42],每个代表角邻居模式的对称性。NC的这些值很可能与特定但不同的节点模式相关。这些相关模式还可能遵循与邻居模式相同的对称性。举例来说,可以实现一种方法,该方法通过置换该分布的概率来重用单个分布以表示NC的多种情况。
编码器基于子节点的占用导出节点的模式编号。编码器根据邻居配置来选择分布和置换函数。编码器根据置换函数对分布中包含的概率进行重新排序,然后使用置换后的分布对模式编号进行算术编码。算术编码器对置换分布的概率的更新通过逆置换函数来映射回原始分布。
对应的解码器首先根据邻居配置来选择相同的分布和置换函数。以与编码器完全相同的方式来产生置换分布,该置换分布被算术解码器用来对模式编号进行熵解码。然后,将包括模式编号的比特分别分配给对应的孩子。
应该注意的是,可以实现相同的置换而无需分布本身的数据进行重新排序,而是引入间接级别并使用置换函数来置换对分布中给定索引的查找。
替代实施例考虑模式本身的置换而不是分布,允许分别在熵编码/解码之前或之后的置乱(shuffling)。这种方法可能更适合通过按比特置乱操作进行高效实现。在这种情况下,编码器或解码器均不会执行分布的重新排序,而是将编码模式编号的计算修改为其中ci是第i个孩子的占用状态,并且σ(i)是置换函数。一种这样的示例置换函数允许将NC=22的分布用于NC=41的分布。解码器可以使用置换函数,以使用来从编码的模式编号导出子节点的占用状态。
导出所需置换的方法可以基于邻居配置的旋转对称性,或者可以基于沿特定轴的反射。此外,该置换不必根据例如对称性来置换所有位置;而是可以使用部分置换。例如当将NC=22置换为NC=41时,对称轴上的位置可能不会被置换,从而导致映射,其中位置0、2、4、6不会被置换。在其他实施例中,仅对1和7被交换。
下文针对具有六个邻居的八叉树的特定情况提供了基于旋转对称性和反射的实施例的示例,所述六个邻居与当前立方体共享公共面。在不失一般性的前提下,如图16所示,Z轴相对于查看该附图的方向垂直延伸。邻居的相对位置,诸如“上方”(分别为“下方”),应被理解为沿Z轴在增大(分别为减小)Z方向上。相同的注释适用于沿X轴的左/右和沿Y轴的前/后。
图16分别示出了沿Z、Y和X轴的三个旋转2102、2104和2106。这三个旋转的角度为90度,即它们沿各自的轴旋转四分之一圈。
图17示出了在沿Z轴旋转2102的一次或多次迭代下,邻居配置的不变性类。该不变性表示沿着属于XY平面的任意方向的点云几何形状的相同统计行为。对于在XY平面局部近似的地球表面上行驶的汽车的用例尤其如此。水平配置是四个邻居(位于当前立方体的左、右、前和后)的给定占用,与上方邻居(2202)和下方邻居(2204)的占用无关。在旋转2102下,四个水平配置2206、2208、2210和2212属于同一类不变性。类似地,两个配置2214和2216属于同一类不变性。在旋转2102下只有六个不变性类(在类集合2218下被分组)。
垂直配置是两个邻居2202和2204的给定占用,与位于当前立方体的左、右、前和后的四个邻居的占用无关。如图18所示,有四种可能的垂直配置。因此,如果考虑相对于沿Z轴旋转2102的不变性,则有6x4=24种可能的配置。
沿Z轴的反射2108如图16所示。图18所示的垂直配置2302和2304在反射2108下属于同一不变性类。存在反射2108下的三个不变性类(分组在类2306之下)。反射2108下的不变性意味着在点云几何统计方面,向上和向下方向的行为基本上相同。对于在道路上移动的汽车,这是一个准确的假设。
如果假设在旋转2102和反射2108两者下均不变,则由两个集合2218和2306的乘积得出18种不变性类。这18种类表示在图19中。
在另外两个旋转2104和2106下应用进一步的不变性,这两个配置2401和2402属于同一类不变性。此外,两个配置2411、2412、两个配置2421、2422、三个配置2431、2432、2433、两个配置2441、2442、两个配置2451、2452、最后两个配置2461、2462属于同一类别。因此,在三个旋转(2102、2104和2106)下的不变性和反射2108导致10类不变性,如图20所示。
从以上提供的示例中,假设在三个旋转和反射下是否不变,则有效邻居配置的数目(即可以将64个邻居配置分组的类)为64、24、18或10。
在熵编码之前,模式经历相同的变换,即旋转和反射,因为邻居配置确实属于不变性类之一。这保留了不变邻居配置和编码模式之间的统计一致性。
还将理解的是,在树的遍历期间,子节点将具有相同树深度的某些邻居节点,这些邻居节点先前已经被访问过并且可以因果用作依赖。对于这些相同级别的邻居,可以不咨询父母的并置邻居,而可以使用相同级别的邻居。由于相同级别的邻居将父对象的大小减半,因此如果四个直接相邻邻近子节点(即与当前节点共享一个面的四个子节点)中的任意一个被占用,则一种配置将认为邻居已被占用。
使用二进制编码的熵编码树占用模式
在欧洲专利申请No.18305037.6中详细描述了使用邻居占用信息来编码树占用的上述技术。所描述的实施例集中于使用占用模式的非二进制熵编码,其中基于邻居占用信息来选择模式分布。但是,在某些情况下,就硬件实现而言,二进制编码器的使用可能更有效。而且,对许多概率的即时更新可能需要在算术编码器的心脏内进行快速访问存储器和计算。因此,寻找用于使用二进制算术编码器对占用模式进行熵编码的方法和设备可能是有利的。如果可以在不显著降低压缩性能的情况下完成二进制编码器,同时又防止要跟踪的上下文的数量过多,则使用二进制编码器将是有利的。
在熵公式中反映了使用二进制编码器代替非二进制编码器:
H(X1,X2|Y)=H(X1|Y)H(X2|Y,X1)
其中x=(x1,x2)是要编码的非二进制信息,Y是用于编码的上下文,即邻居配置或所选模式分布。为了将x的非二进制编码转换为二进制编码,信息(x1,x2)被分割成信息x1和x2,其可以在不增加熵的情况下分别被编码。为此,一个必须根据另一个来编码两者之一,此处x2取决于x1。可以将其扩展为x中的n比特信息。例如对于n=3:
H(X1,X2,X3|Y)=H(X1|Y)H(X2Y,X1)H(X3|Y,X1,X2)
将会理解,随着占用模式,即比特序列x变得越来越长,存在更多的条件用于对该序列中的后面的比特进行编码。对于二进制编码器(例如CABAC),这意味着要跟踪和管理的上下文数量大大增加。使用八叉树作为示例,其中占用模式是八比特序列b=b0…b7,该比特序列可以被分成八个二进制信息比特b0…b7。编码可以使用邻居配置N(或NC)来确定上下文。假设如上所述,通过将邻居配置分组为不变性类,可以将邻居配置减少到10个有效的邻居配置,则N是属于{0,1,2,…,9}的整数。为简写起见,“不变邻居配置的类”有时可在本文中有时简称为“邻居配置”,尽管应了解,可基于以下各项来实现这种减少数量的邻居配置:基于不变性的邻居配置的基于类别的分组。
图21示出了将八比特模式或序列划分为八个单独的比特以用于二进制熵编码。将注意,序列的第一比特是基于邻居配置被编码的,因此存在十个可用上下文。该序列的下一个比特是基于邻居配置和任意先前编码的比特(即比特b0)被编码的。这涉及总共20个可用上下文:从N得到的10与从b0得到的2的乘积。使用从1280个可用上下文中选择的上下文对最终比特b7进行熵编码:作为从N得到的10与从先前编码的比特b0,…,b6给出的部分模式得到的128的乘积而获得。也就是说,对于每一比特,上下文的数量(即条件/依赖关系的可能组合)是所定义的邻居配置的数目(在此示例中,基于将64个邻居配置对类的分组为10)与从n-1个先前编码的比特的有序序列中可能存在的部分模式的数目(由2n-1给定)的乘积。
结果,总共有2550个上下文要与占用模式的二进制编码保持联系。这是要跟踪的非常大数目的上下文,并且相对稀缺性可能由于上下文稀释而导致性能不佳,尤其是对于序列中的后续比特。
因此,在一个方面,本申请公开了编码器和解码器,编码器和解码器确定是否可以减少上下文集合,并且如果是,则应用上下文减少操作来实现较小的可用上下文集合,以使用二进制编码器对至少一部分占用模式进行熵编码。在另一方面,本申请还公开了编码器和解码器,其使用相同的上下文减少操作来应用一轮或多轮状态减少,以便从固定数量的上下文中执行有效的上下文选择。在一些实现中,上下文减少在生成上下文和/或算法条件的查找表之前被应用,其然后由编码器或解码器在选择合适的上下文时被使用。减少是基于可测试条件的,编码器和解码器评估该可测试条件,以确定要从哪个查找表中选择或如何从该查找表中进行索引/选择以获得所选上下文。
现在参考图22,其以流程图形式示出了一种示例方法3000,该方法3000使用二进制编码在基于树的点云编码器中编码占用模式。方法3000可以通过编码器或解码器来实现。在编码器的情况下,编码操作是编码,而在解码器的情况下,编码操作是解码。编码和解码是基于上下文的熵编码和解码。
示例方法3000用于对特定节点/体积的占用模式,即比特序列,进行熵编码。占用模式以信号通知节点/体积的子节点(子体积)的占用状态。在八叉树的情况下,有八个子节点/子体积。在操作3002中,确定邻居配置。邻居配置是与要为其编码占用模式的体积相邻的一个或多个体积的占用状态。如上所述,存在用于确定邻居配置的各种可能的实现。在一些示例中,存在10个邻居配置,并且当前体积的邻居配置基于与当前体积共享面的六个体积的占用来被标识。
在操作3004中,将到当前体积的子节点的索引i被设置为0。然后在操作3006中,进行关于上下文减少是否可能的评估。下面将详细讨论不同的可能的上下文减少操作。例如可以基于比特序列中的哪个比特(例如索引值)被编码来评估上下文减少是否是可能的。在某些情况下,对于序列中的后几比特而言,不是对于前几比特而言,上下文减少可能是可能的。对上下文减少是否是可能的评估可以例如基于邻居配置,因为某些邻居配置可以允许简化。在某些实现中,可以使用其他因素来评估上下文减少是否是可能的。例如可以提供上限Bo作为二进制编码器可用于对比特进行编码的上下文的最大数量,并且如果要编码比特的上下文的初始数量大于Bo,则应用上下文减少(否则为否),使得减少后的上下文数量最多为Bo。可以在编码器和/或解码器规范中定义这样的边界Bo,以确保能够处理Bo上下文的软件或硬件实现将始终能够对点云进行编码和/或解码,而不会在上下文数量方面产生溢出。预先知道边界的Bo还允许预期由二进制熵编码器引起的复杂性和存储器占用量,从而有助于硬件的设计。Bo的典型值是从十到几百。
如果确定上下文减少可用,则在操作3008中,应用上下文减少操作。上下文减少操作将可用上下文集合中的可用上下文数目减少为包含较少总上下文的较小集合。将回想起,可用上下文的数目可以部分取决于序列中的比特位置,即索引,因为上下文可以取决于来自比特序列的先前编码的比特的部分模式。在一些实现中,在减少之前,集合中可用的上下文的数目可以基于邻居配置的数目乘以可能具有先前编码的比特的部分模式的数目。对于索引i处的比特,其中i的范围为0到n,部分模式的数目可以由2i给出。
如上所述,在一些实现中,在编码之前执行上下文减少操作,并且所得到的减少的上下文集合是在编码操作期间可供编码器和解码器使用的上下文集合。在编码期间对减少的上下文集合的使用和/或选择可以基于一个或多个条件的评估,该一个或多个条件在使用与在操作3006中评估的条件相对应的那些减少集合来确定可以减少上下文数目之前。例如在允许使用减少的上下文集合的特定邻居配置的情况下,编码器和/或解码器可以首先确定是否满足该邻居配置条件,然后如果满足,则使用对应的减少的上下文集合。
在操作3010中,基于邻居配置和比特序列中先前编码的比特的部分模式,确定比特bi的上下文,即从可用上下文的集合(或减少集合,如果有的话)中进行选择。然后在操作3012中,通过使用所选择的上下文,由二进制编码器对当前比特进行熵编码。
如果在操作3014中索引i指示当前编码的比特是序列中的最后一个比特,即i等于imax,则编码过程前进到下一个节点。否则,在操作3016中使索引i增加,并且过程返回至操作3006。
将意识到,在一些实现中,上下文选择可以不取决于邻居配置。在某些情况下,它可能仅取决于序列中先前编码的比特的部分模式,如果有的话。
图23中示出了示例编码器3100的一部分的简化框图。在该图示中,应理解,当将对应的体积划分为子节点并循环通过保持点云的几何形状的FIFO缓冲器3104时,可获得占用模式3102。占用模式3102的编码被图示为涉及级联的二进制编码器3106,每一个二进制编码器用于模式的每一比特。在至少一些二进制编码器3106之间是上下文减少操作3108,上下文减少操作3108操作用于将可用上下文减少为较小的可用上下文集合。
尽管图23示出了一系列二进制编码器3106,但是在一些实现中,仅使用一个二进制编码器。在多于一个编码器被使用的情况下,编码可以(部分)并行化。给定一个比特对比特序列中前面的比特的上下文依赖关系,该模式的编码不一定必须完全并行化,但是通过对模式使用级联二进制编码器来实现某种程度的并行化和速度改进,可以改进流水线化。
上下文减少操作
上面的示例提出,编码过程包括关于占用模式的至少一比特的上下文减少操作,以便将可用上下文的集合减少为较小的可用上下文的集合。在这种意义上,“上下文减少操作”可以理解为标识和合并在特定比特bi的情况下被视为重复或冗余的上下文。如上所述,减少的上下文集合可以在编码之前被确定,并且可以被提供给编码器和解码器,并且编码器和解码器基于下面描述的用于减少上下文集合的相同条件,确定是否使用减少的上下文集合。
通过屏蔽(Screening)/遮蔽(Shielding)的邻居配置减少
第一示例上下文减少操作涉及基于屏蔽/遮蔽来减少邻居配置的数目。原则上,基于在邻近体积帮助指示当前体积或子体积是否被占用,邻居配置将邻近体积的占用状态作为因素引入上下文选择过程。当与当前体积中的子体积相关的比特被解码时,它们也将作为上下文选择的因数;然而,来自相邻子体积的信息可能比位于子体积距当前子体积的另一侧上的邻近体积的占用信息更重要和更具信息性。从这个意义上说,先前解码的比特与“屏蔽”或“遮蔽”邻近体积的子体积相关联。这可能意味着在这种情况下,可以忽略邻居体积的占用,因为其占用状态的相关性由当前子体积和邻居体积之间的子体积的占用状态所包容,从而允许邻居配置的数目的减少。
现在参考图24,该图图示性地示出了基于邻居屏蔽的示例上下文减少操作。该示例涉及对体积3200的占用模式进行编码。占用模式以信号通知体积3200内的八个子体积的占用状态。在此示例中,已对体积3200上半部分的四个子体积进行了编码。因此他们的占用状态是已知的。被编码的占用模式的比特与第五子体积3204相关联,该第五子体积3204位于体积3200的下半部分中,在四个先前编码的子体积之下。
该示例中的编码包括基于邻居配置来确定上下文。示出了10个邻居配置3202。包含要被编码的第五子体积3204的体积3200以浅灰色示出并且由附图标记3200指示。邻居配置3202基于与体积3200相邻并与其共享面的体积的占用状态。邻近体积包括顶部邻近体积3206。
在该示例中,通过忽略至少一些配置中的顶部邻近体积3206,可以将邻居配置的数目从10减少到7。如图24所示,其中示出顶部邻近体积3206的四个配置中的三个可以被归入不作为因素计入顶部邻近体积3206的等效配置中,从而将邻居配置的数目减少到总共7个。保持配置显示所有六个邻近体积仍然是有利的,因为没有可以将6体积配置合并(consolidated)的现有的5体积邻居配置(消除了5个元素),这意味着即使顶部邻近体积被移除,新的5元素邻居配置并且上下文中非整体减少将发生。
在该示例中,可以从邻居配置中去除顶部邻近体积3206,因为用于与第五子体积3204相关联的占用比特的编码的上下文确定将已经考虑了直接在其上的四个先前编码的子体积的占用状态,与距离较远的顶部邻近体积3206的占用状态相比,它是第五子体积的占用的可能性和方向性的更好的指示。
在上面的示例仅仅是一个示例,在上面的示例中,当对与第五子体积3204相对应的占用比特进行编码时,顶部邻近体积3206被先前编码的子体积屏蔽或遮蔽。取决于体积3200内的编码顺序,许多其他可能的屏蔽/遮蔽情况可以被实现并被利用来减少可用的邻居配置。
现在参考图25,图25示出了屏蔽/遮蔽的第二示例。在该示例中,体积3200的占用模式几乎被完全编码。要编码的子体积是第八个子体积,并且在附图的左下角被隐藏(不可见)。在这种情况下,所有其他七个子体积的占用状态均已被编码。特别是,沿着顶部的子体积(因此将邻居配置减少到总共七个)以及沿着右侧和正面的子体积。因此,除了屏蔽顶部邻近体积之外,具有先前编码的占用比特的子体积还屏蔽了前邻近体积3210和右侧邻近体积3212。这可以允许将邻居配置从总共七个减少到总共五个,如图所示。
应当理解,屏蔽的前述两个示例是示意性的,并且在某些情况下,可以合并不同的配置以考虑不同的屏蔽情况。基于先前编码的子体积的屏蔽/遮蔽的上下文减少操作是一般性的,并且不限于这两个示例,尽管将理解,它不能被应用于要编码的第一子体积的情况,因为它要求与附近子体积相关联的至少有一个预先编码的占用位,以便进行任何屏蔽/遮蔽。
还应当理解,为证明邻居配置减少而进行的屏蔽/遮蔽的程度在不同的实现中可以不同。在上面的两个示例中,与邻近体积共享一个面的所有四个子体积在该邻近体积被视为屏蔽/遮蔽并因此从邻居配置中被移除之前已被预先编码。在其他示例中,部分屏蔽/遮蔽可能是足够的,例如从共享面的一个到三个先前编码的子体积。
通过特殊情况处理的上下文减少
在某些情况下,上下文减少发生而不会丢失有用信息。在上述示例上下文确定过程中,用于对占用比特进行编码的上下文基于邻居配置,即与当前体积邻近的体积的占用模式,以及基于可归因于先前已编码的当前体积中的子体积的占用的部分模式。后一种情况导致要跟踪27=128个上下文,以相对于占用模式比特序列中的第八个比特进行跟踪。即使邻居配置被减少到总共五个,这也意味着要跟踪640个上下文。
基于比特序列的先前编码的比特具有顺序(order)的事实,上下文的数目很大,并且该顺序与评估上下文有关。但是,在某些情况下,顺序可能不包含有用的信息。例如在邻居配置为空的情况下,即N10=0,可以假定该体积内的任意点都是稀疏填充的,这意味着它们没有足够强的方向性来证明在兄弟子体积中针对不同的占用模式跟踪单独的上下文。在空的邻居关系的情况下,点云没有局部方向或拓扑,这意味着可以将基于比特序列的先前编码比特的2j个条件降低为j+1个条件。即,用于对比特序列的比特之一进行编码的上下文是基于先前编码的比特,而不是基于它们的有序模式,仅基于它们的总和。换句话说,在这种特殊情况下的熵表达式可以表示为:
H(b|n)≈H(b0|0)H(b1|0,b0)H(b2|0,b0+b1)...H(b7|0,b0+b1+...+b6)
在一些实现中,可以关于完整邻居配置进行类似的观察。在一些示例中,完整邻居配置缺乏方向性,这意味着在确定上下文时无需考虑先前编码的比特的顺序。在一些示例中,可以将这种上下文减少操作仅应用于比特序列中的一些比特,诸如该序列中的一些稍后的比特。在某些情况下,将该上下文减少操作应用于稍后的比特可以以确定与先前编码的子体积相关联的先前的比特也全部被占用为条件。
基于统计的上下文减少
统计分析可用于通过确定哪些上下文导致大致相同的统计行为然后组合它们来减少上下文。可以使用测试数据来先验地执行该分析,以开发减少的上下文集合,其然后被提供给编码器和解码器两者。在某些情况下,可以使用两次遍历(two-pass)编码在当前点云上执行分析,以开发针对特定点云数据的自定义减少上下文集合。在一些这样的情况下,可以通过使用被编码到比特流中的专用语法来将从非减少上下文集合到定制减少上下文集合的映射以信号通知给解码器。
可以通过“距离”的概念比较两个上下文。第一上下文c具有比特b等于零的概率p,并且第二上下文c’具有比特b’等于零的概率p’。c和c’之间的距离为:
d(c,c’)=|p log2p-p’log2p’|+|(1-p)log2(1-p)-(1-p’)log2(1-p’)|
使用这种相似性(距离)的测量,然后可以在过程中将上下文分组,诸如:
1.从M1上下文开始并固定阈值水平ε
2.对于给定上下文,将与给定上下文的距离小于阈值水平ε的所有上下文重新分组为一类。
3.对所有未重组的上下文重复2,直到将所有这些都放入一个类中为止
4.将M2类标记为从1到M2:这导致了强力(brute force)降低函数,该函数映射{1,2,…,M1]→[1,2,…,M2],其中M1≥M2。
用于将上下文集合映射到较小上下文集合的强力减少函数可以被存储在存储器中,以由编码器/解码器作为编码期间的上下文减少操作来应用。映射可以被存储为查找表或其他数据结构。例如强力减少函数可以仅被应用于比特序列(模式)中的后面的比特。
上下文减少操作的组合和子组合
上面描述了三个示例上下文减少操作。在某些实现中,它们中的每一个可以单独地和独立地被应用。在某些实现中,它们中的任意两个或更多个可以被组合。附加的上下文减少操作可以单独实现,也可以与上述上下文减少操作中的任意一个或多个组合实现。
图26以流程图形式示出了涉及组合上下文减少的占用模式二进制编码的方法3300的一个示例。给定在{0、1、2,...,9}中具有10个元素的邻居配置N10,方法3300对8比特二进制模式b0,b1,…,b7进行编码。评估的第一个条件是邻居配置是否为空,即N10=0。如果是,则对这些比特进行编码,而无需参考其顺序,如附图标记3302所示。否则,按照常规方式对这些比特进行编码,直到比特b4,此时编码器和解码器开始通过以下各项来使用强力上下文减少函数BRi来减少上下文的数目:将由邻居配置和先前编码的比特的部分模式定义的上下文集合映射到具有基本相似的统计结果的较小的上下文集合。
在该示例中,基于屏蔽/遮蔽,使用减少的邻居配置对最后两比特b6和b7进行编码。
所有函数可以被实现为用于减少上下文集合的大小的查找表(LUT)。在一个实际的实现中,所有的减少都归结为减少函数,即简单的LUT,这些函数将上下文作为输入并提供减少上下文作为输出。在该示例实施例中,上下文的总数已经从2550减少到576,每个减少函数BRi的输出大小分别是70、106、110和119。
具有固定数量的上下文的系统中的上下文选择
每个先前描述的上下文减少操作可以在具有静态(固定)最少数目的上下文的压缩系统中进一步使用。在这样的设计中,对于8比特二进制模式中的给定符号,应用一个或多个减少操作来确定用于对符号进行编码或解码的上下文概率模型。
对压缩性能的影响
使用10个邻居配置和非二进制编码可以为点云编码提供相对于MPEG测试模型的当前实现的压缩增益。但是,以上建议的使用10个邻居配置和使用2550上下文的级联二进制编码导致压缩效率有了更好的提高。即使在诸如使用上面详述的三种技术,使用上下文减少将上下文减少到576个总数时,二进制编码压缩仍然比使用非二进制编码的实现略胜一筹,并且比测试模型要好得多。该观察已被示出在不同的测试点云数据之间是一致的。
现在参考图14,图14示出了编码器1100的示例实施例的简化框图。编码器1100包括处理器1102、存储器1104和编码应用1106。编码应用1106可以包括计算机程序或应用,计算机程序或应用被存储在存储器1104中并包含指令,该指令在被执行时使处理器1102执行诸如本文所述的操作。例如编码应用1106可以对根据本文描述的过程对比特流进行编码和输出编码的比特流。将理解,编码应用1106可以存储在非暂态计算机可读介质上,诸如光盘、闪存设备、随机存取存储器、硬盘驱动器等。当指令被执行时,处理器1102执行指令中指定的操作和功能,以便于用作实现上述(多个)过程的专用处理器。在一些示例中,这样的处理器可以被称为“处理器电路”或“处理器电路系统”。
现在还参考图15,图15示出了解码器1200的示例实施例的简化框图。解码器1200包括处理器1202、存储器1204和解码应用1206。解码应用1206可以包括计算机程序或应用,计算机程序或应用被存储在存储器1204中并且包含指令,该指令在被执行时使处理器1202执行诸如本文所述的那些操作。将理解的是,解码应用1206可以被存储在计算机可读介质上,诸如光盘、闪存设备、随机存取存储器、硬盘驱动器等。当指令被执行时,处理器1202执行指令中指定的操作和功能,以便用作实现上述(多个)处理的专用处理器。在一些示例中,这样的处理器可以被称为“处理器电路”或“处理器电路系统”。
将理解的是,根据本申请的解码器和/或编码器可以在许多计算设备中实现,包括但不限于服务器、适当编程的通用计算机、机器视觉系统和移动设备。解码器或编码器可以通过包含用于配置一个或多个处理器以执行本文所述功能的指令的软件来实现。可以将软件指令存储在任何合适的非暂态计算机可读存储器上,包括CD、RAM、ROM、闪存等。
将理解,本文描述的解码器和/或编码器以及实现所描述的用于配置编码器或解码器的方法/过程的模块、例程、过程、线程或其他软件组件可以使用标准计算机编程技术和语言来实现。本申请不限于特定的处理器、计算机语言、计算机编程约定、数据结构、其他这样的实现细节。本领域技术人员将认识到,所描述的过程可以被实现为在易失性或非易失性存储器中存储的计算机可执行代码的一部分,作为专用集成芯片(ASIC)的一部分等。
本申请还提供了一种计算机可读信号,该信号对通过根据本申请的编码过程的应用而产生的数据进行编码。
可以对所描述的实施例进行某些修改和修改。因此,以上讨论的实施例被认为是示意性的而非限制性的。
Claims (15)
1.一种对点云进行编码以生成压缩的点云数据的比特流的方法,所述点云以树结构被定义,所述树结构具有多个节点,所述多个节点具有父子关系,并且所述多个节点代表体积空间的几何结构,所述体积空间被递归地划分为子体积并且包含所述点云的点,其中体积的子体积的占用使用比特序列被指示,所述比特序列中的每个比特指示在所述体积内按扫描顺序的相应子体积的占用,并且其中体积具有多个邻近体积,所述邻近体积的占用模式是邻居配置,所述方法包括:
针对所述体积的所述比特序列中的至少一个比特,
确定上下文减少条件被满足,并在此基础上,选择减少的上下文集合,所述减少的上下文集合包含比邻居配置的计数和所述序列中的先前编码的比特的数目的乘积小的上下文;
基于所述邻居体积中的至少一些邻居体积的占用状态和所述比特序列的至少一个先前编码的比特,从所述减少的上下文集合中选择用于对所述至少一个比特进行编码的上下文;
使用二进制熵编码器基于所选择的所述上下文对所述至少一个比特进行熵编码以产生用于所述比特流的编码数据;以及
更新所选择的所述上下文。
2.一种对压缩的点云数据的比特流进行解码以产生重构的点云的方法,所述点云以树结构被定义,所述树结构具有多个节点,所述多个节点具有父子关系并且代表体积空间的几何结构,所述体积空间被递归地划分为子体积并且包含所述点云的点,其中体积的子体积的占用使用比特序列被指示,所述比特序列中的每个比特指示在所述体积内按扫描顺序的相应子体积的占用,并且其中体积具有多个相邻体积,所述相邻体积的占用模式是邻居配置,所述方法包括:
针对所述体积的所述比特序列中的至少一个比特,
确定上下文减少条件被满足,并在此基础上,选择减少的上下文集合,所述减少的上下文集合包含比邻居配置的计数和所述序列中的先前编码的比特的数目的乘积小的上下文;
基于所述邻居体积中的至少一些邻居体积的占用状态和所述比特序列的至少一个先前编码的比特,从所述减少的上下文集合中选择用于对所述至少一个比特进行编码的上下文;
使用二进制熵解码器基于所选择的所述上下文对至少一个比特进行熵解码以从所述比特流产生重构的比特;以及
更新所选择的所述上下文。
3.根据权利要求1或2所述的方法,其中所述上下文减少条件包括:确定一个或多个先前编码的占用比特与一个或多个相应子体积相关联,所述一个或多个相应子体积位于与所述至少一个比特相关联的所述子体积与所述邻居体积中的所述一个或多个邻居体积之间。
4.根据权利要求3所述的方法,其中所述上下文减少条件包括:确定与先前编码的比特相关联的四个子体积与特定邻居体积共享面。
5.根据权利要求3或权利要求4所述的方法,其中所述上下文减少条件包括:确定所述比特序列的至少四个比特先前已经被编码。
6.根据权利要求1至5中的任一项所述的方法,其中确定所述上下文减少条件被满足包括确定所述相邻体积的所述占用模式指示所述多个相邻体积未被占用。
7.根据权利要求6所述的方法,其中基于所述多个相邻体积未被占用的确定,所选择的所述减少的上下文集合包括与所述比特序列中的先前编码的比特的数目相对应的多个上下文。
8.根据权利要求7所述的方法,其中基于所述多个相邻体积未被占用的确定,选择所述上下文包括基于所述比特序列中的先前编码的比特之和来选择所述上下文。
9.根据权利要求1至8中的任一项所述的方法,其中所述上下文减少条件包括:确定所述比特序列中的至少阈值数目的比特先前已经被编码,并且其中所述减少的上下文集合包括查找表,所述查找表将邻居配置和所述比特序列中先前编码比特的模式的每种可能组合映射到较少上下文。
10.根据权利要求9所述的方法,其中所述查找表是基于以下项而被生成的:基于确定各对可用上下文之间的距离测量小于阈值而将可用上下文迭代分组为多个类,并且其中所述多个类中的每类包括所述较小集合中的相应上下文,并且其中针对邻居配置和所述比特序列中先前编码的比特的模式的每个所述可能组合存在可用的上下文。
11.根据权利要求1至10中任一项所述的方法,其中所述相邻体积中的所述至少一些相邻体积是与所述体积共享至少一个面的邻居体积。
12.一种编码器,用于对点云进行编码以生成压缩的点云数据的比特流,所述点云以树结构被定义,所述树结构具有多个节点,所述多个节点具有父子关系并且代表体积空间的几何结构,所述体积空间被递归地划分为子体积并且包含所述点云的所述点,其中体积的子体积的占用使用比特序列被指示,所述比特序列中的每个比特指示在所述体积内按扫描顺序的相应子体积的占用,并且其中体积具有多个相邻体积,所述多个相邻体积与所述体积至少共享顶点,所述编码器包括:
处理器;
存储器;以及
编码应用,所述编码应用包含由所述处理器可执行的指令,所述指令当被执行时,使所述处理器执行根据权利要求1或从属于权利要求1时的权利要求3-11中任一项所述的方法。
13.一种解码器,用于对压缩的点云数据的比特流进行解码以产生重构的点云,所述点云以树结构被定义,所述树结构具有多个节点,所述多个节点具有父子关系并且代表体积空间的几何结构,所述体积空间被递归地划分为子体积并且包含所述点云的所述点,其中体积的子体积的占用使用比特序列被指示,所述比特序列中的每个比特指示在所述体积内按扫描顺序的相应子体积的占用,并且其中体积具有多个相邻体积,所述多个邻居体积与所述体积至少共享顶点,所述解码器包括:
处理器;
存储器;以及
解码应用,所述解码应用包含由所述处理器可执行的指令,所述指令在被执行时,使所述处理器执行根据权利要求2或从属于权利要求2时的权利要求3-11中任一项所述的方法。
14.一种非瞬态处理器可读介质,存储处理器可执行指令,所述处理器可执行指令在由处理器执行时使所述处理器执行根据权利要求1至11中任一项所述的方法。
15.一种包含程序指令的计算机可读信号,所述程序指令在由计算机执行时使所述计算机执行根据权利要求1至11中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP18305415.4 | 2018-04-09 | ||
EP18305415.4A EP3553745B1 (en) | 2018-04-09 | 2018-04-09 | Methods and devices for binary entropy coding of point clouds |
PCT/CA2019/050399 WO2019195920A1 (en) | 2018-04-09 | 2019-04-03 | Methods and devices for binary entropy coding of point clouds |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112272922A true CN112272922A (zh) | 2021-01-26 |
Family
ID=62002601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980039083.6A Pending CN112272922A (zh) | 2018-04-09 | 2019-04-03 | 点云的二进制熵编码的方法和设备 |
Country Status (6)
Country | Link |
---|---|
US (3) | US11620767B2 (zh) |
EP (2) | EP3937132A1 (zh) |
JP (1) | JP7320531B2 (zh) |
KR (1) | KR102631110B1 (zh) |
CN (1) | CN112272922A (zh) |
WO (1) | WO2019195920A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113676738A (zh) * | 2021-08-19 | 2021-11-19 | 上海交通大学 | 一种三维点云的几何编解码方法及装置 |
WO2023133710A1 (zh) * | 2022-01-11 | 2023-07-20 | Oppo广东移动通信有限公司 | 编码方法、解码方法、编码器、解码器和编解码系统 |
WO2023147742A1 (en) * | 2022-02-01 | 2023-08-10 | Beijing Xiaomi Mobile Software Co., Ltd. | Method and apparatus of encoding/decoding a slice of point cloud data |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
BR112020025049A2 (pt) * | 2018-06-15 | 2021-03-23 | Panasonic Intellectual Property Corporation Of America | método de codificação de dados tridimensionais, método de decodificação de dados tridimensionais, dispositivo de codificação de dados tridimensionais e dispositivo de decodificação de dados tridimensionais |
EP3816940A4 (en) * | 2018-06-27 | 2021-09-08 | Panasonic Intellectual Property Corporation of America | METHOD FOR CODING THREE-DIMENSIONAL DATA, METHOD FOR DECODING THREE-DIMENSIONAL DATA, DEVICE FOR CODING THREE-DIMENSIONAL DATA AND DEVICE FOR DECODING THREE-DIMENSIONAL DATA |
EP3595180B1 (en) * | 2018-07-10 | 2021-12-08 | BlackBerry Limited | Methods and devices for neighbourhood-based occupancy prediction in point cloud compression |
EP3595179B1 (en) * | 2018-07-10 | 2023-07-05 | BlackBerry Limited | Methods and devices for lossy coding of point cloud occupancy |
EP3633857B1 (en) * | 2018-10-03 | 2022-01-26 | BlackBerry Limited | Methods and devices for on-the-fly coder mapping updates in point cloud coding |
US10992947B2 (en) | 2019-06-28 | 2021-04-27 | Blackberry Limited | Planar mode in octree-based point cloud coding |
CN112334952A (zh) * | 2019-10-30 | 2021-02-05 | 深圳市大疆创新科技有限公司 | 一种点云融合方法、装置及探测系统 |
JP2023514034A (ja) | 2020-01-06 | 2023-04-05 | オッポ広東移動通信有限公司 | イントラ予測方法、装置、エンコーダ、デコーダ及び記憶媒体 |
WO2021189262A1 (zh) | 2020-03-24 | 2021-09-30 | Oppo广东移动通信有限公司 | 帧内预测方法、装置、编码器、解码器、及存储介质 |
WO2021207947A1 (en) * | 2020-04-14 | 2021-10-21 | Beijing Xiaomi Mobile Software Co., Ltd. | Method and apparatus for processing a point cloud |
US11615556B2 (en) | 2020-06-03 | 2023-03-28 | Tencent America LLC | Context modeling of occupancy coding for point cloud coding |
AU2021257883B2 (en) * | 2020-06-03 | 2023-06-15 | Tencent America LLC | Context modeling of occupancy coding for pointcloud coding |
US11941856B2 (en) * | 2020-08-18 | 2024-03-26 | Tencent America LLC | Predictive tree-based geometry coding for a point cloud |
US11948336B2 (en) * | 2020-11-16 | 2024-04-02 | Tencent America LLC | Method and apparatus for point cloud coding |
CN113518226A (zh) * | 2021-06-29 | 2021-10-19 | 福州大学 | 一种基于地面分割的g-pcc点云编码改进方法 |
KR20240047385A (ko) * | 2021-10-08 | 2024-04-12 | 엘지전자 주식회사 | 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 수신 방법 및 포인트 클라우드 데이터 수신 장치 |
WO2023081009A1 (en) * | 2021-11-04 | 2023-05-11 | Interdigital Patent Holdings, Inc. | State summarization for binary voxel grid coding |
EP4195158A1 (en) * | 2021-12-10 | 2023-06-14 | Beijing Xiaomi Mobile Software Co., Ltd. | Method and apparatus of encoding/encoding a series of data |
EP4242969A1 (en) * | 2022-03-10 | 2023-09-13 | Beijing Xiaomi Mobile Software Co., Ltd. | Encoding/decoding occupancy information of a current node of a tree representing point cloud geometry data |
WO2024049147A1 (ko) * | 2022-08-30 | 2024-03-07 | 엘지전자 주식회사 | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 |
CA3217095A1 (en) * | 2022-10-19 | 2024-04-19 | Comcast Cable Communications, Llc | Enhanced edge neighborhood for coding vertex information |
CN118175276A (zh) * | 2022-12-09 | 2024-06-11 | 维沃移动通信有限公司 | 点云编码方法、点云解码方法及终端 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009044282A2 (en) * | 2007-10-04 | 2009-04-09 | Mental Images Gmbh | Quasi-monte carlo light transport simulation by efficient ray tracing |
US20090167763A1 (en) * | 2000-06-19 | 2009-07-02 | Carsten Waechter | Quasi-monte carlo light transport simulation by efficient ray tracing |
US20120081242A1 (en) * | 2010-10-01 | 2012-04-05 | Research In Motion Limited | Methods and devices for parallel encoding and decoding using a bitstream structured for reduced delay |
US20170347100A1 (en) * | 2016-05-28 | 2017-11-30 | Microsoft Technology Licensing, Llc | Region-adaptive hierarchical transform and entropy coding for point cloud compression, and corresponding decompression |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6680974B1 (en) * | 1999-12-02 | 2004-01-20 | Lucent Technologies Inc. | Methods and apparatus for context selection of block transform coefficients |
KR100450823B1 (ko) | 2001-11-27 | 2004-10-01 | 삼성전자주식회사 | 깊이 이미지 기반 3차원 물체의 표현을 위한 노드 구조 |
EP1321894B1 (en) | 2001-11-27 | 2011-11-09 | Samsung Electronics Co., Ltd. | Apparatus and method for representing 3-dimensional objects using depth images |
US7245241B2 (en) * | 2005-11-25 | 2007-07-17 | Microsoft Corporation | Image coding with scalable context quantization |
US20110310976A1 (en) | 2010-06-17 | 2011-12-22 | Qualcomm Incorporated | Joint Coding of Partition Information in Video Coding |
US8320909B2 (en) | 2010-06-24 | 2012-11-27 | Apple Inc. | Expanded cell search and selection in a mobile wireless device |
CN109120930B (zh) * | 2011-11-04 | 2021-03-26 | 夏普株式会社 | 图像解码装置、图像编码装置及其方法 |
JP5932051B2 (ja) | 2011-11-07 | 2016-06-08 | トムソン ライセンシングThomson Licensing | 予測位置復号 |
WO2013067674A1 (en) | 2011-11-07 | 2013-05-16 | Thomson Licensing | Predictive position encoding |
CN105187843B (zh) * | 2012-04-13 | 2018-06-12 | Jvc建伍株式会社 | 图像解码装置、图像解码方法、接收装置及接收方法 |
US10095810B2 (en) * | 2014-07-01 | 2018-10-09 | Siemens Product Lifecycle Management Software Inc. | Seam modification for 3D CAD models |
KR20230042386A (ko) | 2014-08-15 | 2023-03-28 | 에이아이, 아이엔씨. | 레이더 전송을 위한 방법 및 시스템 |
JP6826368B2 (ja) | 2016-01-14 | 2021-02-03 | キヤノン株式会社 | 符号化装置及びその制御方法 |
US20170214943A1 (en) * | 2016-01-22 | 2017-07-27 | Mitsubishi Electric Research Laboratories, Inc. | Point Cloud Compression using Prediction and Shape-Adaptive Transforms |
US10694210B2 (en) | 2016-05-28 | 2020-06-23 | Microsoft Technology Licensing, Llc | Scalable point cloud compression with transform, and corresponding decompression |
EP3301914A1 (en) * | 2016-09-30 | 2018-04-04 | Thomson Licensing | Method and apparatus for encoding and decoding a large field of view video |
US10496336B2 (en) | 2016-11-17 | 2019-12-03 | Google Llc | K-D tree encoding for point clouds using deviations |
US10861196B2 (en) * | 2017-09-14 | 2020-12-08 | Apple Inc. | Point cloud compression |
JP7168591B2 (ja) * | 2018-01-26 | 2022-11-09 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置 |
US11010928B2 (en) * | 2018-04-10 | 2021-05-18 | Apple Inc. | Adaptive distance based point cloud compression |
WO2021029226A1 (ja) * | 2019-08-13 | 2021-02-18 | ソニー株式会社 | 情報処理装置および方法 |
KR102423499B1 (ko) * | 2020-01-07 | 2022-07-22 | 엘지전자 주식회사 | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 |
-
2018
- 2018-04-09 EP EP21192137.4A patent/EP3937132A1/en active Pending
- 2018-04-09 EP EP18305415.4A patent/EP3553745B1/en active Active
-
2019
- 2019-04-03 US US17/045,771 patent/US11620767B2/en active Active
- 2019-04-03 JP JP2020555094A patent/JP7320531B2/ja active Active
- 2019-04-03 KR KR1020207031930A patent/KR102631110B1/ko active IP Right Grant
- 2019-04-03 CN CN201980039083.6A patent/CN112272922A/zh active Pending
- 2019-04-03 WO PCT/CA2019/050399 patent/WO2019195920A1/en active Application Filing
-
2022
- 2022-12-21 US US18/069,466 patent/US11861869B2/en active Active
-
2023
- 2023-09-14 US US18/466,919 patent/US20240005565A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090167763A1 (en) * | 2000-06-19 | 2009-07-02 | Carsten Waechter | Quasi-monte carlo light transport simulation by efficient ray tracing |
WO2009044282A2 (en) * | 2007-10-04 | 2009-04-09 | Mental Images Gmbh | Quasi-monte carlo light transport simulation by efficient ray tracing |
US20120081242A1 (en) * | 2010-10-01 | 2012-04-05 | Research In Motion Limited | Methods and devices for parallel encoding and decoding using a bitstream structured for reduced delay |
US20170347100A1 (en) * | 2016-05-28 | 2017-11-30 | Microsoft Technology Licensing, Llc | Region-adaptive hierarchical transform and entropy coding for point cloud compression, and corresponding decompression |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113676738A (zh) * | 2021-08-19 | 2021-11-19 | 上海交通大学 | 一种三维点云的几何编解码方法及装置 |
CN113676738B (zh) * | 2021-08-19 | 2024-03-29 | 上海交通大学 | 一种三维点云的几何编解码方法及装置 |
WO2023133710A1 (zh) * | 2022-01-11 | 2023-07-20 | Oppo广东移动通信有限公司 | 编码方法、解码方法、编码器、解码器和编解码系统 |
WO2023147742A1 (en) * | 2022-02-01 | 2023-08-10 | Beijing Xiaomi Mobile Software Co., Ltd. | Method and apparatus of encoding/decoding a slice of point cloud data |
Also Published As
Publication number | Publication date |
---|---|
JP2021521679A (ja) | 2021-08-26 |
EP3553745B1 (en) | 2021-09-01 |
US20210192797A1 (en) | 2021-06-24 |
US11620767B2 (en) | 2023-04-04 |
KR20200141065A (ko) | 2020-12-17 |
EP3553745A1 (en) | 2019-10-16 |
JP7320531B2 (ja) | 2023-08-03 |
US11861869B2 (en) | 2024-01-02 |
EP3937132A1 (en) | 2022-01-12 |
WO2019195920A1 (en) | 2019-10-17 |
US20230135914A1 (en) | 2023-05-04 |
KR102631110B1 (ko) | 2024-01-29 |
US20240005565A1 (en) | 2024-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7504086B2 (ja) | 点群のバイナリエントロピコーディングのための方法およびデバイス | |
US11861869B2 (en) | Methods and devices for binary entropy coding of point clouds | |
US11361472B2 (en) | Methods and devices for neighbourhood-based occupancy prediction in point cloud compression | |
CN114930395A (zh) | 基于八叉树的点云编解码中的平面的模式的上下文确定 | |
JP7507750B2 (ja) | 点群のバイナリエントロピコーディングのための方法およびデバイス |
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 |