掌桥专利:专业的专利平台
掌桥专利
首页

几何点云编码中的属性编码

文献发布时间:2024-07-23 01:35:21


几何点云编码中的属性编码

相关申请的交叉引用

本申请要求于2021年8月25日提交的发明名称为“G-PCC的灵活属性编码方法”、申请号为63/260,566的美国临时专利申请的优先权,其全部内容以引入的方式并入本申请。

背景技术

本公开的实施例涉及点云编码。

点云是主要的三维(three-dimension,3D)数据表示之一,除了空间坐标之外,点云还提供与3D世界中的点相关联的属性。原始格式的点云需要大量用于存储的内存或用于传输的带宽。此外,更高分辨率点云捕捉技术的出现进而对点云的尺寸提出了更高的要求。为了使点云可用,压缩是必要的。针对点云压缩/编码(point cloud compression/coding,PCC)标准化活动提出了两种压缩技术:基于视频的PCC(video-based PCC,V-PCC)和基于几何的PCC(geometry-based PCC,G-PCC)。V-PCC方法基于3D到二维(two-dimension,2D)投影,而相反,G-PCC直接在3D空间中编码内容。为了实现直接在3D空间中编码内容,G-PCC利用数据结构,例如描述3D空间中的点位置的八叉树(octree)。

发明内容

根据本公开的一个方面,公开了一种用于解码点云的方法。点云在一维(one-dimension,1D)序列中表示,1D序列包括点的集合,每个点与一个或多个属性相关联。处理器解析码流,以获得指示1D序列中的点的集合遵循的顺序的语法元素。处理器至少部分地基于顺序,解码与点的集合相关联的属性中的至少一个属性。

根据本公开的另一方面,一种用于解码点云的系统包括用于存储指令的存储器和耦合到该存储器的处理器。点云在1D序列中表示,1D序列包括点的集合,每个点与一个或多个属性相关联。该处理器在执行指令时用于解析码流,以获得指示1D序列中的点的集合遵循的顺序的语法元素。该处理器在执行指令时也用于至少部分地基于顺序,解码与点的集合相关联的属性中的至少一个属性。

根据本公开的又一方面,公开了一种用于编码点云的方法。处理器在1D序列中表示点云。1D序列包括点的集合,点的集合遵循1D序列中的顺序并且每个点与一个或多个属性相关联。处理器至少部分地基于顺序,将与点的集合相关联的属性中的至少一个属性编码到码流中。处理器将指示顺序的语法元素编码到码流中。

根据本公开的又一方面,一种用于编码点云的系统包括用于存储指令的存储器和耦合到该存储器的处理器。该处理器在执行指令时用于在1D序列中表示点云。1D序列包括点的集合,点的集合遵循1D序列中的顺序并且每个点与一个或多个属性相关联。该处理器在执行指令时也用于至少部分地基于顺序,将与点的集合相关联的属性中的至少一个属性编码到码流中。该处理器在执行指令时还用于将指示顺序的语法元素编码到码流中。

提到这些示例性实施例不是为了限制或定义本公开,而是为了提供示例以帮助理解本公开。具体实施方式中描述了另外的实施例,并且提供了进一步的描述。

附图说明

附图被并入本文并形成说明书的一部分,示出了本公开的实施例,并且与描述一起进一步用于解释本公开的原理并使相关领域的技术人员能够做出和使用本公开。

图1示出了根据本公开的一些实施例的示例性编码系统的框图。

图2示出了根据本公开的一些实施例的示例性解码系统的框图。

图3示出了根据本公开的一些实施例的图1中的编码系统中的示例性编码器的详细框图。

图4示出了根据本公开的一些实施例的图2中的解码系统中的示例性解码器的详细框图。

图5A和图5B分别示出了根据本公开的一些实施例的G-PCC的示例性八叉树结构和对应的数字表示。

图6示出了根据本公开的一些实施例的在G-PCC的八叉树结构中的立方体的示例性结构和与相邻立方体的关系。

图7示出了根据本公开的一些实施例的表示点云的点、候选点的集合、以及预测点的集合的示例性1D序列。

图8示出了根据本公开的一些实施例的表示点云的点和具有可配置最大数量的候选点的集合的示例性1D序列。

图9示出了根据本公开的一些实施例的用于编码点云的示例性方法的流程图。

图10示出了根据本公开的一些实施例的用于点云编码中的属性编码的示例性方法的流程图。

图11示出了根据本公开的一些实施例的用于解码点云的示例性方法的流程图。

图12示出了根据本公开的一些实施例的用于点云编码中的属性编码的示例性方法的流程图。

将参考附图描述本公开的实施例。

具体实施方式

尽管讨论了一些配置和布置,但应当理解,这仅仅是出于示例性说明的目的。相关领域的技术人员将认识到,在不脱离本公开的精神和范围的情况下,可使用其他配置和布置。对于所属领域的技术人员来说,显而易见地,本公开也可用于各种其他应用中。

需要注意的是,说明书中对“一个实施例”、“一实施例”、“示例性实施例”、“一些实施例”、“某些实施例”等的引用,指示所描述的实施例可以包括特定的特征、结构、或特性,但是每个实施例不一定包括该特定的特征、结构、或特性。另外,此类短语不一定指相同的实施例。此外,当结合实施例描述特定特征、结构、或特性时,相关领域技术人员应该知悉,无论是否明确描述,这种特征、结构、或特性也可以结合其他实施例来实现。

一般来说,术语可以至少部分地从上下文中的用法来理解。例如,至少部分地取决于上下文,本文使用的术语“一个或多个”,可以用于描述单数意义上的任何特征、结构或特性,也可以用于描述复数意义上的特征、结构、或特性的组合。类似地,至少部分地取决于上下文,术语例如“一”、“一个”、或“该”也可以被理解为传达单数用法或传达复数用法。此外,术语“基于”可以被理解为不一定旨在传达因素的排他性集合,而是可以允许不一定明确描述的其他因素的存在,这也至少部分地取决于上下文。

现在将参考各种装置和方法来描述点云编码系统的各种方面。这些装置和方法将在下面的详细描述中进行描述,并在附图中通过各种模块、组件、电路、步骤、操作、处理、算法等等(统称为“元素”)来示出。这些元素可以使用电子硬件、固件、计算机软件或其任何组合来实现。这些元素是否实现为硬件、固件或软件,取决于特定的应用和施加在整个系统上的设计约束。本文中所描述的技术可用于不同点云编码应用。如本公开所描述,点云编码包括编码点云和解码点云。

点云由3D空间中的点的集合组成。3D空间中的每个点与几何位置以及相关联的属性信息(例如,颜色、反射率、强度、分类等)相关联。为了有效地压缩点云数据,可以首先压缩点云的几何结构,然后根据点云编码技术(例如,G-PCC)基于几何信息压缩包括颜色或反射率的对应属性。G-PCC已经广泛用于虚拟现实/增强现实(virtual reality/augmentedreality,VR/AR)、电信、自动驾驶汽车等娱乐和工业应用,例如,用于汽车或机器人的光探测和测距(light detection and ranging,LiDAR)扫描压缩和用于导航的高清(high-definition,HD)地图。运动图像专家组(moving picture experts group,MPEG)发布了第一版G-PCC标准,并且音频视频编码标准(audio video coding standard,AVS)也正在制定G-PCC标准。

在现有的G-PCC标准中,在编码几何信息之后,莫顿(Morton)码(又称为莫顿曲线、Z序曲线)或希尔伯特(Hilbert)码(又称为希尔伯特曲线)可以用于将3D中的点云转换成1D序列。属性编码可以遵循预定义的莫顿顺序或希尔伯特顺序。可以根据先前编码点按照莫顿顺序或希尔伯特顺序生成预测子(predictor)。可将当前点与其预测子之间的属性差异编码到码流中。在现有G-PCC标准中,莫顿码或希尔伯特码可以用于将点云立方体转换成1D序列。然而,莫顿码和希尔伯特码都不能很好地适用于所有G-PCC测试条件和测试类别(即,在所有不同的G-PCC编码模式中)。也就是说,现有的G-PCC标准缺乏灵活地、动态地选择G-PCC属性编码中的码和顺序的能力。

为了提高点云编码的灵活性,本公开提供了一种方案,该方案具有指示从点云(点云数据)转换为用于点云编码中的属性编码的1D序列中的点遵循的顺序的语法元素。因此,根据一些实施例,语法元素还指示用于将点云转换成1D序列的码。在一些实施例中,如新引入的语法元素所指示的,莫顿顺序、希尔伯特顺序、或原始输入顺序可自由地用于点云编码中的属性编码。例如,莫顿顺序/码可以用于无损几何编码和无损属性编码,而希尔伯特顺序/码可以用于其他编码模式。

图1示出了根据本公开的一些实施例的示例性编码系统100的框图。图2示出了根据本公开的一些实施例的示例性解码系统200的框图。每个系统100或系统200可应用于或集成到能够进行数据处理的各种系统和设备中,例如计算机和无线通信装置。例如,系统100或系统200可以是移动电话、台式计算机、膝上型计算机、平板电脑、车载计算机、游戏控制台、打印机、定位设备、可穿戴电子设备、智能传感器、虚拟现实(VR)设备、增强现实(AR)设备、或具有数据处理能力的任何其他合适的电子设备的全部或部分。如图1和图2所示,系统100或系统200可包括处理器102、存储器104、以及接口106。这些组件被示出为通过总线彼此连接,但是其他连接类型也是允许的。应当理解,系统100或系统200可包括用于执行本文所描述的功能的任何其他合适的组件。

处理器102可包括微处理器,例如图形处理单元(graphic processing unit,GPU)、图像信号处理器(image signal processor,ISP)、中央处理单元(centralprocessing unit,CPU)、数字信号处理器(digital signal processor,DSP)、张量处理单元(tensor processing unit,TPU)、视觉处理单元(vision processing unit,VPU)、神经处理单元(neural processing unit,NPU)、协同处理单元(synergistic processingunit,SPU)、或物理处理单元(physics processing unit,PPU)、微控制器单元(microcontroller units,MCU)、专用集成电路(application-specific integratedcircuits,ASIC)、现场可编程门序列(field-programmable gate array,FPGA)、可编程逻辑器件(programmable logic devic,PLD)、状态机、门控逻辑、分立硬件电路、以及用于执行贯穿本公开所描述的各种功能的其他合适的硬件。尽管图1和图2中仅示出了一个处理器,但应当理解,可包括多个处理器。处理器102可以是具有一个或多个处理核的硬件设备。处理器102可执行软件。软件应广义地解释为表示指令、指令集、码、码段、程序码、程序、子程序、软件模块、应用、软件应用、软件包、例程、子例程、对象、可执行文件、执行线程、过程、功能等,无论其被称为软件、固件、中间件、微码、硬件描述语言、或其他。软件可以包括用解释型语言编写的计算机指令、用编译语言编写的计算机指令、或用机器码编写的计算机指令。在广泛的软件类别下,用于指示硬件的其他技术也是允许的。

存储器104可以广泛地包括存储器(又名,主/系统存储器)和存储(又名,辅存储器)两者。例如,存储器104可以包括随机存取存储器(random-access memory,RAM)、只读存储器(read-only memory,ROM)、静态RAM(static RAM,SRAM)、动态RAM(dynamic RAM,DRAM)、铁电RAM(ferro-electric RAM,FRAM)、电可擦除可编程ROM(electricallyerasable programmable ROM,EEPROM)、光盘只读存储器(compact disc read-onlymemory,CD-ROM)或其他光盘存储器、硬盘驱动器(hard disk drive,HDD),例如磁盘存储或其他磁存储设备、闪存驱动器、固态驱动器(sol1D-state drive,SSD),或可以用于以处理器102访问和执行的指令的形式携载或存储期望的程序码的任何其他介质。广义地说,存储器104可以由任何计算机可读介质实施,例如非暂时性计算机可读介质。尽管在图1和图2中仅示出了一个存储器,但是应当理解,可以包括多个存储器。

接口106可以广泛地包括数据接口和通信接口,通信接口用于在与其他外部网络元件接收和发送信息的过程中,接收和发送信号。例如,接口106可以包括输入/输出(input/output,I/O)设备和有线或无线收发器。尽管在图1和图2中仅示出了一个存储器,但是应当理解,可以包括多个接口。

处理器102、存储器104、和接口106可以在系统100或200中以各种形式实现,用于执行点云编码功能。在一些实施例中,系统100或200的处理器102、存储器104、和接口106在一个或多个片上系统(system-on-chip,SOC)上实现(例如,集成)。在一个示例中,处理器102、存储器104、和接口106可以集成在处理操作系统(operating system,OS)环境中的应用处理(包括运行点云编码和解码应用)的应用处理器(application processor,AP)SoC上。在另一示例中,处理器102、存储器104、和接口106可以集成在用于点云编码的专用处理器芯片上,例如专用于实时操作系统(real-time operating system,RTOS)中的图像处理的GPU或ISP芯片。

如图1所示,在编码系统100中,处理器102可以包括一个或多个模块,例如编码器101。尽管图1示出编码器101在一个处理器102内,但是应当理解,编码器101可以包括一个或多个子模块,这些子模块可以在彼此靠近或远离的不同处理器上实现。编码器101(和任何对应的子模块或子单元)可以是处理器102的硬件单元(例如,集成电路的一部分),其被设计用于与其他组件或由处理器102通过执行程序的至少一部分(即,指令)来实现的软件单元一起使用。程序的指令可以存储在计算机可读介质(例如存储器104)上,并且当由处理器102执行时,该指令可以执行具有与点云编码相关的一个或多个功能的处理,例如下文详细描述的体素化、变换、量化、算术编码等。

类似地,如图2所示,在解码系统200中,处理器102可以包括一个或多个模块,例如解码器201。尽管图2示出解码器201在一个处理器102内,但是应当理解,解码器201可以包括一个或多个子模块,这些子模块可以在彼此靠近或远离的不同处理器上实现。解码器201(和任何对应的子模块或子单元)可以是处理器102的硬件单元(例如,集成电路的一部分),其被设计用于与其他组件或由处理器102通过执行程序的至少一部分(即,指令)来实现的软件单元一起使用。程序的指令可以存储在计算机可读介质(例如存储器104)上,并且当由处理器102执行时,该指令可以执行具有与视频解码相关的一个或多个功能的处理,例如下文详细描述的算术解码、去量化、逆变换、重构、合成。

图3示出了根据本公开的一些实施例的图1中的编码系统100中的示例性编码器101的详细框图。如图3所示,编码器101可包括坐标变换模块302、体素化模块304、几何分析模块306、以及算术编码模块308,以上共同用于将与点云的点相关联的位置编码到几何码流中(即,几何编码)。如图3所示,编码器101还可包括颜色变换模块310、属性变换模块312、量化模块314、以及算术编码模块316,以上共同用于将与点云的点相关联的属性编码到属性码流中(即,属性编码)。应当理解,图3中所示的每个个元素都被独立示出,以表示点云编码器中彼此不同的特性功能,并且这并不意味着每个组件由单独的硬件或单个软件的配置单元形成。也就是说,为了便于解释,每个元素被列为一个元素,并且元素中的至少两个可以组合成单个元素,或者一个元素可以拆分成多个元素以执行功能。还应理解,有些元素不是执行本公开中描述的功能的必要元素,而可以是用于改善性能的可选元素。还应理解,这些元素可以使用电子硬件、固件、计算机软件、或其任何组合来实现。这些元素是以硬件、固件、还是软件的形式实现,取决于特定的应用和施加在编码器101上的设计约束。应进一步理解,图3中所示的模块仅用于示例性目的,并且在一些示例中,编码器101可包括不同模块用于点云编码。

如图3所示,与点相关联的几何位置和属性可以单独编码。点云可以是具有位置X

在一些实施例中,几何分析模块306用于使用八叉树方案来执行几何分析。在八叉树方案下,立方体轴线对齐的边界框B可以由两个极值点(0,0,0)和(2

返回参考图3,关于属性编码,可选地,如果属性包括颜色,则颜色变换模块310可用于将每个点的红/绿/蓝(red/green/blue,RGB)颜色属性转换为YCbCr颜色属性。属性变换模块312可用于基于从几何分析模块306(例如,使用八叉树方案)得出的结果来执行属性变换,包括但不限于区域自适应分层变换(region adaptive hierarchical transform,RAHT)、基于插值的分层最邻近预测(预测变换)、以及具有更新/提升步骤的基于插值的分层最邻近预测(提升变换)。可选地,量化模块314可用于量化来自属性变换模块312的属性的变换系数,以生成与每个点相关联的属性的量化等级,从而减小动态范围。算术编码模块316可用于将得出的与每个点相关联的属性的变换系数或其量化等级算术编码到属性码流中。

在一些实施例中,可以根据相邻编码属性,(例如在由属性变换模块312进行的预测变换和提升变换中)形成预测。接着,可编码当前属性与预测之间的差异。根据本公开的一些方面,在AVS G-PCC标准中,在编码几何位置之后,莫顿码或希尔伯特码可以用于将3D空间中的点云(例如,点云立方体)转换成如图7所示的1D序列。立方体中的每个位置都会有对应的莫顿码或希尔伯特码,但一些位置可能没有任何对应的点云属性。换言之,一些位置可能是空的。属性编码可以遵循预定义的莫顿顺序或希尔伯特顺序。可以根据遵循莫顿顺序或希尔伯特顺序的1D序列中的先前编码点生成预测子。可将当前点与其预测点之间的属性差异编码到码流中。在一些实施例中,将3D空间中的点云(例如,点云立方体)转换成1D序列,该1D序列没有任何预定义的顺序,而是以其原始输入顺序(例如,收集点云数据的顺序)。也就是说,在一些示例中,属性编码可以遵循点云的原始输入顺序,而不是遵循预定义的莫顿顺序或希尔伯特顺序。换言之,1D序列中的点遵循的顺序可以是莫顿顺序、希尔伯特顺序、或原始输入顺序。

与本公开的范围一致,引入语法元素以指示1D序列中的点遵循的特定顺序,进而指示是否使用任何预定义的顺序(又称为空间填充曲线/函数或码,例如,莫顿码或希尔伯特码)将点云转换成1D序列。因此,通过引入新的语法元素,可以使用任何合适的码(例如,莫顿码或希尔伯特码)或不使用任何码将点云转换成1D序列,并且可以基于任何合适的顺序(例如,莫顿顺序、希尔伯特顺序、或原始输入顺序)执行属性编码。

在一些实施例中,语法元素(attribute_reoder_mode)是指示从点云转换的1D序列中的点遵循的顺序的两位无符号整数。例如,值“0”可以指示原始输入顺序(即,没有任何码),值“1”可以指示希尔伯特顺序(即,希尔伯特码),并且值“2”可以指示莫顿顺序(即,莫顿码)。在一些实施例中,语法元素(attribute_pred_order)是指示从点云转换的1D序列中的点遵循的顺序的一位无符号整数。例如,值“0”可以指示希尔伯特顺序(即,希尔伯特码),并且值“1”可以指示莫顿顺序(即,莫顿码)。

如上所述,点云中的每个点可与一个或多个属性(例如,颜色和反射率)相关联。指示顺序的语法元素可特定于编码一个属性或通用于编码每个属性。在一些实施例中,语法元素用于指示编码每个属性的顺序。例如,同一语法元素可用于颜色编码和反射率编码,从而易于设置。在一些实施例中,语法元素用于指示用于编码属性中的仅一个属性的顺序。例如,第一语法元素(例如,颜色索引(color_reoder_mode))可用于颜色编码,并且第二语法元素(例如,反射率索引(ref_reoder_mode))可用于反射率编码,从而更灵活。

点云的属性编码可以在不同的内容类别或编码条件(即,编码模式,例如,无损属性编码)下执行,并且不同的顺序/编码可以适用于不同的编码模式。在一些实施例中,顺序基于编码模式确定并且与编码模式相关联。在一个示例中,编码模式可以是无损编码模式,并且顺序可以是莫顿顺序。在另一示例中,编码模式可以是任何其他编码模式,且顺序可以是希尔伯特顺序。

如图7所示,为了减少存储器使用,已经指定了一些预定义数量以限制可以用于生成预测的相邻点的数量。例如,先前最多N个连续编码点中的仅最多M个点可用于编码当前属性。即,可以将n个候选点的集合作为候选,以选择在属性编码中用于预测当前点的m个预测点的集合(m≤n)。集合中的候选点数量n等于或小于最大候选点数量N(n≤N),并且集合中的预测点数量m等于或小于最大预测点数量M(m≤M)。如图7所示,如果遵循莫顿顺序、希尔伯特顺序、或原始输入顺序的1D序列中的先于当前点的相邻点的数量大于最大候选点数量N,则当前点(加灰部分)的候选点的集合中的候选点的数量n等于最大数量N;如果遵循莫顿顺序、希尔伯特顺序、或原始输入顺序的1D序列中的先于当前点的相邻点的数量大于或等于最大候选点数量N,则当前点(加灰部分)的候选点的集合中的候选点的数量n小于最大数量N,则先于当前点的所有相邻点用作当前点的候选点的集合。在图7中,最大预测点数量M设置为3,并且可以例如基于与n个候选点和当前点相关联的位置(例如,每个候选点与当前点之间的距离),从n个候选点的集合中选择3个预测点(

在一些实施例中,M和N分别设置为固定数量3和128。如果在当前点之前多于128个点已经被编码,则先前的128个相邻点中仅3个可以用于根据预定义的顺序形成属性预测子(预测点)。如果在当前点之前有少于128个编码点,则在当前点之前的所有编码点都可以作为候选点以找到预测点。在先前的最多128个候选点之中,选择最多3个预测点,这些预测点与当前点之间的“距离”(例如,欧几里得距离(Eucl1Dean distance))最近。作为一个示例,欧几里得距离d可如下定义,而其他距离度量也可以被用于其他示例中:

d=|x1-x2|+ |y1-y2|+|z1-z2| (1),

其中,(x1,y1,z1)和(x2,y2,z2)分别是当前点和候选点沿着莫顿顺序、希尔伯特顺序、或原始输入顺序的坐标。根据一些实施例,一旦选择了m个预测点(例如,3个最近的候选点),来自这m个点的加权属性平均值就可以形成为预测子以编码当前点的属性。应理解,在一些示例中,可从与当前点云有公共面/线/点的立方体中的候选点中选择预测点。

由于n个候选点的集合需要存储在存储器中并进行遍历,以选择用于编码与当前位置相关联的属性的m个预测点的集合,所以引入最大候选点数量M以限制候选点存储和搜索可能占用的存储器大小和计算资源量。然而,因为不同的点云编码系统和/或应用可能对平衡存储器/计算资源消耗和预测准确度有不同的要求,所以预定义的、固定的最大候选点数量M(例如,128)并不灵活。例如,某些点云编码系统和/或应用可以提供更多的计算资源并且具有更大的存储器,并且可能需要更高的预测准确度,这进而需要更多的候选点用于预测。相反,某些点云编码系统和/或应用可以提供更少的计算资源并且具有更小的存储器,同时要求更低的预测准确度,这进而需要更少的候选点用于预测。

在一些实施例中,动态的、可配置的最大候选点数量可用于替换预定义的、固定的最大候选点数量,用于点云编码中的属性编码,例如用于预测变换。例如,图8示出了根据本公开的一些实施例的表示点云的点和具有可配置最大数量的候选点的集合的示例性1D序列。点(P)的集合可以遵循1D序列中的莫顿顺序、希尔伯特顺序、或原始输入顺序。候选点的集合可以是遵循莫顿顺序、希尔伯特顺序、或原始输入顺序的1D序列中的先于当前点的相邻点。可以从候选点的集合中选择预测点的集合(例如,3个点

在一些实施例中,为了进一步减少码流中表示可配置的最大数量(maxNumOfNeighbors)的位数,与最大数量本身相反,索引(maxNumOfNeighbors_index)可通过固定长度编码(f(n))编码到码流中,且用于计算可配置的最大候选点数量的值。即,编码器和解码器都可以首先获得索引,然后根据索引与最大候选点数量之间的预定义关系,基于索引确定可配置的最大候选点数量。

在一个示例中,可通过以下等式确定最大候选点数量的值N:

N = 2

其中,idx表示索引值,索引值为正整数。在一些实施例中,索引值从0、1、2、以及3组成的组中选择,且最大候选点数量的值分别为128、256、512、或1024。即,可使用2位固定长度二进制数将索引编码到码流中,以用f(2)表示来表示从0至3的索引值。换句话说,在码流中仅需要两位来表示可配置的最大候选点数量的四个可能值128、256、512、以及1024,这最小化了需要在码流中传输的必要表示位。另外,通过将索引值设置为不大于3(即,可配置的最大候选点数量的值为1024),确保该方案与现有标准的一致性。

在另一示例中,可通过以下等式确定最大候选点数量的值N:

N = idx+1 << 7(3),

其中,idx表示索引值,索引值为正整数。在一些实施例中,索引值从0、1、2、3、4、5、6、以及7组成的组中选择,并且最大候选点数量的值分别是128、256、384、512、640、768、896、或1024。即,可使用3位固定长度二进制数将索引编码到码流中,以用f(3)表示来表示从0到7的索引值。

如上所述,点云中的每个点可与一个或多个属性(例如,颜色和反射率)相关联。用于设置用于属性编码的最大候选点数量的索引和用于属性编码的最大候选点数量可特定于编码一个属性或通用于编码每个属性。在一些实施例中,索引用于设置用于编码每个属性的最大候选点数量。例如,同一索引(以及得出的同一最大候选点数量)可以用于颜色编码和反射率编码,从而易于设置。在一些实施例中,索引用于设置用于编码属性中的仅一个属性的最大候选点数量。例如,第一索引(例如,颜色索引(以及得出的第一最大候选点数量))可用于颜色编码,并且第二索引(例如,反射率索引(以及得出的第二最大候选点数量))可用于反射率编码,从而更灵活。

应理解,在一些示例中,类似于上文所详细描述的最大候选点数量N,最大预测点数量M也可以具有可配置的值。

图4示出了根据本公开的一些实施例的图2中的解码系统200中的示例性解码器201的详细框图。如图4所示,解码器201可以包括算术解码模块402、几何合成模块404、重建模块406、以及坐标逆变换模块408,以上共同用于从几何码流中解码与点云的点相关联的位置(即,几何解码)。如图4所示,解码器201还可以包括算术解码模块410、去量化模块412、属性逆变换模块414、以及颜色逆变换模块416,以上共同用于从属性码流中解码与点云的点相关联的属性(即,属性解码)。应当理解,图4中所示的元素中的每个个被独立地示出以表示点云解码器中彼此不同的特性功能,并且这并不意味着每个组件由单独的硬件或单个软件的配置单元形成。也就是说,为了解释的方便,每个元素被包括以被列出为元素,并且元素中的至少两个可以被组合以形成单个元素,或者一个元素可以被分成多个元素以执行功能。还应理解,元素中的一些不是执行本公开中描述的功能的必要元素,相反而是可以是用于改善性能的可选元素。还应理解,这些元素可以使用电子硬件、固件、计算机软件或其任何组合来实现。这些元素是否实现为硬件、固件或软件,取决于特定的应用和施加在解码器201上的设计约束。应进一步理解,图4中所示的模块仅用于示例性目的,并且在一些示例中,解码器201可包括不同模块用于点云解码。

当从点云编码器(例如,编码器101)输入点云码流(例如,几何码流或属性码流)时,解码器201可以以与点云编码器相反的过程来解码输入的码流。因此,为了便于描述,可以跳过上文所述关于编码的解码的细节。算术解码模块402和算术解码模块410可用于分别解码几何码流和属性码流,以获得编码到码流中的各种信息。例如,算术解码模块410可解码属性码流,以获得与每个点相关联的属性信息,例如与每个点相关联的属性的量化等级或系数)。可选地,去量化模块412可用于去量化与每个点相关联的属性的量化等级,以获得与每个点相关联的属性的系数。除了属性信息之外,算术解码模块410可解析码流,以获得各种其他信息(例如,以语法元素的形式),例如指示用于属性编码的1D序列中的点遵循的顺序的语法元素。

属性逆变换模块414可用于执行逆属性变换,例如逆RAHT、逆预测变换、或逆提升变换,以将数据从变换域(例如,系数)变换回到属性域(例如,颜色属性的亮度和/或色度信息)。可选地,颜色逆变换模块416可用于将YCbCr颜色属性转换为RGB颜色属性。

关于几何解码,解码器201的几何合成模块404、重建模块406、以及坐标逆变换模块408可用于分别执行编码器101的几何分析模块306、体素化模块304、以及坐标变换模块302的逆操作。

与本公开的范围一致,编码器101和解码器201可用于采用改进的属性编码方案,该属性编码方案具有指示用于属性编码的1D序列中的点遵循的顺序的语法元素,以提高点云编码的编码灵活性。

图9示出了根据本公开的一些实施例的点云编码的示例性方法900的流程图。方法900可以由编码系统100的编码器101或任何其他合适的点云编码系统在变换单元级别执行。方法900可以包括如下所描述的操作902、操作904、操作906。应当理解,一些操作可以是可选的,并且一些操作可以同时执行,或者以与图9中所示的不同的顺序执行。

在操作902,在1D序列中表示点云。1D序列包括遵循顺序的点的集合,并且每个点与一个或多个属性相关联。顺序可包括莫顿顺序、希尔伯特顺序、或原始输入顺序。属性可以包括颜色或反射率中的至少一个。在一些实施例中,点的集合中的每个点还与位置相关联。在一些实施例中,莫顿码或希尔伯特码(或从3D至1D的任何其他合适的空间填充曲线)用于将3D空间中的点云(例如,点云立方体)转换成1D序列,使得1D序列中的点的集合遵循与码相对应的顺序。在一些实施例中,在没有任何码的情况下(即,以点云的原始输入顺序)将点云从3D空间转换到1D序列中,使得1D序列中的点的集合遵循原始输入顺序。例如,如图3所示,坐标变换模块302、体素化模块304、以及几何分析模块306可以共同用于在1D序列中表示点云,1D序列包括遵循顺序的点的集合,并且每个点与一个或多个属性相关联。

在操作904,至少部分地基于顺序,将与点的集合相关联的属性中的至少一个属性编码到码流中。在一些实施例中,属性包括颜色或反射率中的至少一个。在一些实施例中,顺序与属性中的每个属性(例如,颜色和反射率)相关联。在一些实施例中,顺序仅特定于至少一个属性(例如,颜色和反射率中的一个)。在一些实施例中,还至少部分地基于编码模式编码至少一个属性。在一个示例中,编码模式是无损编码模式,并且顺序是莫顿顺序。例如,如图3中所示,属性变换模块312和算术编码模块316可用于基于顺序将至少一个属性编码到属性码流中。

在一些实施例中,如图10所示,为了编码属性,在操作1002,确定用于编码点的集合中的当前点的候选点的集合。候选点的集合为遵循1D序列中的顺序先于当前点的相邻点。在操作1004,从候选点的集合中选择预测点的集合。在一些实施例中,基于与候选点和当前点相关联的位置(例如,每个候选点与当前点之间的距离),选择预测点的集合。在操作1006,基于与预测点的集合相关联的至少一个属性(例如,预测点的集合的加权属性平均值),编码与当前点相关联的至少一个属性。在一些实施例中,在操作1008,将与候选点和当前点相关联的位置编码到几何码流中。

返回参考图9,在操作906,将指示顺序的语法元素编码到码流中。例如,如图3所示,属性变换模块312和算术编码模块316可用于将语法元素编码到属性码流中,以及用于指示1D序列中的点的集合遵循的顺序。

图11示出了根据本公开的一些实施例的点云解码的示例性方法1100的流程图。方法1100可由解码系统200的解码器201或任何其他合适的点云解码系统在变换单元级别执行。方法1100可包括如下所述的操作1102和操作1104。应当理解,一些操作可以是可选的,并且一些操作可以同时执行,或者以不同于图11中所示的顺序执行。

点云在1D序列中表示,1D序列包括点的集合,每个点与一个或多个属性和位置相关联。属性可以包括颜色或反射率中的至少一个。在一些实施例中,点的集合遵循1D序列中的顺序。在一些实施例中,莫顿码或希尔伯特码(或从3D至1D的任何其他合适的空间填充曲线)用于将3D空间中的点云(例如,点云立方体)转换成1D序列,使得1D序列中的点的集合遵循与码相对应的顺序。在一些实施例中,在没有任何码的情况下(即,以点云的原始输入顺序)将点云从3D空间转换到1D序列中,使得1D序列中的点的集合遵循原始输入顺序。

在操作1102,解析码流,以获得指示1D序列中的点的集合遵循的顺序的语法元素。顺序可包括莫顿顺序、希尔伯特顺序、或原始输入顺序。在一些实施例中,顺序与属性中的每个属性(例如,颜色和反射率)相关联。在一些实施例中,顺序仅特定于至少一个属性(例如,颜色和反射率中的一个)。例如,如图4中所示,算术解码模块410可用于解析属性码流,以获得指示1D序列中的点的集合遵循的顺序的语法元素。

在操作1104,至少部分地基于顺序,解码与点的集合相关联的属性中的至少一个属性。在一些实施例中,还至少部分地基于编码模式解码至少一个属性。在一个示例中,编码模式是无损编码模式,并且顺序是莫顿顺序。例如,如图4所示,算术解码模块410和属性逆变换模块414可用于基于顺序解码属性。

在一些实施例中,如图12所示,为了解码属性,在操作1202,确定用于编码点的集合中的当前点的候选点的集合。候选点的集合为遵循1D序列中的顺序先于当前点的相邻点。在操作1204,解码几何码流,以获得与候选点和当前点相关联的位置。在操作1206,从候选点集合中选择预测点集合。在一些实施例中,基于与候选点和当前点相关联的位置(例如,每个候选点与当前点之间的距离),选择预测点的集合。在操作1208,基于与预测点的集合相关联的至少一个属性(例如,预测点的集合的加权属性平均值),确定与当前点相关联的至少一个属性。

在本公开的各方面中,本文描述的功能可以在硬件、软件、固件或其任何组合中实现。如果在软件中实现,则功能可以作为指令存储在非暂时性计算机可读介质上。计算机可读介质包括计算机存储介质。存储介质可以是可以由例如图1和图2中的处理器102的处理器可以访问的任何可用介质。作为示例而非限制,这种计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、例如磁盘存储或其它磁性存储设备的HDD、闪存驱动器、SSD,或可以用于以指令或数据结构形式携载或存储所需的程序码并且可以由例如移动设备或计算机的处理系统访问的任何其它介质。本文使用的磁盘(disk)与光盘(disc),包含CD、激光光盘、光学光盘、数字视频光盘(digital versatiledisc,DVD)、以及软盘,其中磁盘通常以磁方式复制数据,而光盘则使用激光以光学方式复制数据。上述组合也应包括在计算机可读介质的范围内。

根据本公开的一个方面,公开了一种用于解码点云的方法。点云在1D序列中表示,1D序列包括点的集合,每个点与一个或多个属性相关联。处理器解析码流,以获得指示1D序列中的点的集合遵循的顺序的语法元素。处理器至少部分地基于顺序,解码与点的集合相关联的属性中的至少一个属性。

在一些实施例中,顺序包括莫顿顺序、希尔伯特顺序、或原始输入顺序。

在一些实施例中,属性包括颜色或反射率中的至少一个。

在一些实施例中,顺序与属性中的每个属性相关联。

在一些实施例中,顺序仅特定于至少一个属性。

在一些实施例中,解码至少一个属性还至少部分地基于编码模式。在一些实施例中,顺序与编码模式相关联。

在一些实施例中,编码模式是无损编码模式,并且顺序是莫顿顺序。

在一些实施例中,为了解码至少一个属性,确定用于编码点的集合中的当前点的候选点的集合。候选点的集合为遵循1D序列中的顺序先于当前点的相邻点。在一些实施例中,基于与候选点的集合相关联的至少一个属性,解码与当前点相关联的至少一个属性。

在一些实施例中,为了解码与当前点相关联的至少一个属性,从候选点的集合中选择预测点的集合,并且基于与预测点的集合相关联的至少一个属性,确定与当前点相关联的至少一个属性。

在一些实施例中,点的集合中的每个点还与位置相关联,并且基于与候选点和当前点相关联的位置,选择预测点的集合。

根据本公开的另一方面,一种用于解码点云的系统包括用于存储指令的存储器和耦合到该存储器的处理器。点云在1D序列中表示,1D序列包括点的集合,每个点与一个或多个属性相关联。该处理器在执行指令时用于解析码流,以获得指示1D序列中的点的集合遵循的顺序的语法元素。该处理器在执行指令时也用于至少部分地基于顺序,解码与点的集合相关联的属性中的至少一个属性。

在一些实施例中,顺序包括莫顿顺序、希尔伯特顺序、或原始输入顺序。

在一些实施例中,属性包括颜色或反射率中的至少一个。

在一些实施例中,顺序与属性中的每个属性相关联。

在一些实施例中,顺序仅特定于至少一个属性。

在一些实施例中,该处理器用于还至少部分地基于编码模式,解码至少一个属性。在一些实施例中,顺序与编码模式相关联。

在一些实施例中,编码模式是无损编码模式,并且顺序是莫顿顺序。

在一些实施例中,为了解码至少一个属性,该处理器用于确定用于编码点的集合中的当前点的候选点的集合。候选点的集合为遵循1D序列中的顺序先于当前点的相邻点。在一些实施例中,为了解码,该处理器用于基于与候选点的集合相关联的至少一个属性,解码与当前点相关联的至少一个属性。

在一些实施例中,为了解码与当前点相关联的至少一个属性,该处理器还用于从候选点的集合中选择预测点的集合,并且基于与预测点的集合相关联的至少一个属性,确定与当前点相关联的至少一个属性。

在一些实施例中,点的集合中的每个点还与位置相关联,并且基于与候选点和当前点相关联的位置,选择预测点的集合。

根据本公开的又一方面,公开了一种用于编码点云的方法。处理器在1D序列中表示点云。1D序列包括点的集合,点的集合遵循1D序列中的顺序并且每个点与一个或多个属性相关联。处理器至少部分地基于顺序,将与点的集合相关联的属性中的至少一个属性编码到码流中。处理器将指示顺序的语法元素编码到码流中。

在一些实施例中,顺序包括莫顿顺序、希尔伯特顺序、或原始输入顺序。

在一些实施例中,属性包括颜色或反射率中的至少一个。

在一些实施例中,顺序与属性中的每个属性相关联。

在一些实施例中,顺序仅特定于至少一个属性。

在一些实施例中,编码至少一个属性还至少部分地基于编码模式。在一些实施例中,顺序与编码模式相关联。

在一些实施例中,编码模式是无损编码模式,并且顺序是莫顿顺序。

在一些实施例中,为了编码至少一个属性,确定用于编码点的集合中的当前点的候选点的集合。候选点的集合为遵循1D序列中的顺序先于当前点的相邻点。在一些实施例中,基于与候选点的集合相关联的至少一个属性,编码与当前点相关联的至少一个属性。

在一些实施例中,为了编码与当前点相关联的至少一个属性,从候选点的集合中选择预测点的集合,并且基于与预测点的集合相关联的至少一个属性,编码与当前点相关联的至少一个属性。

在一些实施例中,点的集合中的每个点还与位置相关联,并且基于与候选点和当前点相关联的位置,选择预测点的集合。

根据本公开的又一方面,一种用于编码点云的系统包括用于存储指令的存储器和耦合到该存储器的处理器。该处理器在执行指令时用于在1D序列中表示点云。1D序列包括点的集合,点的集合遵循1D序列中的顺序并且每个点与一个或多个属性相关联。该处理器在执行指令时也用于至少部分地基于顺序,将与点的集合相关联的属性中的至少一个属性编码到码流中。该处理器在执行指令时还用于将指示顺序的语法元素编码到码流中。

在一些实施例中,顺序包括莫顿顺序、希尔伯特顺序、或原始输入顺序。

在一些实施例中,属性包括颜色或反射率中的至少一个。

在一些实施例中,顺序与属性中的每个属性相关联。

在一些实施例中,顺序仅特定于至少一个属性。

在一些实施例中,该处理器用于还至少部分地基于编码模式,编码至少一个属性。在一些实施例中,顺序与编码模式相关联。

在一些实施例中,编码模式是无损编码模式,并且顺序是莫顿顺序。

在一些实施例中,为了编码至少一个属性,该处理器用于确定用于编码点的集合中的当前点的候选点的集合。候选点的集合为遵循1D序列中的顺序先于当前点的相邻点。在一些实施例中,为了编码,该处理器用于基于与候选点的集合相关联的至少一个属性,编码与当前点相关联的至少一个属性。

在一些实施例中,为了编码与当前点相关联的至少一个属性,该处理器还用于从候选点的集合中选择预测点的集合,并且基于与预测点的集合相关联的至少一个属性,编码与当前点相关联的至少一个属性。

在一些实施例中,点的集合中的每个点还与位置相关联,并且基于与候选点和当前点相关联的位置,选择预测点的集合。

实施例的前述描述将如此揭示本公开的一般性质,以致于其他人可以通过应用本领域技术内的知识,在不进行过度实验的情况下,在不脱离本公开的一般概念的情况下,容易地修改和/或适应这些实施例的各种应用。因此,基于在此呈现的教导和指导,这种适应和修改旨在处于所公开的实施例的等同物的含义和范围内。应当理解,这里的措辞或术语是为了描述而不是限制的目的,使得本说明书的术语或措辞将由本领域技术人员根据教导和指导来解释。

上面借助于示出指定功能及其关系的实现方式的功能构建块已经描述了本公开的实施例。为了描述的方便,这些功能构建块的边界在本文已经被任意定义。只要适当地执行指定的功能及其关系,就可以定义替换性边界。

发明内容和摘要部分可以阐述如(多个)发明人所设想的本公开的一个或多个但不是所有示例性实施例,因此,不旨在以任何方式限制本公开和所附权利要求。

上文公开了各种功能块、模块和步骤。所提供的布置是说明性的而不是限制性的。因此,功能块、模块和步骤可以以与上文提供的示例中不同的方式重排序或组合。类似地,一些实施例仅包括功能块、模块和步骤的子集,并且任何这样的子集都是允许的。

本公开的广度和范围不应受到任何上文描述的示例性实施例的限制,而应仅根据所附权利要求及其等同物来定义。

相关技术
  • 一种基于TMC3点云编码器的颜色属性编码方法
  • 点云属性解码方法和点云属性编码方法
  • 点云属性编码方法、点云属性解码方法及终端
技术分类

06120116679651