CN117793372A - 预测方法、编码器、解码器以及计算机存储介质 - Google Patents

预测方法、编码器、解码器以及计算机存储介质 Download PDF

Info

Publication number
CN117793372A
CN117793372A CN202311829559.0A CN202311829559A CN117793372A CN 117793372 A CN117793372 A CN 117793372A CN 202311829559 A CN202311829559 A CN 202311829559A CN 117793372 A CN117793372 A CN 117793372A
Authority
CN
China
Prior art keywords
neighbor
searched
neighbor nodes
current node
node
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
Application number
CN202311829559.0A
Other languages
English (en)
Inventor
杨付正
孙泽星
代娜
万帅
霍俊彦
马彦卓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN202311829559.0A priority Critical patent/CN117793372A/zh
Publication of CN117793372A publication Critical patent/CN117793372A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请实施例公开了一种预测方法、编码器、解码器以及计算机存储介质,应用于编码器,该方法包括:确定当前节点的N个待搜索邻居节点;若所述N个待搜索邻居节点中存在与所述当前节点共面且已编码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值;若所述N个待搜索邻居节点中存在与所述当前节点共线且已编码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值;基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值。

Description

预测方法、编码器、解码器以及计算机存储介质
技术领域
本申请实施例涉及编解码技术领域,尤其涉及一种预测方法、编码器、解码器以及计算机存储介质。
背景技术
在基于音视频编码标准(Audio Video coding Standard,AVS)的点云参考模型(Point Cloud Reference Model,PCRM)编码框架中,点云的几何信息和每个点云对应的属性信息是分开编码的。几何编码完成后,会对几何信息进行重建,而属性信息的编码将依赖于重建的几何信息。其中,属性信息编码主要是针对颜色信息的编码,以将颜色信息从空间域变换到频域,得到高频系数和低频系数,最后对系数进行量化和熵编码,生成码流。
然而,目前属性预测并没有充分利用点云的空间相关性,降低了点云的编解码效率。
发明内容
本申请实施例提供一种预测方法、编码器、解码器以及计算机存储介质,可以充分利用点云的空间相关性,从而降低码率,进而提高编解码效率。
本申请实施例的技术方案可以如下实现:
第一方面,本申请实施例提供了一种预测方法,应用于编码器,该方法包括:
确定当前节点的N个待搜索邻居节点;
若所述N个待搜索邻居节点中存在与所述当前节点共面且已编码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值;
若所述N个待搜索邻居节点中存在与所述当前节点共线且已编码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值;
基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值。
第二方面,本申请实施例提供了一种预测方法,应用于解码器,该方法包括:
确定当前节点的N个待搜索邻居节点;
若所述N个待搜索邻居节点中存在与所述当前节点共面且已解码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值;
若所述N个待搜索邻居节点中存在与所述当前节点共线且已解码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值;
基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值。
第三方面,本申请实施例提供了一种编码器,该编码器包括第一确定单元、第一判断单元和第一预测单元;其中,
所述第一确定单元,配置为确定当前节点的N个待搜索邻居节点;
所述第一判断单元,配置为若所述N个待搜索邻居节点中存在与所述当前节点共面且已编码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值;
所述第一判断单元,还配置为若所述N个待搜索邻居节点中存在与所述当前节点共线且已编码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值;
所述第一预测单元,配置为基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值。
第四方面,本申请实施例提供了一种编码器,该编码器包括第一存储器和第一处理器;其中,
第一存储器,用于存储能够在第一处理器上运行的计算机程序;
第一处理器,用于在运行所述计算机程序时,执行如第一方面所述的方法。
第五方面,本申请实施例提供了一种解码器,该解码器包括第二确定单元、第二判断单元和第二预测单元;其中,
所述第二确定单元,配置为确定当前节点的N个待搜索邻居节点;
所述第二判断单元,配置为若所述N个待搜索邻居节点中存在与所述当前节点共面且已解码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值;
所述第二判断单元,还配置为若所述N个待搜索邻居节点中存在与所述当前节点共线且已解码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值;
所述第二预测单元,配置为基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值。
第六方面,本申请实施例提供了一种解码器,该解码器包括第二存储器和第二处理器;其中,
第二存储器,用于存储能够在第二处理器上运行的计算机程序;
第二处理器,用于在运行所述计算机程序时,执行如第二方面所述的方法。
第七方面,本申请实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,所述计算机程序被第一处理器执行时实现如第一方面所述的方法、或者被第二处理器执行时实现如第二方面所述的方法。
本申请实施例提供了一种预测方法、编码器、解码器以及计算机存储介质,在编码器侧,通过确定当前节点的N个待搜索邻居节点;若所述N个待搜索邻居节点中存在与所述当前节点共面且已编码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值;若所述N个待搜索邻居节点中存在与所述当前节点共线且已编码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值;基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值。在解码器侧,通过确定当前节点的N个待搜索邻居节点;若所述N个待搜索邻居节点中存在与所述当前节点共面且已解码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值;若所述N个待搜索邻居节点中存在与所述当前节点共线且已解码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值;基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值。这样,在根据当前节点与邻居节点之间的几何空间关系进行属性预测时,由于扩大了邻居搜索范围,可以充分利用点云的空间相关性,使得预测残差更小,从而能够降低码率,进而提高编解码效率。
附图说明
图1A为相关技术提供的一种点云编码器的框架组成示意图;
图1B为相关技术提供的一种点云解码器的框架组成示意图;
图2为相关技术提供的一种当前节点与邻居节点的空间关系示意图;
图3A为相关技术提供的一种预设邻居范围内与当前节点共面且已编解码的邻居节点之间的莫顿码关系示意图;
图3B为相关技术提供的一种预设邻居范围内与当前节点共线且已编解码的邻居节点之间的莫顿码关系示意图;
图4为本申请实施例提供的一种预测方法的流程示意图;
图5为本申请实施例提供的另一种预测方法的流程示意图;
图6A为相关技术提供的一种邻居搜索范围的示意图;
图6B为本申请实施例提供的一种邻居搜索范围的示意图;
图7为本申请实施例提供的又一种预测方法的流程示意图;
图8为本申请实施例提供的一种编码器的组成结构示意图;
图9为本申请实施例提供的一种编码器的具体硬件结构示意图;
图10为本申请实施例提供的一种解码器的组成结构示意图;
图11为本申请实施例提供的一种解码器的具体硬件结构示意图。
具体实施方式
为了能够更加详尽地了解本申请实施例的特点与技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释:点云压缩(Point CloudCompression,PCC),点云参考模型(Point Cloud Reference Model,PCRM),莫顿码(Mortoncode,Morton),包围盒(bounding box),八叉树(octree),红绿蓝(Red-Green-Blue,RGB),亮度色度(Luminance-Chrominance,YUV),查找表(Look Up Table,LUT),峰值信噪比(PeakSignal to Noise Ratio,PSNR),音视频编码标准(Audio Video coding Standard,AVS)。
点云(Point Cloud)是物体表面的三维表现形式,通过光电雷达、激光雷达、激光扫描仪、多视角相机等采集设备,可以采集得到物体表面的点云(数据)。
具体来讲,点云是指海量三维点的集合,点云中的点可以包括点的位置信息和点的属性信息。例如,点的位置信息可以是点的三维坐标信息。点的位置信息也可称为点的几何信息。例如,点的属性信息可包括颜色信息和/或反射率等等。例如,颜色信息可以是任意一种色彩空间上的信息。例如,颜色信息可以是RGB信息。其中,R表示红色(Red,R),G表示绿色(Green,G),B表示蓝色(Blue,B)。再如,颜色信息可以是亮度色度(YCbCr,YUV)信息。其中,Y表示明亮度(Luma),Cb(U)表示蓝色色差,Cr(V)表示红色色差。
根据激光测量原理得到的点云,点云中的点可以包括点的三维坐标信息和点的激光反射强度(reflectance)。再如,根据摄影测量原理得到的点云,点云中的点可以可包括点的三维坐标信息和点的颜色信息。再如,结合激光测量和摄影测量原理得到点云,点云中的点可以可包括点的三维坐标信息、点的激光反射强度(reflectance)和点的颜色信息。
点云可以按获取的途径分为:
第一类静态点云:即物体是静止的,获取点云的设备也是静止的;
第二类动态点云:物体是运动的,但获取点云的设备是静止的;
第三类动态获取点云:获取点云的设备是运动的。
例如,按点云的用途分为两大类:
类别一:机器感知点云,其可以用于自主导航系统、实时巡检系统、地理信息系统、视觉分拣机器人、抢险救灾机器人等场景;
类别二:人眼感知点云,其可以用于数字文化遗产、自由视点广播、三维沉浸通信、三维沉浸交互等点云应用场景。
由于点云是海量点的集合,存储点云不仅会消耗大量的内存,而且不利于传输,也没有这么大的带宽可以支持将点云不经过压缩直接在网络层进行传输,因此,需要对点云进行压缩。
应理解,点云压缩一般可以采用几何信息和属性信息分别压缩的方式。
如图1A所示AVS的PCRM编码器的框架中,可以将输入点云分为几何信息和每个点对应的属性信息,二者是分开进行编码的。首先对几何信息进行坐标转换(即坐标平移),使全部点云位于一个包围盒中,再进行坐标量化,这一步量化主要起到缩放的作用。然后依据莫顿码,按照广度优先从根节点(第0层)进行几何八叉树构建。利用八叉树将包围盒八等分为8个子立方体,并记录每个子立方体的占位信息(其中,如果占位信息为1,那么该子立方体为非空;如果占位信息为0,那么该子立方体为空)。然后再对非空的子立方体继续进行八等分,直至划分得到的叶子节点为1×1×1的单位立方体时停止划分。对占位信息进行几何熵编码,生成二进制的几何码流。
几何编码完成后,对几何信息进行重建(即八叉树重建)并作为附加信息用以指导属性编码。目前,属性编码主要针对颜色信息进行。首先,对颜色信息进行空间变换,具体是从RGB颜色空间转换到YUV颜色空间。然后,利用重建的几何信息对点云重新着色(即属性插值),使得未编码的属性信息与重建的几何信息对应起来。
接下来进行属性预测,首先基于莫顿码对点云进行重排序,生成可用于点云属性预测的点云顺序,然后利用几何空间关系搜索最近邻居节点,利用找到的最近邻居节点的重建属性值对当前待预测节点进行属性预测得到预测属性值。将真实属性值与预测属性值进行差分得到属性预测残差,对属性预测残差进行残差量化,然后输入熵编码引擎即可得到二进制的属性码流。
如图1B所示AVS的PCRM解码器的框架中,获取二进制码流后,针对二进制码流中的几何码流和属性码流分别进行独立解码。在对几何码流进行解码时,首先对几何码流进行熵解码,得到每个节点的几何信息;然后按照与几何熵编码相同的方式进行八叉树重建,再将重建后得到的几何信息进行逆坐标量化和逆坐标平移,可以得到解码几何信息,即确定出点云的几何位置。在对属性码流进行解码时,需要将解码几何信息作为附加信息用以指导属性解码。首先对属性码流进行熵解码,得到量化后的残差信息;然后进行逆量化,可以得到点云残差;在属性重建的过程中,可以按照与属性编码相同的方式,获得当前待预测节点的属性预测值,然后将属性预测值与残差值相加,可以恢复出当前待预测节点的YUV属性值;最后经过逆空间变换,可以得到点云的属性信息。
在目前的相关技术中,可以利用莫顿码来查找当前节点的空间邻居节点,然后根据查找到的邻居节点对当前节点进行属性预测。示例性地,参见图2,其示出了相关技术提供的一种当前节点与邻居节点的空间关系示意图。如图2所示,用加粗线表示的块为当前节点,其对应的预设邻域范围为3×3×3大小;其中,X表示水平坐标轴,Y表示垂直坐标轴,Z表示z坐标轴。这里,当前节点的邻居节点数量总共为26个;其中,与当前节点共面的邻居节点数量有6个,与当前节点共线的邻居节点数量有12个,与当前节点共点的邻居节点数量有8个。需要注意的是,预设邻域范围并不局限于3×3×3大小,还可以是4×4×4大小、5×5×5大小、6×6×6大小,甚至是大于6×6×6大小等,本申请实施例不作具体限定。
结合图2的示例,考虑邻居节点的查找范围为待编码当前节点的3×3×3大小的预设邻域范围。首先利用当前点节点的莫顿码得到该邻域中莫顿码值最小的块,将该块作为基准块,然后利用基准块来查找与当前待编码点节点共面、共线的已编码编解码邻居节点。该预设邻域范围内与待编码当前节点共面且已编码/已解码(可简称为“已编解码”)的邻居节点之间的莫顿码关系如图3A所示,该预设邻域范围内与当前节点共线且已编解码的邻居节点之间的莫顿码关系如图3B所示。这里,在图3A中,用7填充的块表示当前节点,用3、5、6填充的块为与当前节点共面的邻居节点。在图3B中,用7填充的块仍表示当前节点,用1、2、4填充的块则为与当前节点共线的邻居节点。
这样,利用基准块来搜索与当前节点共面、共线的已编解码的N个邻居节点(当选择预设邻域范围为3×3×3大小时,N的取值为小于或等于6),然后利用这N个邻居节点来预测当前节点的属性。如果当查找不到任何共面或共线的邻居节点时,那么将会采用莫顿码比当前节点小的前一个已编解码节点的重建属性值对当前节点进行属性预测。
如图3A和图3B所示,用1、2、3、4、5、6填充的这6个邻居节点一定在当前节点之前完成属性编解码,但是除这些邻居节点之外,还可以包括一些共线的邻居节点也有可能也在当前节点之前完成属性编解码。但是在相关技术中,目前仅仅只考虑了如图3A和图3B所示的3个共面和3个共线的邻居节点,这样将会遗漏掉一些已编解码的共线的邻居节点。那么在找不到这6个共面或共线的邻居节点以后,直接用莫顿码比当前节点小的前一个已编解码节点的重建属性值作为预测属性值,在空间上是不准确的,因为莫顿码存在周期性的跳变点,即使莫顿码是相邻的,但是空间位置却不能保证相邻。如此对于基于几何空间关系的属性预测来说,目前并没有充分利用相邻节点的空间相关性,从而降低了点云的编解码效率。
本申请一实施例提供一种预测方法,该方法的基本思想是:通过确定当前节点的N个待搜索邻居节点;若所述N个待搜索邻居节点中存在与所述当前节点共面且已编码/已解码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值;若所述N个待搜索邻居节点中存在与所述当前节点共线且已编码/已解码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值;基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值。这样,无论是编码器还是解码器,在根据当前节点与邻居节点之间的几何空间关系进行属性预测时,由于扩大了邻居搜索范围,可以充分利用点云的空间相关性,使得预测残差更小,从而能够降低码率,进而提高编解码效率。
下面将结合附图对本申请各实施例进行详细阐述。
本申请的一实施例中,本申请实施例提供的预测方法应用于视频编码设备,即点云编码器(或称为PCRM编码器),本申请实施例也可以简称为编码器。该方法所实现的功能可以通过编码器中的第一处理器调用计算机程序来实现,当然计算机程序可以保存在第一存储器中,可见,编码器至少包括第一处理器和第一存储器。
参见图4,其示出了本申请实施例提供的一种预测方法的流程示意图。如图4所示,该方法可以包括:
S401:确定当前节点的N个待搜索邻居节点。
需要说明的是,在点云中,点可以是点云中的所有点,也可以是点云中的部分点,这些点在空间上相对集中。这里,当前节点也可以称为当前点或者当前块,具体是指点云中当前待编码的点或者块。
还需要说明的是,基于图1A所示的PCRM编码器的框架,本申请实施例的方法主要应用于“属性预测”部分,针对目前的相关技术中基于邻居搜索范围(也可称为“邻域搜索范围”或者“待搜索邻居范围”)的属性预测进行优化,通过扩大邻居搜索范围,以提升对空间相关性的利用程度。
可以理解,N个待搜索邻居节点是从当前节点的邻居信息中选取得到的。在一些实施例中,所述确定当前节点的N个待搜索邻居节点,可以包括:
对点云进行空间划分,得到至少一个点;
基于所述当前节点的几何位置,从所述至少一个点中确定所述当前节点的邻居信息;
从所述当前节点的邻居信息中,确定所述N个待搜索邻居节点。
在本申请实施例中,所述当前节点的邻居信息可以包括:与所述当前节点共面的六个邻居节点、与所述当前节点共线的十二个邻居节点和与所述当前节点共点的八个邻居节点。
也就是说,基于图2所示3×3×3大小的预设邻域范围,当前节点的邻居节点数量总共为26个。其中,与当前节点共面的邻居节点数量有6个,与当前节点共线的邻居节点数量有12个,与当前节点共点的邻居节点数量有8个。本申请实施例所述的N个待搜索邻居节点是从这26个邻居节点中确定的。
进一步地,所述从所述当前节点的邻居信息中,确定所述N个待搜索邻居节点,可以包括:
将与所述当前节点共面的六个邻居节点中一定已编码的三个邻居节点确定为三个待搜索邻居节点,将与所述当前节点共线的十二个邻居节点中一定已编码的三个邻居节点确定为三个待搜索邻居节点;
基于所述当前节点与邻居节点之间的几何空间关系,将与所述当前节点共线的剩余九个邻居节点中可能已编码的n个邻居节点确定为n个待搜索邻居节点,n为大于0且小于9的整数;
将得到的(6+n)个待搜索邻居节点确定为所述N个待搜索邻居节点。
需要说明的是,在这26个邻居节点中,目前的相关技术是仅将能够确定一定已编码的六个邻居节点组成邻居搜索范围。具体地,如图3A所示,在与当前节点共面的六个邻居节点中,只有与当前节点的左侧面、前侧面和下侧面共面的三个邻居节点(分别用3、5、6填充)是能够确定一定已编码过。如图3B所示,在与当前节点共线的十二个邻居节点中,也只有在与当前节点的左、前、下方向共线的三个邻居节点(分别用1、2、4填充)是能够确定一定已编码过。
在本申请实施例中,除了这能够确定一定已编码的六个邻居节点之外,本申请实施例扩大了邻居搜索范围。也就是说,基于当前节点与邻居节点之间的几何空间关系,将与当前节点共线的剩余九个邻居节点中可能已编码的n个邻居节点确定为n个待搜索邻居节点,从而使得扩大后的邻居搜索范围包括有(6+n)个待搜索邻居节点。这里,n为大于0且小于9的整数,即N为大于6的整数。
还需要注意的是,在扩大邻居搜索范围的过程中,由于与当前节点共面的剩下三个邻居节点是能够确定一定没有已编码过的,所以不作考虑;与当前节点共点的八个邻居节点也是能够确定一定没有已编码过的,所以也不作考虑;而与当前节点共线的剩下九个邻居节点中其中三个邻居节点是能够确定一定没有已编码过的,所以在本申请实施例的一种具体示例中,n为大于0且小于或等于6的整数。
在本申请实施例的另一种具体示例中,N为大于6且小于或等于12的整数。在本申请实施例的又一种具体示例中,N的取值可以为12。
进一步地,在一些实施例中,该方法还可以包括:将N的取值写入码流。
这样,由于编码器将N的取值写入码流,后续解码器可以直接通过解析码流获得待搜索邻居节点的数量(N的取值),使得编码器和解码器的邻居搜索范围保持一致。
还应理解,在确定出当前节点的N个待搜索邻居节点后,还需进一步确定出这N个待搜索邻居节点的莫顿码。在一些实施例中,在确定当前节点的N个待搜索邻居节点之后,该方法还可包括:
确定当前节点的基准点;
对所述基准点与所述N个待搜索邻居节点之间的坐标信息进行差值计算,得到N个坐标差值;
计算所述N个坐标差值的莫顿码,并将所述N个坐标差值的莫顿码存储在预设查找表中;
根据所述预设查找表,确定所述N个待搜索邻居节点的莫顿码。
需要说明的是,预设查找表是用于存储N个坐标差值的莫顿码。而N个坐标差值则是通过计算当前节点的基准点与N个待搜索邻居节点之间的坐标信息的差值得到的。
对于当前节点的基准点来说,在一些实施例中,所述确定所述当前节点的基准点,可以包括:
计算所述当前节点的莫顿码;
根据所述当前节点的莫顿码,从所述当前节点的邻居信息中确定最小莫顿码对应的邻居节点;
将所述最小莫顿码对应的邻居节点确定为基准点。
进一步地,所述根据所述当前节点的莫顿码,从所述当前节点的邻居信息中确定最小莫顿码对应的邻居节点,可以包括:
根据所述当前节点的莫顿码,确定所述当前节点的坐标信息;
基于所述当前节点的坐标信息,确定所述当前节点的邻居信息中至少一个邻居节点的莫顿码;
从所述至少一个邻居节点的莫顿码中选取最小莫顿码,得到所述最小莫顿码对应的邻居节点。
在本申请实施例中,利用节点(或简称为“点”)的坐标信息可以得到对应于点云中每一点的莫顿码。这里,莫顿码可以将多维数据转化为一维数据编码,莫顿编码也可叫z-order code,因为其编码顺序按照空间z序。计算莫顿码的具体方法描述如下所示,对于每一个分量用d比特二进制数表示的三维坐标(x,y,z),其三个分量的表示通过以下实现:
其中,分别是x,y,z的最高位/>到最低位/>对应的二进制数值。莫顿码M是对x,y,z从最高位开始,依次交叉排列/>到最低位,M的计算公式如下所示:
其中,∈{0,1}分别是M的最高位/>到最低位/>的值。在得到点云中每个点的莫顿码M后,将点云中的点按莫顿码由小到大的顺序进行排列,并将每个点的权值w设为1。表示为计算机语言,类似于z|(y<<1)|(x<<2)的组合。
需要说明的是,首先计算当前节点的莫顿码,然后根据当前节点的莫顿码,定位至基准点的莫顿码。这里,基准点的莫顿码是当前节点的邻居节点中的最小莫顿码。示例性地,如果当前节点的三维坐标为(x,y,z),那么基准点的三维坐标为(x-1,y-1,z-1),这时候计算得到的莫顿码是最小的。
在得到基准点之后,可以计算基准点与这N个待搜索邻居节点的坐标差值(offset),并将这N个坐标差值转换为N个莫顿码,然后将这N个莫顿码存储在预设查找表中。
进一步地,在一些实施例中,所述根据所述预设查找表,确定所述N个待搜索邻居节点的莫顿码,可以包括:
确定基准点的莫顿码;
从所述预设查找表中,获取N个坐标差值的莫顿码;
对基准点的莫顿码和N个坐标差值的莫顿码进行计算,得到所述N个待搜索邻居节点的莫顿码。
需要说明的是,从预设查找表中可以获取N个坐标差值的莫顿码,在确定出基准点的莫顿码之后,可以对基准点的莫顿码和这N个坐标差值的莫顿码进行计算,得到这N个待搜索邻居节点的莫顿码。
具体来讲,从预设查找表中获取所存储的第一个莫顿码,然后将这个莫顿码和基准点的莫顿码进行莫顿码加法计算,就可以得到第一个待搜索邻居的莫顿码;依次类推,可以得到这N个待搜索邻居节点的莫顿码。
这样,在得到这N个待搜索邻居节点的莫顿码之后,可以执行后续判断这些待搜索邻居节点是否存在的步骤。
S402:若所述N个待搜索邻居节点中存在与所述当前节点共面且已编码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值。
S403:若所述N个待搜索邻居节点中存在与所述当前节点共线且已编码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值。
S404:基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值。
需要说明的是,由于点云的非均匀分布,这时候计算得到的待搜索邻居节点的莫顿码并不一定存在;因此还需要进一步确定这些点是否存在。
在一种可能的实施方式中,在确定所述N个待搜索邻居节点的莫顿码之后,该方法还可包括:
遍历预设点云序列,判断所述预设点云序列是否存在第一待搜索邻居节点的莫顿码;
若判断结果为是,则确定所述N个待搜索邻居节点中存在所述第一待搜索邻居节点;
若判断结果为否,则确定所述N个待搜索邻居节点中不存在所述第一待搜索邻居节点;
其中,所述第一待搜索邻居节点为所述N个待搜索邻居节点中的任意一个待搜索邻居节点。
需要说明的是,预设点云序列中存储的是重构点云,即预设点云序列中的点均为已编码过的节点。对于预设点云序列而言,在一种具体的实施例中,该方法还可以包括:
确定包括所述当前节点的点云中至少一个点的莫顿码;
将所述莫顿码按照由小到大的顺序排列,得到莫顿码序;
从莫顿码序中截取比当前节点的莫顿码小的莫顿码,并根据所截取的莫顿码得到所述预设点云序列。
需要说明的是,该点云包括有当前节点,计算点云中至少一个点的莫顿码,然后将莫顿码按照由小到大的顺序排列,得到莫顿码序;这时候从莫顿码序中截取比当前节点的莫顿码小的莫顿码,从而根据所截取的莫顿码可以得到预设点云序列,而且该预设点云序列中的每一节点均为已编码过的节点。还需要注意的是,本申请实施例也可以将莫顿码按照由大到小的顺序排列,得到一莫顿码序,但是仍然从莫顿码序中截取比当前节点的莫顿码小的莫顿码,以得到预设点云序列。
这样,通过遍历预设点云序列,当预设点云序列中存在第一待搜索邻居节点的莫顿码时,这时候可以确定出这N个待搜索邻居节点中存在该第一待搜索邻居节点,即该第一待搜索邻居节点为已编码过的节点;当预设点云序列中不存在第一待搜索邻居节点的莫顿码时,这时候可以确定出这N个待搜索邻居节点中不存在该第一待搜索邻居节点,即该第一待搜索邻居节点为没有编码过的节点,也即不能作为参考邻居节点用于属性预测。
在另一种可能的实施方式中,在确定所述N个待搜索邻居节点的莫顿码之后,该方法还可包括:
判断第一待搜索邻居节点的莫顿码是否小于所述当前节点的莫顿码;
若判断结果为是,则确定所述N个待搜索邻居节点中存在所述第一待搜索邻居节点;
若判断结果为否,则确定所述N个待搜索邻居节点中不存在所述第一待搜索邻居节点;
其中,所述第一待搜索邻居节点为所述N个待搜索邻居节点中的任意一个待搜索邻居节点。
需要说明的是,在搜索邻居节点时,用于预测的邻居节点需要是已经遍历过的节点,而遍历的顺序是按莫顿码由小到大的顺序。因此,只有莫顿码比当前节点的莫顿码小的邻居节点才能够用于属性预测,如果找到的邻居节点的莫顿码比当前节点的莫顿码大,那么将不能作为参考邻居节点。换句话说,只有当第一待搜索邻居节点的莫顿码小于当前节点的莫顿码时,这时候可以确定出这N个待搜索邻居节点中存在该第一待搜索邻居节点,即该第一待搜索邻居节点为已编码过的节点;而当第一待搜索邻居节点的莫顿码大于当前节点的莫顿码时,这时候可以确定出这N个待搜索邻居节点中不存在该第一待搜索邻居节点,即该第一待搜索邻居节点为没有编码过的节点,也即不能作为参考邻居节点用于属性预测。
进一步地,在一些实施例中,当所述N个待搜索邻居节点中存在所述第一待搜索邻居节点时,该方法还可以包括:
若所述第一待搜索邻居节点为所述当前节点的共面邻居节点,则确定所述N个待搜索邻居节点中存在与所述当前节点共面且已编码的共面邻居节点;
若所述第一待搜索邻居节点为所述当前节点的共线邻居节点,则确定所述N个待搜索邻居节点中存在与所述当前节点共线且已编码的共线邻居节点。
也就是说,如果N个待搜索邻居节点中存在第一待搜索邻居节点,这时候还需要判断第一邻居节点为共面邻居节点还是共线邻居节点。具体地,如果第一待搜索邻居节点为当前节点的共面邻居节点,那么可以确定这N个待搜索邻居节点中存在与当前节点共面且已编码的共面邻居节点;如果第一待搜索邻居节点为当前节点的共线邻居节点,那么可以确定这N个待搜索邻居节点中存在与当前节点共线且已编码的共线邻居节点。
在本申请实施例中,距离越近,空间相关性越强。当前节点与共面邻居节点之间的距离值为1,当前节点与共线邻居节点之间的距离值为因此相对而言,共面邻居节点的空间相关性更强,本申请实施例可以优先判断这N个待搜索邻居节点中是否存在与当前节点共面且已编码的共面邻居节点。
需要说明的是,在一些实施例中,该方法还可以包括:设置参考邻居节点的数量为K个,K为大于0且小于或等于N的整数。
也就是说,本申请实施例可以预先设置参考邻居节点的数量。这样,在这N个待搜索邻居节点中,当搜索到K个存在的邻居节点时,这时候可以停止搜索,直接利用所搜索得到的K个邻居节点进行属性预测,从而能够减少搜索复杂度。
其中,K的取值可以为3个,也可以为6个,甚至可以为8个或者其他个。在本申请实施例中,K的取值根据实际情况进行具体设定,这里不作任何限定。
还需要说明的是,在一些实施例中,该方法还可以包括:将K的取值写入码流。
这样,由于编码器将K的取值写入码流,后续解码器可以直接通过解析码流获得参考邻居节点的数量(K的取值),使得编码器和解码器中用于属性预测的预设参考邻居节点的数量保持一致。
在一种可能的实施方式中,当在N个待搜索邻居节点中搜索到存在的共面邻居节点已经满足K的需求时,这时候可以仅使用这K个共面邻居节点进行属性预测。在一些实施例中,该方法还可以包括:
判断所述N个待搜索邻居节点中是否存在与所述当前节点共面且已编码的共面邻居节点;
若所述N个待搜索邻居节点中存在K个与所述当前节点共面且已编码的共面邻居节点,则获取所述K个共面邻居节点的第一属性重建值;
相应地,对于S404来说,所述基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值,可以包括:
对所述K个共面邻居节点的第一属性重建值进行均值计算,确定所述当前节点的属性预测值。
需要说明的是,在这N个待搜索邻居节点中搜索是否存在与当前节点共面且已编码的共面邻居节点,当搜索到K个存在的共面邻居节点时,这时候就可以停止搜索;然后获取这K个共面邻居节点的第一属性重建值,并通过对这K个共面邻居节点的第一属性重建值进行均值计算,可以得到当前节点的属性预测值。
在另一种可能的实施方式中,当在N个待搜索邻居节点中搜索到存在的共线邻居节点已经满足K的需求时,这时候可以仅使用这K个共线邻居节点进行属性预测。在一些实施例中,该方法还可包括:
判断所述N个待搜索邻居节点中是否存在与所述当前节点共线且已编码的共线邻居节点;
若所述N个待搜索邻居节点中存在K个与所述当前节点共线且已编码的共线邻居节点,则获取所述K个共线邻居节点的第二属性重建值;
相应地,对于S404来说,所述基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值,可以包括:
对所述K个共线邻居节点的第二属性重建值进行均值计算,确定所述当前节点的属性预测值。
需要说明的是,在这N个待搜索邻居节点中搜索是否存在与当前节点共线且已编码的共线邻居节点,当搜索到K个存在的共线邻居节点时,这时候就可以停止搜索;然后获取这K个共线邻居节点的第二属性重建值,并通过对这K个共线邻居节点的第二属性重建值进行均值计算,可以得到当前节点的属性预测值。
在又一种可能的实施方式中,考虑到共面邻居节点的空间相关性更强,需要先搜索是否存在共面邻居节点,再搜索是否存在共线邻居节点。
当在N个待搜索邻居节点中没有搜索到存在的共面邻居节点但是搜索到存在的共线邻居节点已经满足K的需求时,这时候也可以仅使用这K个共线邻居节点进行属性预测。在一些实施例中,该方法还可以包括:
判断所述N个待搜索邻居节点中是否存在与所述当前节点共面且已编码的共面邻居节点;
若所述N个待搜索邻居节点中不存在与所述当前节点共面且已编码的共面邻居节点,则判断所述N个待搜索邻居节点中是否存在与所述当前节点共线且已编码的共线邻居节点;
若所述N个待搜索邻居节点中存在K个与所述当前节点共线且已编码的共线邻居节点,则获取所述K个共线邻居节点的第二属性重建值;
相应地,对于S404来说,所述基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值,可以包括:
对所述K个共线邻居节点的第二属性重建值进行均值计算,确定所述当前节点的属性预测值。
需要说明的是,首先在这N个待搜索邻居节点中搜索是否存在与当前节点共面且已编码的共面邻居节点,如果搜索到不存在共面邻居节点,那么需要继续在这N个待搜索邻居节点中搜索是否存在与当前节点共线且已编码的共线邻居节点,当搜索到K个存在的共线邻居节点时,这时候可以停止搜索,然后获取这K个共线邻居节点的第二属性重建值,并通过对这K个共线邻居节点的第二属性重建值进行均值计算,可以得到当前节点的属性预测值。
这里,需要注意的是,如果在这N个待搜索邻居节点中搜索是否存在与当前节点共线且已编码的共线邻居节点时,只能搜索到k个存在的共线邻居节点,且k为大于0且小于K的整数,这时候可以通过对这k个共线邻居节点的第二属性重建值进行均值计算,以得到当前节点的属性预测值。
在又一种可能的实施方式中,当在N个待搜索邻居节点中搜索到M个存在的共面邻居节点但是M小于K时,这时候需要继续搜索L个存在的共线邻居节点,然后使用这M个共面邻居节点和L个共线邻居节点共同进行属性预测。在一些实施例中,该方法还可以包括:
判断所述N个待搜索邻居节点中是否存在与所述当前节点共面且已编码的共面邻居节点;
若所述N个待搜索邻居节点中存在M个与所述当前节点共面且已编码的共面邻居节点,则获取所述M个共面邻居节点的第一属性重建值,M为大于0且小于K的整数;
判断所述N个待搜索邻居节点中是否存在与所述当前节点共线且已编码的共线邻居节点;
若所述N个待搜索邻居节点中存在L个与所述当前节点共线且已编码的共线邻居节点,则获取所述L个共线邻居节点的第二属性重建值;其中,L为大于0且小于或等于(K-M)的整数;
相应地,对于S404来说,所述基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值,可以包括:
对M个第一属性重建值和L个第二属性重建值进行加权计算,确定所述当前节点的属性预测值。
需要说明的是,首先在这N个待搜索邻居节点中搜索是否存在与当前节点共面且已编码的共面邻居节点,如果搜索到M个存在的共面邻居节点,但是M小于K,那么需要继续在这N个待搜索邻居节点中搜索是否存在与当前节点共线且已编码的共线邻居节点,当搜索到(K-M)个存在的共面邻居节点时,这时候可以停止搜索,然后获取这M个共面邻居节点的第一属性重建值和这(K-M)个共线邻居节点的第二属性重建值,并通过对这M个第一属性重建值和这(K-M)个第二属性重建值进行加权计算,可以得到当前节点的属性预测值。
这里,需要注意的是,如果在这N个待搜索邻居节点中搜索是否存在与当前节点共线且已编码的共线邻居节点时,只能搜索到L个存在的共线邻居节点,且L为大于0且小于或等于(K-M)的整数,这时候可以通过对这M个第一属性重建值和这L个第二属性重建值进行加权计算,以得到当前节点的属性预测值。
进一步地,在一些实施例中,所述对所述M个第一属性重建值和所述L个第二属性重建值进行加权计算,确定所述当前节点的属性预测值,可以包括:
确定所述M个第一属性重建值对应的第一权重值和所述L个第二属性重建值对应的第二权重值;
根据所述M个第一属性重建值及对应的所述第一权重值和所述L个第二属性重建值及对应的所述第二权重值进行加权均值计算,得到所述当前节点的属性预测值。
需要说明的是,考虑到空间相关性的强度,本申请实施例中可以将第一权重值(即共面邻居节点的权重)设置为2,第二权重值(即共线邻居节点的权重)设置为1。
还需要说明的是,假定第一属性重建值用表示,第一权重值为用w1i表示,i=1,2,…,M;第二属性重建值用/>表示,第二权重值为用w2j表示,j=1,2,…,L;当前节点的属性预测值用A表示,那么其计算公式如下,
除此之外,在N个待搜索邻居节点中既没有搜索到存在的共面邻居节点又没有搜索到存在的共面邻居节点时,这时候,在一些实施例中,该方法还可以包括:
若所述N个待搜索邻居节点中不存在与所述当前节点共面且已编码的共面邻居节点且不存在与所述当前节点共线且已编码的共线邻居节点,则从所述莫顿码序中确定位于所述当前节点的莫顿码的前一个莫顿码,将所述前一个莫顿码对应的点的属性重建值确定为所述当前节点的属性预测值。
也就是说,在N个待搜索邻居节点中既没有搜索到存在的共面邻居节点又没有搜索到存在的共面邻居节点时,这时候可以直接利用莫顿码序中位于当前节点的莫顿码的前一个点的属性重建值作为当前节点的属性预测值。换句话说,在点云中的点,除了最开始的一个点不需要进行属性预测之外,其他点都是需要进行属性预测的。
本实施例提供了一种预测方法,通过确定当前节点的N个待搜索邻居节点;若所述N个待搜索邻居节点中存在与所述当前节点共面且已编码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值;若所述N个待搜索邻居节点中存在与所述当前节点共线且已编码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值;基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值。这样,在根据当前节点与邻居节点之间的几何空间关系进行属性预测时,由于扩大了邻居搜索范围(比如从相关技术中的6个待搜索邻居节点扩展到N个待搜索邻居节点),可以充分利用点云的空间相关性,使得预测残差更小,从而能够降低码率,进而提高编码效率。
本申请的另一实施例中,参见图5,其示出了本申请实施例提供的另一种预测方法的流程示意图。如图5所示,该方法可以包括:
S501:确定当前节点的N个待搜索邻居节点。
这里,与相关技术相比,本申请实施例扩大了邻居搜索范围。其中,N的取值可以设置为12。
如图6A所示,其示出了相关技术提供的一种邻居搜索范围的示意图。如图6B所示,其示出了本申请实施例提供的一种邻居搜索范围的示意图。在图6A中,用灰色填充的块为当前节点,其邻居搜索范围包括6个待搜索邻居节点。在图6B中,用灰色填充的块为当前节点,其邻居搜索范围除了图6A所示的6个待搜索邻居节点之外,还扩展了另外6个待搜索邻居节点。也就是说,本申请实施例的邻居搜索范围可以包括12个待搜索邻居节点。
S502:设置参考邻居节点的数量为K个,K为大于0且小于或等于N的整数。
需要说明的是,编码器可以预先设置参考邻居节点的数量。这样,在这N个待搜索邻居节点中搜索到K个存在的邻居节点时,这时候即可停止搜索,减少了搜索复杂度。后续可以用这K个邻居节点作为参考进行当前节点的属性预测。
S503:在所述N个待搜索邻居节点中搜索到存在M个与所述当前节点共面且已编码的共面邻居节点的情况下,获取所述M个共面邻居节点的第一属性重建值。
S504:判断M是否等于K。
S505:当M等于K时,对所述M个共面邻居节点的第一属性重建值进行均值计算,确定所述当前节点的属性预测值。
S506:当M小于K时,在所述N个待搜索邻居节点中搜索到存在L个与所述当前节点共线且已编码的共线邻居节点的情况下,获取所述L个共线邻居节点的第二属性重建值。
S507:对所述M个第一属性重建值和所述L个第二属性重建值进行加权计算,确定所述当前节点的属性预测值。
这里,M为大于0的整数,L为大于0且小于或等于(K-M)的整数。
需要说明的是,考虑到共面邻居节点的空间相关性更强,需要先搜索是否存在共面邻居节点,再搜索是否存在共线邻居节点。
还需要说明的是,在获取到M个共面邻居节点的第一属性重建值后,对于S504来说,这时候如果M等于K,那么执行S505;如果M小于K,那么执行S506~S507。
另外,当M等于0时,即在这N个待搜索邻居节点中没有搜索到存在的共面邻居节点,则需要继续在这N个待搜索邻居节点中搜索是否存在的共线邻居节点;若这时候搜索到L个存在的共线邻居节点,则通过这L个共线邻居节点的第二属性重建值进行均值计算,即可得到当前节点的属性预测值。
除此之外,当M等于0且L等于0时,即在这N个待搜索邻居节点中没有搜索到存在的共面邻居节点也没有搜索到存在的共线邻居节点,这时候可以直接利用莫顿码序中位于当前节点的莫顿码的前一个点的属性重建值作为当前节点的属性预测值。
简言之,本申请实施例提出了一种扩大邻居搜索范围的属性预测方法。首先,对当前节点的莫顿码(cur_pos)进行操作,可以定位至基准点莫顿码(base_pos);然后计算基准点与当前节点的N个待搜索相邻节点之间的坐标差值;将这些坐标差值进行莫顿编码,并建立预设查找表;再根据这个预设查找表进行莫顿码的加法计算来确定出这N个待搜索相邻节点的莫顿码。
由于点云的非均匀分布,因此计算得出的相邻节点的莫顿码并不一定存在。这时候还需要在预设点云序列中进行遍历查找,确定这些点是否存在。这里,预设点云序列为重构点云,该预设点云序列中的点均为已编码过的节点。
示例性地,如图6A所示,用灰色填充的块为当前节点,其邻居搜索范围包括6个待搜索邻居节点。如图6B所示,用灰色填充的块为当前节点,其邻居搜索范围除了图6A所示的6个待搜索邻居节点之外,还扩展了另外6个待搜索邻居节点(用加粗线表示)。也就是说,本申请实施例的邻居搜索范围可以包括12个待搜索邻居节点。具体而言,本申请实施例在搜索邻居节点时,用于预测的邻居节点是已遍历过的点,而遍历的顺序是按莫顿码由小到大的顺序。所以,只有莫顿码比当前点小的点才能用于预测,如果找到的邻居节点的莫顿码比当前节点的莫顿码大,那么将不能作为参考邻居节点。
这样,由于本申请实施例认为距离越近相关性最强,那么可以先搜索查找距离为1的共面邻居节点,如果存在,那么利用这些共面邻居节点的平均值作为预测值;或者,如果完全不存在共面邻居节点,那么也可以继续搜索查找距离为的共线邻居节点,利用这些共线邻居节点的平均值作为预测值;或者,如果存在共面邻居节点但是不满足预设参考邻居节点的数量,那么也可以继续搜索查找距离为/>的共线邻居节点,利用这些共面邻居节点和共线邻居节点的加权平均值作为预测值;如果上述这些邻居节点都不存在,那么这时候可以利用当前节点的莫顿码序的前一个点的属性重建值直接作为属性预测值。
如此,本申请实施例扩大了邻居搜索范围,能够充分利用点云的空间相关性,使得预测残差更小,更适用于后续的量化及熵编码。这里,本申请实施例所提出技术方案在基本不增加编解码复杂度的前提下,使用该技术方案具有以下有益效果:
本申请实施例的技术方案在不改变属性PSNR的情况下,可以降低编码码流大小。这里,PSNR是一种图像评价的客观标准,PSNR越大,则图像的质量越好。在AVS平台上对部分属性信息为颜色的序列在C2(几何无损,属性有损)条件下进行测试以后,其测试结果如下表1所示。
表1
从上表1可以看出,所有测试序列的BD-rate均为负值,而且BD-rate为负时表示性能变好。在此基础上,BD-rate的绝对值越大,则性能的增益越大。
本实施例提供了一种预测方法,通过上述实施例对前述实施例的具体实现进行了详细阐述,从中可以看出,本申请在根据几何空间关系进行属性预测时,扩大了邻居搜索范围,充分利用了相邻点的空间相关性。与相关技术相比,本申请的技术方案更大程度上利用了点云的空间相关性,在PSNR性能保持甚至略好的情况下,减少了输出的二进制码流从而能够降低码率,进而提高编码效率。
本申请的又一实施例中,本申请实施例提供的预测方法应用于视频解码设备,即点云解码器(或称为PCRM解码器),本申请实施例也可以简称为解码器。该方法所实现的功能可以通过解码器中的第二处理器调用计算机程序来实现,当然计算机程序可以保存在第二存储器中,可见,解码器至少包括第二处理器和第二存储器。
参见图7,其示出了本申请实施例提供的又一种预测方法的流程示意图。如图7所示,该方法可以包括:
S701:确定当前节点的N个待搜索邻居节点。
需要说明的是,在点云中,点可以是点云中的所有点,也可以是点云中的部分点,这些点在空间上相对集中。这里,当前节点也可以称为当前点或者当前块,具体是指点云中当前待解码的点或者块。
还需要说明的是,基于图1B所示的PCRM解码器的框架,本申请实施例的方法主要应用于“属性重建”部分,针对目前的相关技术中基于邻居搜索范围的属性预测进行优化,通过扩大邻居搜索范围,以提升对空间相关性的利用程度。
可以理解,N个待搜索邻居节点是从当前节点的邻居信息中选取得到的。在一些实施例中,所述确定当前节点的N个待搜索邻居节点,可以包括:
对点云进行空间划分,得到至少一个点;
基于所述当前节点的几何位置,从所述至少一个点中确定所述当前节点的邻居信息;
从所述当前节点的邻居信息中,确定所述N个待搜索邻居节点。
在本申请实施例中,所述当前节点的邻居信息可以包括:与所述当前节点共面的六个邻居节点、与所述当前节点共线的十二个邻居节点和与所述当前节点共点的八个邻居节点。
进一步地,所述从所述当前节点的邻居信息中,确定所述N个待搜索邻居节点,可以包括:
将与所述当前节点共面的六个邻居节点中一定已解码的三个邻居节点确定为三个待搜索邻居节点,将与所述当前节点共线的十二个邻居节点中一定已解码的三个邻居节点确定为三个待搜索邻居节点;
基于所述当前节点与邻居节点之间的几何空间关系,将与所述当前节点共线的剩余九个邻居节点中可能已解码的n个邻居节点确定为n个待搜索邻居节点,n为大于0且小于9的整数;
将得到的(6+n)个待搜索邻居节点确定为所述N个待搜索邻居节点。
需要说明的是,在这26个邻居节点中,目前的相关技术是仅将能够确定一定已解码的六个邻居节点组成邻居搜索范围。具体地,如图3A所示,在与当前节点共面的六个邻居节点中,只有与当前节点的左侧面、前侧面和下侧面共面的三个邻居节点(分别用3、5、6填充)是能够确定一定已解码过。如图3B所示,在与当前节点共线的十二个邻居节点中,也只有在与当前节点的左、前、下方向共线的三个邻居节点(分别用1、2、4填充)是能够确定一定已解码过。
在本申请实施例中,除了这能够确定一定已解码的六个邻居节点之外,本申请实施例扩大了邻居搜索范围。也就是说,基于当前节点与邻居节点之间的几何空间关系,将与当前节点共线的剩余九个邻居节点中可能已解码的n个邻居节点确定为n个待搜索邻居节点,从而使得扩大后的邻居搜索范围为(6+n)个待搜索邻居节点。这里,n为大于0且小于9的整数,即N为大于6的整数。
还需要注意的是,在扩大邻居搜索范围的过程中,由于与当前节点共面的剩下三个邻居节点是能够确定一定没有已解码过的,所以不作考虑;与当前节点共点的八个邻居节点也是能够确定一定没有已解码过的,所以也不作考虑;而与当前节点共线的剩下九个邻居节点中其中三个邻居节点是能够确定一定没有已解码过的,所以在本申请实施例的一种具体示例中,n为大于0且小于或等于6的整数。
在本申请实施例的另一种具体示例中,N为大于6且小于或等于12的整数。在本申请实施例的又一种具体示例中,N的取值可以为12。
进一步地,在一些实施例中,该方法还可以包括:解析码流,获取N的取值。
这样,由于编码器将N的取值写入码流,使得解码器可以直接解析码流,以获得待搜索邻居节点的数量(N的取值),从而使得编码器和解码器的邻居搜索范围保持一致。
还应理解,在确定出当前节点的N个待搜索邻居节点后,还需进一步确定出这N个待搜索邻居节点的莫顿码。在一些实施例中,在确定当前节点的N个待搜索邻居节点之后,该方法还可包括:
确定当前节点的基准点;
对所述基准点与所述N个待搜索邻居节点之间的坐标信息进行差值计算,得到N个坐标差值;
计算所述N个坐标差值的莫顿码,并将所述N个坐标差值的莫顿码存储在预设查找表中;
根据所述预设查找表,确定所述N个待搜索邻居节点的莫顿码。
需要说明的是,预设查找表是用于存储N个坐标差值的莫顿码。而N个坐标差值则是通过计算当前节点的基准点与N个待搜索邻居节点之间的坐标信息的差值得到的。
对于当前节点的基准点来说,在一些实施例中,所述确定所述当前节点的基准点,可以包括:
计算所述当前节点的莫顿码;
根据所述当前节点的莫顿码,从所述当前节点的邻居信息中确定最小莫顿码对应的邻居节点;
将所述最小莫顿码对应的邻居节点确定为基准点。
进一步地,所述根据所述当前节点的莫顿码,从所述当前节点的邻居信息中确定最小莫顿码对应的邻居节点,可以包括:
根据所述当前节点的莫顿码,确定所述当前节点的坐标信息;
基于所述当前节点的坐标信息,确定所述当前节点的邻居信息中至少一个邻居节点的莫顿码;
从所述至少一个邻居节点的莫顿码中选取最小莫顿码,得到所述最小莫顿码对应的邻居节点。
在本申请实施例中,利用节点(或简称为“点”)的坐标信息可以得到对应于点云中每一点的莫顿码。这里,莫顿码可以将多维数据转化为一维数据编码,莫顿编码也可叫z-order code,因为其解码顺序也是按照空间z序。如此,在得到基准点之后,可以计算基准点与这N个待搜索邻居节点的坐标差值(offset),并将这N个坐标差值转换为N个莫顿码,然后将这N个莫顿码存储在预设查找表中。
进一步地,所述根据所述预设查找表,确定所述N个待搜索邻居节点的莫顿码,可以包括:
确定基准点的莫顿码;
从所述预设查找表中,获取N个坐标差值的莫顿码;
对基准点的莫顿码和N个坐标差值的莫顿码进行计算,得到所述N个待搜索邻居节点的莫顿码。
需要说明的是,从预设查找表中可以获取N个坐标差值的莫顿码,在确定出基准点的莫顿码后,可以对基准点的莫顿码和N个坐标差值的莫顿码进行计算,从而得到这N个待搜索邻居节点的莫顿码。
这样,在得到这N个待搜索邻居节点的莫顿码之后,可以执行后续判断这些待搜索邻居节点是否存在的步骤。
S702:若所述N个待搜索邻居节点中存在与所述当前节点共面且已解码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值。
S703:若所述N个待搜索邻居节点中存在与所述当前节点共线且已解码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值。
S704:基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值。
需要说明的是,由于点云的非均匀分布,这时候计算得到的待搜索邻居节点的莫顿码并不一定存在;因此还需要进一步确定这些点是否存在。
在一种可能的实施方式中,在确定所述N个待搜索邻居节点的莫顿码之后,该方法还可包括:
遍历预设点云序列,判断所述预设点云序列是否存在第一待搜索邻居节点的莫顿码;
若判断结果为是,则确定所述N个待搜索邻居节点中存在所述第一待搜索邻居节点;
若判断结果为否,则确定所述N个待搜索邻居节点中不存在所述第一待搜索邻居节点;
其中,所述第一待搜索邻居节点为所述N个待搜索邻居节点中的任意一个待搜索邻居节点。
需要说明的是,预设点云序列中存储的是重构点云,即预设点云序列中的点均为已解码过的节点。对于预设点云序列而言,在一种具体的实施例中,该方法还可包括:
确定包括所述当前节点的点云中至少一个点的莫顿码;
将所述莫顿码按照由小到大的顺序排列,得到莫顿码序;
从莫顿码序中截取比当前节点的莫顿码小的莫顿码,并根据所截取的莫顿码得到所述预设点云序列。
需要说明的是,该点云包括有当前节点,计算点云中至少一个点的莫顿码,然后将莫顿码按照由小到大的顺序排列,得到莫顿码序;这时候从莫顿码序中截取比当前节点的莫顿码小的莫顿码,从而根据所截取的莫顿码可以得到预设点云序列,而且该预设点云序列中的每一节点均为已编码过的节点。还需要注意的是,本申请实施例也可以将莫顿码按照由大到小的顺序排列,得到一莫顿码序,但是仍然从莫顿码序中截取比当前节点的莫顿码小的莫顿码,以得到预设点云序列。
在另一种可能的实施方式中,在确定所述N个待搜索邻居节点的莫顿码之后,该方法还可包括:
判断第一待搜索邻居节点的莫顿码是否小于所述当前节点的莫顿码;
若判断结果为是,则确定所述N个待搜索邻居节点中存在所述第一待搜索邻居节点;
若判断结果为否,则确定所述N个待搜索邻居节点中不存在所述第一待搜索邻居节点;
其中,所述第一待搜索邻居节点为所述N个待搜索邻居节点中的任意一个待搜索邻居节点。
需要说明的是,在搜索邻居节点时,用于预测的邻居节点需要是已经遍历过的节点,而遍历的顺序是按莫顿码由小到大的顺序。因此,只有莫顿码比当前节点的莫顿码小的邻居节点才能够用于属性预测,如果找到的邻居节点的莫顿码比当前节点的莫顿码大,那么将不能作为参考邻居节点。换句话说,只有当第一待搜索邻居节点的莫顿码小于当前节点的莫顿码时,这时候可以确定出这N个待搜索邻居节点中存在该第一待搜索邻居节点,即该第一待搜索邻居节点为已解码过的节点;而当第一待搜索邻居节点的莫顿码大于当前节点的莫顿码时,这时候可以确定出这N个待搜索邻居节点中不存在该第一待搜索邻居节点,即该第一待搜索邻居节点为没有解码过的节点,也即不能作为参考邻居节点用于属性预测。
进一步地,在一些实施例中,当所述N个待搜索邻居节点中存在所述第一待搜索邻居节点时,该方法还可以包括:
若所述第一待搜索邻居节点为所述当前节点的共面邻居节点,则确定所述N个待搜索邻居节点中存在与所述当前节点共面且已解码的共面邻居节点;
若所述第一待搜索邻居节点为所述当前节点的共线邻居节点,则确定所述N个待搜索邻居节点中存在与所述当前节点共线且已解码的共线邻居节点。
也就是说,如果N个待搜索邻居节点中存在第一待搜索邻居节点,这时候还需要判断第一邻居节点为共面邻居节点还是共线邻居节点。具体地,如果第一待搜索邻居节点为当前节点的共面邻居节点,那么可以确定这N个待搜索邻居节点中存在与当前节点共面且已解码的共面邻居节点;如果第一待搜索邻居节点为当前节点的共线邻居节点,那么可以确定这N个待搜索邻居节点中存在与当前节点共线且已解码的共线邻居节点。
在本申请实施例中,距离越近,空间相关性越强。当前节点与共面邻居节点之间的距离值为1,当前节点与共线邻居节点之间的距离值为因此相对而言,共面邻居节点的空间相关性更强,本申请实施例可以优先判断这N个待搜索邻居节点中是否存在与当前节点共面且已解码的共面邻居节点。
需要说明的是,本申请实施例还可以预先设置参考邻居节点的数量。在一些实施例中,该方法还可以包括:设置参考邻居节点的数量为K个,K为大于0且小于或等于N的整数。
还需要说明的是,本申请实施例还可以在编码器侧将K的取值写入码流。在一些实施例中,该方法还可以包括:解析码流,获取K的取值;其中,K表示参考邻居节点的数量。
这样,在这N个待搜索邻居节点中,当搜索到K个存在的邻居节点时,这时候可以停止搜索,直接利用所搜索得到的K个邻居节点进行属性预测,从而能够减少搜索复杂度。
其中,K的取值可以为3个,也可以为6个,甚至可以为8个或者其他个。在本申请实施例中,K的取值根据实际情况进行具体设定,这里不作任何限定。
在一种可能的实施方式中,当在N个待搜索邻居节点中搜索到存在的共面邻居节点已经满足K的需求时,这时候可以仅使用这K个共面邻居节点进行属性预测。在一些实施例中,该方法还可以包括:
判断所述N个待搜索邻居节点中是否存在与所述当前节点共面且已解码的共面邻居节点;
若所述N个待搜索邻居节点中存在K个与所述当前节点共面且已解码的共面邻居节点,则获取所述K个共面邻居节点的第一属性重建值;
相应地,对于S704来说,所述基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值,可以包括:
对所述K个共面邻居节点的第一属性重建值进行均值计算,确定所述当前节点的属性预测值。
需要说明的是,在这N个待搜索邻居节点中搜索是否存在与当前节点共面且已解码的共面邻居节点,当搜索到K个存在的共面邻居节点时,这时候就可以停止搜索;然后获取这K个共面邻居节点的第一属性重建值,并通过对这K个共面邻居节点的第一属性重建值进行均值计算,可以得到当前节点的属性预测值。
在另一种可能的实施方式中,当在N个待搜索邻居节点中搜索到存在的共线邻居节点已经满足K的需求时,这时候可以仅使用这K个共线邻居节点进行属性预测。在一些实施例中,该方法还可包括:
判断所述N个待搜索邻居节点中是否存在与所述当前节点共线且已解码的共线邻居节点;
若所述N个待搜索邻居节点中存在K个与所述当前节点共线且已解码的共线邻居节点,则获取所述K个共线邻居节点的第二属性重建值;
相应地,对于S704来说,所述基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值,可以包括:
对所述K个共线邻居节点的第二属性重建值进行均值计算,确定所述当前节点的属性预测值。
需要说明的是,在这N个待搜索邻居节点中搜索是否存在与当前节点共线且已解码的共线邻居节点,当搜索到K个存在的共线邻居节点时,这时候就可以停止搜索;然后获取这K个共线邻居节点的第二属性重建值,并通过对这K个共线邻居节点的第二属性重建值进行均值计算,可以得到当前节点的属性预测值。
在又一种可能的实施方式中,考虑到共面邻居节点的空间相关性更强,需要先搜索是否存在共面邻居节点,再搜索是否存在共线邻居节点。
当在N个待搜索邻居节点中没有搜索到存在的共面邻居节点但是搜索到存在的共线邻居节点已经满足K的需求时,这时候也可以仅使用这K个共线邻居节点进行属性预测。在一些实施例中,该方法还可以包括:
判断所述N个待搜索邻居节点中是否存在与所述当前节点共面且已解码的共面邻居节点;
若所述N个待搜索邻居节点中不存在与所述当前节点共面且已解码的共面邻居节点,则判断所述N个待搜索邻居节点中是否存在与所述当前节点共线且已解码的共线邻居节点;
若所述N个待搜索邻居节点中存在K个与所述当前节点共线且已解码的共线邻居节点,则获取所述K个共线邻居节点的第二属性重建值;
相应地,对于S704来说,所述基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值,可以包括:
对所述K个共线邻居节点的第二属性重建值进行均值计算,确定所述当前节点的属性预测值。
需要说明的是,首先在这N个待搜索邻居节点中搜索是否存在与当前节点共面且已解码的共面邻居节点,如果搜索到不存在共面邻居节点,那么需要继续在这N个待搜索邻居节点中搜索是否存在与当前节点共线且已解码的共线邻居节点,当搜索到K个存在的共线邻居节点时,这时候可以停止搜索,然后获取这K个共线邻居节点的第二属性重建值,并通过对这K个共线邻居节点的第二属性重建值进行均值计算,可以得到当前节点的属性预测值。
这里,需要注意的是,如果在这N个待搜索邻居节点中搜索是否存在与当前节点共线且已解码的共线邻居节点时,只能搜索到k个存在的共线邻居节点,且k为大于0且小于K的整数,这时候可以通过对这k个共线邻居节点的第二属性重建值进行均值计算,以得到当前节点的属性预测值。
在又一种可能的实施方式中,当在N个待搜索邻居节点中搜索到M个存在的共面邻居节点但是M小于K时,这时候需要继续搜索L个存在的共线邻居节点,然后使用这M个共面邻居节点和L个共线邻居节点共同进行属性预测。在一些实施例中,该方法还可以包括:
判断所述N个待搜索邻居节点中是否存在与所述当前节点共面且已解码的共面邻居节点;
若所述N个待搜索邻居节点中存在M个与所述当前节点共面且已解码的共面邻居节点,则获取所述M个共面邻居节点的第一属性重建值,M为大于0且小于K的整数;
判断所述N个待搜索邻居节点中是否存在与所述当前节点共线且已解码的共线邻居节点;
若所述N个待搜索邻居节点中存在L个与所述当前节点共线且已解码的共线邻居节点,则获取所述L个共线邻居节点的第二属性重建值;其中,L为大于0且小于或等于(K-M)的整数;
相应地,对于S704来说,所述基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值,可以包括:
对M个第一属性重建值和L个第二属性重建值进行加权计算,确定所述当前节点的属性预测值。
需要说明的是,首先在这N个待搜索邻居节点中搜索是否存在与当前节点共面且已解码的共面邻居节点,如果搜索到M个存在的共面邻居节点,但是M小于K,那么需要继续在这N个待搜索邻居节点中搜索是否存在与当前节点共线且已解码的共线邻居节点,当搜索到(K-M)个存在的共面邻居节点时,这时候可以停止搜索,然后获取这M个共面邻居节点的第一属性重建值和这(K-M)个共线邻居节点的第二属性重建值,并通过对这M个第一属性重建值和这(K-M)个第二属性重建值进行加权计算,可以得到当前节点的属性预测值。
这里,需要注意的是,如果在这N个待搜索邻居节点中搜索是否存在与当前节点共线且已解码的共线邻居节点时,只能搜索到L个存在的共线邻居节点,且L为大于0且小于或等于(K-M)的整数,这时候可以通过对这M个第一属性重建值和这L个第二属性重建值进行加权计算,以得到当前节点的属性预测值。
进一步地,在一些实施例中,所述对所述M个第一属性重建值和所述L个第二属性重建值进行加权计算,确定所述当前节点的属性预测值,可以包括:
确定所述M个第一属性重建值对应的第一权重值和所述L个第二属性重建值对应的第二权重值;
根据所述M个第一属性重建值及对应的所述第一权重值和所述L个第二属性重建值及对应的所述第二权重值进行加权均值计算,得到所述当前节点的属性预测值。
需要说明的是,考虑到空间相关性的强度,本申请实施例中可以将第一权重值(即共面邻居节点的权重)设置为2,第二权重值(即共线邻居节点的权重)设置为1。具体可以根据式(2)进行加权计算,以得到当前节点的属性预测值。
除此之外,在N个待搜索邻居节点中既没有搜索到存在的共面邻居节点又没有搜索到存在的共面邻居节点时,这时候,在一些实施例中,该方法还可以包括:
若所述N个待搜索邻居节点中不存在与所述当前节点共面且已解码的共面邻居节点且不存在与所述当前节点共线且已解码的共线邻居节点,则从所述莫顿码序中确定位于所述当前节点的莫顿码的前一个莫顿码,将所述前一个莫顿码对应的点的属性重建值确定为所述当前节点的属性预测值。
也就是说,在N个待搜索邻居节点中既没有搜索到存在的共面邻居节点又没有搜索到存在的共面邻居节点时,这时候可以直接利用莫顿码序中位于当前节点的莫顿码的前一个点的属性重建值作为当前节点的属性预测值。换句话说,在点云中的点,除了最开始的一个点不需要进行属性预测之外,其他点都是需要进行属性预测的。
如此,由于本申请实施例认为距离越近相关性最强,那么可以先搜索查找距离为1的共面邻居节点,如果存在,那么利用这些共面邻居节点的平均值作为预测值;或者,如果完全不存在共面邻居节点,那么也可以继续搜索查找距离为的共线邻居节点,利用这些共线邻居节点的平均值作为预测值;或者,如果存在共面邻居节点但是不满足预设参考邻居节点的数量,那么也可以继续搜索查找距离为/>的共线邻居节点,利用这些共面邻居节点和共线邻居节点的加权平均值作为预测值;如果上述这些邻居节点都不存在,那么这时候可以利用当前节点的莫顿码序的前一个点的属性重建值直接作为属性预测值。
本实施例提供了一种预测方法,通过确定当前节点的N个待搜索邻居节点;若所述N个待搜索邻居节点中存在与所述当前节点共面且已解码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值;若所述N个待搜索邻居节点中存在与所述当前节点共线且已解码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值;基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值。这样,在根据当前节点与邻居节点之间的几何空间关系进行属性预测时,由于扩大了邻居搜索范围(比如从相关技术中的6个待搜索邻居节点扩展到N个待搜索邻居节点),可以充分利用点云的空间相关性,使得预测残差更小,从而能够降低码率,进而提高解码效率。
本申请的再一实施例中,基于前述实施例相同的发明构思,参见图8,其示出了本申请实施例提供的一种编码器80的组成结构示意图。如图8所示,该编码器80可以包括:第一确定单元801、第一判断单元802和第一预测单元803;其中,
第一确定单元801,配置为确定当前节点的N个待搜索邻居节点;
第一判断单元802,配置为若所述N个待搜索邻居节点中存在与所述当前节点共面且已编码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值;
第一判断单元802,还配置为若所述N个待搜索邻居节点中存在与所述当前节点共线且已编码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值;
第一预测单元803,配置为基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值。
在一些实施例中,参见图8,编码器80还可以包括第一划分单元804,配置为对点云进行空间划分,得到至少一个点;
第一确定单元801,还配置为基于所述当前节点的几何位置,从所述至少一个点中确定所述当前节点的邻居信息;以及从所述当前节点的邻居信息中,确定所述N个待搜索邻居节点。
在一些实施例中,所述当前节点的邻居信息包括:与所述当前节点共面的六个邻居节点、与所述当前节点共线的十二个邻居节点和与所述当前节点共点的八个邻居节点。
在一些实施例中,第一确定单元801,具体配置为将与所述当前节点共面的六个邻居节点中一定已编码的三个邻居节点确定为三个待搜索邻居节点,将与所述当前节点共线的十二个邻居节点中一定已编码的三个邻居节点确定为三个待搜索邻居节点;以及基于所述当前节点与邻居节点之间的几何空间关系,将与所述当前节点共线的剩余九个邻居节点中可能已编码的n个邻居节点确定为n个待搜索邻居节点,n为大于0且小于9的整数;以及将得到的(6+n)个待搜索邻居节点确定为所述N个待搜索邻居节点。
在一些实施例中,N为大于6的整数。
在一些实施例中,参见图8,编码器80还可以包括第一计算单元805;
第一确定单元801,还配置为确定所述当前节点的基准点;
第一计算单元805,配置为对所述基准点与所述N个待搜索邻居节点之间的坐标信息进行差值计算,得到N个坐标差值;以及计算所述N个坐标差值的莫顿码,并将所述N个坐标差值的莫顿码存储在预设查找表中;
第一确定单元801,还配置为根据所述预设查找表,确定所述N个待搜索邻居节点的莫顿码。
在一些实施例中,第一计算单元805,还配置为计算所述当前节点的莫顿码;
第一确定单元801,还配置为根据所述当前节点的莫顿码,从所述当前节点的邻居信息中确定最小莫顿码对应的邻居节点;以及将所述最小莫顿码对应的邻居节点确定为基准点。
在一些实施例中,第一确定单元801,具体配置为根据当前节点的莫顿码,确定所述当前节点的坐标信息;以及基于所述当前节点的坐标信息,确定所述当前节点的邻居信息中至少一个邻居节点的莫顿码;以及从所述至少一个邻居节点的莫顿码中选取最小莫顿码,得到所述最小莫顿码对应的邻居节点。
在一些实施例中,第一确定单元801,还配置为确定所述基准点的莫顿码;
第一计算单元805,还配置为从所述预设查找表中,获取所述N个坐标差值的莫顿码;以及对所述基准点的莫顿码和所述N个坐标差值的莫顿码进行计算,得到所述N个待搜索邻居节点的莫顿码。
在一些实施例中,第一判断单元802,还配置为遍历预设点云序列,判断所述预设点云序列是否存在第一待搜索邻居节点的莫顿码;
第一确定单元801,还配置为若判断结果为是,则确定所述N个待搜索邻居节点中存在所述第一待搜索邻居节点;若判断结果为否,则确定所述N个待搜索邻居节点中不存在所述第一待搜索邻居节点;其中,所述第一待搜索邻居节点为N个待搜索邻居节点中的任意一个待搜索邻居节点。
在一些实施例中,参见图8,编码器80还可以包括第一排序单元806;
第一确定单元801,还配置为确定包括所述当前节点的点云中至少一个点的莫顿码;
第一排序单元806,配置为将所述莫顿码按照由小到大的顺序排列,得到莫顿码序;以及从所述莫顿码序中截取比所述当前节点的莫顿码小的莫顿码,并根据所截取的莫顿码得到所述预设点云序列。
在一些实施例中,第一判断单元802,还配置为判断第一待搜索邻居节点的莫顿码是否小于所述当前节点的莫顿码;
第一确定单元801,还配置为若判断结果为是,则确定所述N个待搜索邻居节点中存在所述第一待搜索邻居节点;若判断结果为否,则确定所述N个待搜索邻居节点中不存在所述第一待搜索邻居节点;其中,所述第一待搜索邻居节点为N个待搜索邻居节点中的任意一个待搜索邻居节点。
在一些实施例中,第一确定单元801,还配置为当所述N个待搜索邻居节点中存在第一待搜索邻居节点时,若第一待搜索邻居节点为所述当前节点的共面邻居节点,则确定所述N个待搜索邻居节点中存在与所述当前节点共面且已编码的共面邻居节点;若第一待搜索邻居节点为所述当前节点的共线邻居节点,则确定所述N个待搜索邻居节点中存在与所述当前节点共线且已编码的共线邻居节点。
在一些实施例中,参见图8,编码器80还可以包括写入单元807,配置为将N的取值写入码流。
在一些实施例中,参见图8,编码器80还可以包括第一设置单元808,配置为设置参考邻居节点的数量为K个,K为大于0且小于或等于N的整数。
在一些实施例中,第一判断单元802,还配置为判断所述N个待搜索邻居节点中是否存在与所述当前节点共面且已编码的共面邻居节点;
第一确定单元801,还配置为若所述N个待搜索邻居节点中存在K个与所述当前节点共面且已编码的共面邻居节点,则获取所述K个共面邻居节点的第一属性重建值;
第一预测单元803,具体配置为对所述K个共面邻居节点的第一属性重建值进行均值计算,确定所述当前节点的属性预测值。
在一些实施例中,第一判断单元802,还配置为判断所述N个待搜索邻居节点中是否存在与所述当前节点共面且已编码的共面邻居节点;以及若所述N个待搜索邻居节点中不存在与所述当前节点共面且已编码的共面邻居节点,则判断所述N个待搜索邻居节点中是否存在与所述当前节点共线且已编码的共线邻居节点;
第一确定单元801,还配置为若所述N个待搜索邻居节点中存在K个与所述当前节点共线且已编码的共线邻居节点,则获取所述K个共线邻居节点的第二属性重建值;
第一预测单元803,具体配置为对所述K个共线邻居节点的第二属性重建值进行均值计算,确定所述当前节点的属性预测值。
在一些实施例中,第一判断单元802,还配置为判断所述N个待搜索邻居节点中是否存在与所述当前节点共面且已编码的共面邻居节点;
第一确定单元801,还配置为若所述N个待搜索邻居节点中存在M个与所述当前节点共面且已编码的共面邻居节点,则获取所述M个共面邻居节点的第一属性重建值,M为大于0且小于K的整数;
第一判断单元802,还配置为判断所述N个待搜索邻居节点中是否存在与所述当前节点共线且已编码的共线邻居节点;
第一确定单元801,还配置为若所述N个待搜索邻居节点中存在L个与所述当前节点共线且已编码的共线邻居节点,则获取所述L个共线邻居节点的第二属性重建值;其中,L为大于0且小于或等于(K-M)的整数;
第一预测单元803,具体配置为对所述M个第一属性重建值和所述L个第二属性重建值进行加权计算,确定所述当前节点的属性预测值。
在一些实施例中,写入单元807,还配置为将K的取值写入码流。
在一些实施例中,第一预测单元803,还配置为若所述N个待搜索邻居节点中不存在与所述当前节点共面且已编码的共面邻居节点且不存在与所述当前节点共线且已编码的共线邻居节点,则从所述莫顿码序中确定位于所述当前节点的莫顿码的前一个莫顿码,将所述前一个莫顿码对应的点的属性重建值确定为所述当前节点的属性预测值。
可以理解地,在本申请实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
因此,本申请实施例提供了一种计算机存储介质,应用于编码器80,该计算机存储介质存储有计算机程序,所述计算机程序被第一处理器执行时实现前述实施例中任一项所述的方法。
基于上述编码器80的组成以及计算机存储介质,参见图9,其示出了本申请实施例提供的编码器80的具体硬件结构示意图。如图9所示,可以包括:第一通信接口901、第一存储器902和第一处理器903;各个组件通过第一总线系统904耦合在一起。可理解,第一总线系统904用于实现这些组件之间的连接通信。第一总线系统904除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图9中将各种总线都标为第一总线系统904。其中,
第一通信接口901,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;
第一存储器902,用于存储能够在第一处理器903上运行的计算机程序;
第一处理器903,用于在运行所述计算机程序时,执行:
确定当前节点的N个待搜索邻居节点;
若所述N个待搜索邻居节点中存在与所述当前节点共面且已编码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值;
若所述N个待搜索邻居节点中存在与所述当前节点共线且已编码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值;
基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值。
可以理解,本申请实施例中的第一存储器902可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本申请描述的系统和方法的第一存储器902旨在包括但不限于这些和任意其它适合类型的存储器。
而第一处理器903可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过第一处理器903中的硬件的集成逻辑电路或者软件形式的指令完成。上述的第一处理器903可以是通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于第一存储器902,第一处理器903读取第一存储器902中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本申请描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(Application Specific Integrated Circuits,ASIC)、数字信号处理器(Digital SignalProcessing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(ProgrammableLogic Device,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。对于软件实现,可通过执行本申请所述功能的模块(例如过程、函数等)来实现本申请所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
可选地,作为另一个实施例,第一处理器903还配置为在运行所述计算机程序时,执行前述实施例中任一项所述的方法。
本实施例提供了一种编码器,该编码器可包括第一确定单元、第一判断单元和第一预测单元。这样,在根据当前节点与邻居节点之间的几何空间关系进行属性预测时,由于扩大了邻居搜索范围,可以充分利用点云的空间相关性,使得预测残差更小,从而能够降低码率,进而提高编码效率。
本申请的再一实施例中,基于前述实施例相同的发明构思,参见图10,其示出了本申请实施例提供的一种解码器100的组成结构示意图。如图10所示,该解码器100可以包括:第二确定单元1001、第二判断单元1002和第二预测单元1003;其中,
第二确定单元1001,配置为确定当前节点的N个待搜索邻居节点;
第二判断单元1002,配置为若所述N个待搜索邻居节点中存在与所述当前节点共面且已解码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值;
第二判断单元1002,还配置为若所述N个待搜索邻居节点中存在与所述当前节点共线且已解码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值;
第二预测单元1003,配置为基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值。
在一些实施例中,参见图10,解码器100还可以包括第二划分单元1004,配置为对点云进行空间划分,得到至少一个点;
第二确定单元1001,还配置为基于所述当前节点的几何位置,从所述至少一个点中确定所述当前节点的邻居信息;以及从所述当前节点的邻居信息中,确定所述N个待搜索邻居节点。
在一些实施例中,所述当前节点的邻居信息包括:与所述当前节点共面的六个邻居节点、与所述当前节点共线的十二个邻居节点和与所述当前节点共点的八个邻居节点。
在一些实施例中,第二确定单元1001,具体配置为将与当前节点共面的六个邻居节点中一定已解码的三个邻居节点确定为三个待搜索邻居节点,将与当前节点共线的十二个邻居节点中一定已解码的三个邻居节点确定为三个待搜索邻居节点;以及基于当前节点与邻居节点之间的几何空间关系,将与当前节点共线的剩余九个邻居节点中可能已解码的n个邻居节点确定为n个待搜索邻居节点,n为大于0且小于9的整数;以及将得到的(6+n)个待搜索邻居节点确定为所述N个待搜索邻居节点。
在一些实施例中,N为大于6的整数。
在一些实施例中,参见图10,解码器100还可以包括第二计算单元1005;
第二确定单元1001,还配置为确定所述当前节点的基准点;
第二计算单元1005,配置为对所述基准点与所述N个待搜索邻居节点之间的坐标信息进行差值计算,得到N个坐标差值;以及计算所述N个坐标差值的莫顿码,并将所述N个坐标差值的莫顿码存储在预设查找表中;
第二确定单元1001,还配置为根据所述预设查找表,确定所述N个待搜索邻居节点的莫顿码。
在一些实施例中,第二计算单元1005,还配置为计算所述当前节点的莫顿码;
第二确定单元1001,还配置为根据所述当前节点的莫顿码,从所述当前节点的邻居信息中确定最小莫顿码对应的邻居节点;以及将所述最小莫顿码对应的邻居节点确定为基准点。
在一些实施例中,第二确定单元1001,具体配置为根据当前节点的莫顿码,确定所述当前节点的坐标信息;以及基于所述当前节点的坐标信息,确定所述当前节点的邻居信息中至少一个邻居节点的莫顿码;以及从所述至少一个邻居节点的莫顿码中选取最小莫顿码,得到所述最小莫顿码对应的邻居节点。
在一些实施例中,第二确定单元1001,还配置为确定所述基准点的莫顿码;
第二计算单元1005,还配置为从所述预设查找表中,获取所述N个坐标差值的莫顿码;以及对所述基准点的莫顿码和所述N个坐标差值的莫顿码进行计算,得到所述N个待搜索邻居节点的莫顿码。
在一些实施例中,第二判断单元1002,还配置为遍历预设点云序列,判断所述预设点云序列是否存在第一待搜索邻居节点的莫顿码;
第二确定单元1001,还配置为若判断结果为是,则确定所述N个待搜索邻居节点中存在所述第一待搜索邻居节点;若判断结果为否,则确定所述N个待搜索邻居节点中不存在所述第一待搜索邻居节点;其中,所述第一待搜索邻居节点为N个待搜索邻居节点中的任意一个待搜索邻居节点。
在一些实施例中,参见图10,解码器100还可以包括第二排序单元1006;
第二确定单元1001,还配置为确定包括所述当前节点的点云中至少一个点的莫顿码;
第二排序单元1006,配置为将所述莫顿码按照由小到大的顺序排列,得到莫顿码序;以及从所述莫顿码序中截取比所述当前节点的莫顿码小的莫顿码,并根据所截取的莫顿码得到所述预设点云序列。
在一些实施例中,第二判断单元1002,还配置为判断第一待搜索邻居节点的莫顿码是否小于所述当前节点的莫顿码;
第二确定单元1001,还配置为若判断结果为是,则确定所述N个待搜索邻居节点中存在所述第一待搜索邻居节点;若判断结果为否,则确定所述N个待搜索邻居节点中不存在所述第一待搜索邻居节点;其中,所述第一待搜索邻居节点为N个待搜索邻居节点中的任意一个待搜索邻居节点。
在一些实施例中,第二确定单元1001,还配置为当所述N个待搜索邻居节点中存在第一待搜索邻居节点时,若第一待搜索邻居节点为所述当前节点的共面邻居节点,则确定所述N个待搜索邻居节点中存在与所述当前节点共面且已解码的共面邻居节点;若第一待搜索邻居节点为所述当前节点的共线邻居节点,则确定所述N个待搜索邻居节点中存在与所述当前节点共线且已解码的共线邻居节点。
在一些实施例中,参见图10,解码器100还可以包括解析单元1007,配置为解析码流,获取N的取值。
在一些实施例中,参见图10,解码器100还可以包括第二设置单元1008,配置为设置参考邻居节点的数量为K个,K为大于0且小于或等于N的整数。
在一些实施例中,解析单元1007,还配置为解析码流,获取K的取值;其中,K表示参考邻居节点的数量。
在一些实施例中,第二判断单元1002,还配置为判断所述N个待搜索邻居节点中是否存在与所述当前节点共面且已解码的共面邻居节点;
第二确定单元1001,还配置为若所述N个待搜索邻居节点中存在K个与所述当前节点共面且已解码的共面邻居节点,则获取所述K个共面邻居节点的第一属性重建值;
第二预测单元1003,具体配置为对所述K个共面邻居节点的第一属性重建值进行均值计算,确定所述当前节点的属性预测值。
在一些实施例中,第二判断单元1002,还配置为判断所述N个待搜索邻居节点中是否存在与所述当前节点共面且已解码的共面邻居节点;以及若所述N个待搜索邻居节点中不存在与所述当前节点共面且已解码的共面邻居节点,则判断所述N个待搜索邻居节点中是否存在与所述当前节点共线且已解码的共线邻居节点;
第二确定单元1001,还配置为若所述N个待搜索邻居节点中存在K个与所述当前节点共线且已解码的共线邻居节点,则获取所述K个共线邻居节点的第二属性重建值;
第二预测单元1003,具体配置为对所述K个共线邻居节点的第二属性重建值进行均值计算,确定所述当前节点的属性预测值。
在一些实施例中,第二判断单元1002,还配置为判断所述N个待搜索邻居节点中是否存在与所述当前节点共面且已解码的共面邻居节点;
第二确定单元1001,还配置为若所述N个待搜索邻居节点中存在M个与所述当前节点共面且已解码的共面邻居节点,则获取所述M个共面邻居节点的第一属性重建值,M为大于0且小于K的整数;
第二判断单元1002,还配置为判断所述N个待搜索邻居节点中是否存在与所述当前节点共线且已解码的共线邻居节点;
第二确定单元1001,还配置为若所述N个待搜索邻居节点中存在L个与所述当前节点共线且已解码的共线邻居节点,则获取所述L个共线邻居节点的第二属性重建值;其中,L为大于0且小于或等于(K-M)的整数;
第二预测单元1003,具体配置为对所述M个第一属性重建值和所述L个第二属性重建值进行加权计算,确定所述当前节点的属性预测值。
在一些实施例中,第二预测单元1003,还配置为若所述N个待搜索邻居节点中不存在与所述当前节点共面且已解码的共面邻居节点且不存在与所述当前节点共线且已解码的共线邻居节点,则从所述莫顿码序中确定位于所述当前节点的莫顿码的前一个莫顿码,将所述前一个莫顿码对应的点的属性重建值确定为所述当前节点的属性预测值。
可以理解地,在本实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本实施例提供了一种计算机存储介质,应用于解码器100,该计算机存储介质存储有计算机程序,所述计算机程序被第二处理器执行时实现前述实施例中任一项所述的方法。
基于上述解码器100的组成以及计算机存储介质,参见图11,其示出了本申请实施例提供的解码器100的具体硬件结构示意图。如图11所示,可以包括:第二通信接口1101、第二存储器1102和第二处理器1103;各个组件通过第二总线系统1104耦合在一起。可理解,第二总线系统1104用于实现这些组件之间的连接通信。第二总线系统1104除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图11中将各种总线都标为第二总线系统1104。其中,
第二通信接口1101,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;
第二存储器1102,用于存储能够在第二处理器1103上运行的计算机程序;
第二处理器1103,用于在运行所述计算机程序时,执行:
确定当前节点的N个待搜索邻居节点;
若所述N个待搜索邻居节点中存在与所述当前节点共面且已解码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值;
若所述N个待搜索邻居节点中存在与所述当前节点共线且已解码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值;
基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值。
可选地,作为另一个实施例,第二处理器1103还配置为在运行所述计算机程序时,执行前述实施例中任一项所述的方法。
可以理解,第二存储器1102与第一存储器902的硬件功能类似,第二处理器1103与第一处理器903的硬件功能类似;这里不再详述。
本实施例提供了一种解码器,该解码器可包括第二确定单元、第二判断单元和第二预测单元。这样,在根据当前节点与邻居节点之间的几何空间关系进行属性预测时,由于扩大了邻居搜索范围,可以充分利用点云的空间相关性,使得预测残差更小,从而能够降低码率,进而提高解码效率。
需要说明的是,在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
工业实用性
本申请实施例中,在编码器侧,通过确定当前节点的N个待搜索邻居节点;若N个待搜索邻居节点中存在与当前节点共面且已编码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值;若N个待搜索邻居节点中存在与当前节点共线且已编码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值;基于所述第一属性重建值和/或所述第二属性重建值,确定当前节点的属性预测值。在解码器侧,通过确定当前节点的N个待搜索邻居节点;若所述N个待搜索邻居节点中存在与所述当前节点共面且已解码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值;若所述N个待搜索邻居节点中存在与所述当前节点共线且已解码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值;基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值。这样,在根据当前节点与邻居节点之间的几何空间关系进行属性预测时,由于扩大了邻居搜索范围,可以充分利用点云的空间相关性,使得预测残差更小,从而能够降低码率,进而提高编解码效率。

Claims (45)

1.一种预测方法,应用于编码器,所述方法包括:
确定当前节点的N个待搜索邻居节点;
若所述N个待搜索邻居节点中存在与所述当前节点共面且已编码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值;
若所述N个待搜索邻居节点中存在与所述当前节点共线且已编码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值;
基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值。
2.根据权利要求1所述的方法,其中,所述确定当前节点的N个待搜索邻居节点,包括:
对点云进行空间划分,得到至少一个点;
基于所述当前节点的几何位置,从所述至少一个点中确定所述当前节点的邻居信息;
从所述当前节点的邻居信息中,确定所述N个待搜索邻居节点。
3.根据权利要求2所述的方法,其中,所述当前节点的邻居信息包括:与所述当前节点共面的六个邻居节点、与所述当前节点共线的十二个邻居节点和与所述当前节点共点的八个邻居节点。
4.根据权利要求2所述的方法,其中,从所述当前节点的邻居信息中,确定所述N个待搜索邻居节点,包括:
将与所述当前节点共面的六个邻居节点中一定已编码的三个邻居节点确定为三个待搜索邻居节点,将与所述当前节点共线的十二个邻居节点中一定已编码的三个邻居节点确定为三个待搜索邻居节点;
基于所述当前节点与邻居节点之间的几何空间关系,将与所述当前节点共线的剩余九个邻居节点中可能已编码的n个邻居节点确定为n个待搜索邻居节点,n为大于0且小于9的整数;
将得到的(6+n)个待搜索邻居节点确定为所述N个待搜索邻居节点。
5.根据权利要求1所述的方法,其中,N为大于6的整数。
6.根据权利要求1所述的方法,其中,在所述确定当前节点的N个待搜索邻居节点之后,所述方法还包括:
确定所述当前节点的基准点;
对所述基准点与所述N个待搜索邻居节点之间的坐标信息进行差值计算,得到N个坐标差值;
计算所述N个坐标差值的莫顿码,并将所述N个坐标差值的莫顿码存储在预设查找表中;
根据所述预设查找表,确定所述N个待搜索邻居节点的莫顿码。
7.根据权利要求6所述的方法,其中,所述确定所述当前节点的基准点,包括:
计算所述当前节点的莫顿码;
根据所述当前节点的莫顿码,从所述当前节点的邻居信息中确定最小莫顿码对应的邻居节点;
将所述最小莫顿码对应的邻居节点确定为基准点。
8.根据权利要求7所述的方法,其中,所述根据所述当前节点的莫顿码,从所述当前节点的邻居信息中确定最小莫顿码对应的邻居节点,包括:
根据所述当前节点的莫顿码,确定所述当前节点的坐标信息;
基于所述当前节点的坐标信息,确定所述当前节点的邻居信息中至少一个邻居节点的莫顿码;
从所述至少一个邻居节点的莫顿码中选取最小莫顿码,得到所述最小莫顿码对应的邻居节点。
9.根据权利要求6所述的方法,其中,所述根据所述预设查找表,确定所述N个待搜索邻居节点的莫顿码,包括:
确定所述基准点的莫顿码;
从所述预设查找表中,获取所述N个坐标差值的莫顿码;
对所述基准点的莫顿码和所述N个坐标差值的莫顿码进行计算,得到所述N个待搜索邻居节点的莫顿码。
10.根据权利要求6所述的方法,其中,在所述确定所述N个待搜索邻居节点的莫顿码之后,所述方法还包括:
遍历预设点云序列,判断所述预设点云序列是否存在第一待搜索邻居节点的莫顿码;
若判断结果为是,则确定所述N个待搜索邻居节点中存在所述第一待搜索邻居节点;
若判断结果为否,则确定所述N个待搜索邻居节点中不存在所述第一待搜索邻居节点;
其中,所述第一待搜索邻居节点为所述N个待搜索邻居节点中的任意一个待搜索邻居节点。
11.根据权利要求10所述的方法,其中,所述方法还包括:
确定包括所述当前节点的点云中至少一个点的莫顿码;
将所述莫顿码按照由小到大的顺序排列,得到莫顿码序;
从所述莫顿码序中截取比所述当前节点的莫顿码小的莫顿码,并根据所截取的莫顿码得到所述预设点云序列。
12.根据权利要求6所述的方法,其中,在所述确定所述N个待搜索邻居节点的莫顿码之后,所述方法还包括:
判断第一待搜索邻居节点的莫顿码是否小于所述当前节点的莫顿码;
若判断结果为是,则确定所述N个待搜索邻居节点中存在所述第一待搜索邻居节点;
若判断结果为否,则确定所述N个待搜索邻居节点中不存在所述第一待搜索邻居节点;
其中,所述第一待搜索邻居节点为所述N个待搜索邻居节点中的任意一个待搜索邻居节点。
13.根据权利要求10或12所述的方法,其中,当所述N个待搜索邻居节点中存在所述第一待搜索邻居节点时,所述方法还包括:
若所述第一待搜索邻居节点为所述当前节点的共面邻居节点,则确定所述N个待搜索邻居节点中存在与所述当前节点共面且已编码的共面邻居节点;
若所述第一待搜索邻居节点为所述当前节点的共线邻居节点,则确定所述N个待搜索邻居节点中存在与所述当前节点共线且已编码的共线邻居节点。
14.根据权利要求1所述的方法,其中,所述方法还包括:
将N的取值写入码流。
15.根据权利要求1至14任一项所述的方法,其中,所述方法还包括:
设置参考邻居节点的数量为K个,K为大于0且小于或等于N的整数。
16.根据权利要求15所述的方法,其中,所述方法还包括:
判断所述N个待搜索邻居节点中是否存在与所述当前节点共面且已编码的共面邻居节点;
若所述N个待搜索邻居节点中存在K个与所述当前节点共面且已编码的共面邻居节点,则获取所述K个共面邻居节点的第一属性重建值;
相应地,所述基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值,包括:
对所述K个共面邻居节点的第一属性重建值进行均值计算,确定所述当前节点的属性预测值。
17.根据权利要求15所述的方法,其中,所述方法还包括:
判断所述N个待搜索邻居节点中是否存在与所述当前节点共面且已编码的共面邻居节点;
若所述N个待搜索邻居节点中不存在与所述当前节点共面且已编码的共面邻居节点,则判断所述N个待搜索邻居节点中是否存在与所述当前节点共线且已编码的共线邻居节点;
若所述N个待搜索邻居节点中存在K个与所述当前节点共线且已编码的共线邻居节点,则获取所述K个共线邻居节点的第二属性重建值;
相应地,所述基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值,包括:
对所述K个共线邻居节点的第二属性重建值进行均值计算,确定所述当前节点的属性预测值。
18.根据权利要求15所述的方法,其中,所述方法还包括:
判断所述N个待搜索邻居节点中是否存在与所述当前节点共面且已编码的共面邻居节点;
若所述N个待搜索邻居节点中存在M个与所述当前节点共面且已编码的共面邻居节点,则获取所述M个共面邻居节点的第一属性重建值,M为大于0且小于K的整数;
判断所述N个待搜索邻居节点中是否存在与所述当前节点共线且已编码的共线邻居节点;
若所述N个待搜索邻居节点中存在L个与所述当前节点共线且已编码的共线邻居节点,则获取所述L个共线邻居节点的第二属性重建值;其中,L为大于0且小于或等于(K-M)的整数;
相应地,所述基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值,包括:
对所述M个第一属性重建值和所述L个第二属性重建值进行加权计算,确定所述当前节点的属性预测值。
19.根据权利要求15所述的方法,其中,所述方法还包括:
将K的取值写入码流。
20.根据权利要求11所述的方法,其中,所述方法还包括:
若所述N个待搜索邻居节点中不存在与所述当前节点共面且已编码的共面邻居节点且不存在与所述当前节点共线且已编码的共线邻居节点,则从所述莫顿码序中确定位于所述当前节点的莫顿码的前一个莫顿码,将所述前一个莫顿码对应的点的属性重建值确定为所述当前节点的属性预测值。
21.一种预测方法,应用于解码器,所述方法包括:
确定当前节点的N个待搜索邻居节点;
若所述N个待搜索邻居节点中存在与所述当前节点共面且已解码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值;
若所述N个待搜索邻居节点中存在与所述当前节点共线且已解码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值;
基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值。
22.根据权利要求21所述的方法,其中,所述确定当前节点的N个待搜索邻居节点,包括:
对点云进行空间划分,得到至少一个点;
基于所述当前节点的几何位置,从所述至少一个点中确定所述当前节点的邻居信息;
从所述当前节点的邻居信息中,确定所述N个待搜索邻居节点。
23.根据权利要求22所述的方法,其中,所述当前节点的邻居信息包括:与所述当前节点共面的六个邻居节点、与所述当前节点共线的十二个邻居节点和与所述当前节点共点的八个邻居节点。
24.根据权利要求22所述的方法,其中,从所述当前节点的邻居信息中,确定所述N个待搜索邻居节点,包括:
将与所述当前节点共面的六个邻居节点中一定已解码的三个邻居节点确定为三个待搜索邻居节点,将与所述当前节点共线的十二个邻居节点中一定已解码的三个邻居节点确定为三个待搜索邻居节点;
基于所述当前节点与邻居节点之间的几何空间关系,将与所述当前节点共线的剩余九个邻居节点中可能已解码的n个邻居节点确定为n个待搜索邻居节点,n为大于0且小于9的整数;
将得到的(6+n)个待搜索邻居节点确定为所述N个待搜索邻居节点。
25.根据权利要求21所述的方法,其中,N为大于6的整数。
26.根据权利要求21所述的方法,其中,在所述确定当前节点的N个待搜索邻居节点之后,所述方法还包括:
确定所述当前节点的基准点;
对所述基准点与所述N个待搜索邻居节点之间的坐标信息进行差值计算,得到N个坐标差值;
计算所述N个坐标差值的莫顿码,并将所述N个坐标差值的莫顿码存储在预设查找表中;
根据所述预设查找表,确定所述N个待搜索邻居节点的莫顿码。
27.根据权利要求26所述的方法,其中,所述确定所述当前节点的基准点,包括:
计算所述当前节点的莫顿码;
根据所述当前节点的莫顿码,从所述当前节点的邻居信息中确定最小莫顿码对应的邻居节点;
将所述最小莫顿码对应的邻居节点确定为基准点。
28.根据权利要求27所述的方法,其中,所述根据所述当前节点的莫顿码,从所述当前节点的邻居信息中确定最小莫顿码对应的邻居节点,包括:
根据所述当前节点的莫顿码,确定所述当前节点的坐标信息;
基于所述当前节点的坐标信息,确定所述当前节点的邻居信息中至少一个邻居节点的莫顿码;
从所述至少一个邻居节点的莫顿码中选取最小莫顿码,得到所述最小莫顿码对应的邻居节点。
29.根据权利要求26所述的方法,其中,所述根据所述预设查找表,确定所述N个待搜索邻居节点的莫顿码,包括:
确定所述基准点的莫顿码;
从所述预设查找表中,获取所述N个坐标差值的莫顿码;
对所述基准点的莫顿码和所述N个坐标差值的莫顿码进行计算,得到所述N个待搜索邻居节点的莫顿码。
30.根据权利要求26所述的方法,其中,在所述确定所述N个待搜索邻居节点的莫顿码之后,所述方法还包括:
遍历预设点云序列,判断所述预设点云序列是否存在第一待搜索邻居节点的莫顿码;
若判断结果为是,则确定所述N个待搜索邻居节点中存在所述第一待搜索邻居节点;
若判断结果为否,则确定所述N个待搜索邻居节点中不存在所述第一待搜索邻居节点;
其中,所述第一待搜索邻居节点为所述N个待搜索邻居节点中的任意一个待搜索邻居节点。
31.根据权利要求30所述的方法,其中,所述方法还包括:
确定包括所述当前节点的点云中至少一个点的莫顿码;
将所述莫顿码按照由小到大的顺序排列,得到莫顿码序;
从所述莫顿码序中截取比所述当前节点的莫顿码小的莫顿码,并根据所截取的莫顿码得到所述预设点云序列。
32.根据权利要求26所述的方法,其中,在所述确定所述N个待搜索邻居节点的莫顿码之后,所述方法还包括:
判断第一待搜索邻居节点的莫顿码是否小于所述当前节点的莫顿码;
若判断结果为是,则确定所述N个待搜索邻居节点中存在所述第一待搜索邻居节点;
若判断结果为否,则确定所述N个待搜索邻居节点中不存在所述第一待搜索邻居节点;
其中,所述第一待搜索邻居节点为所述N个待搜索邻居节点中的任意一个待搜索邻居节点。
33.根据权利要求30或32所述的方法,其中,当所述N个待搜索邻居节点中存在所述第一待搜索邻居节点时,所述方法还包括:
若所述第一待搜索邻居节点为所述当前节点的共面邻居节点,则确定所述N个待搜索邻居节点中存在与所述当前节点共面且已解码的共面邻居节点;
若所述第一待搜索邻居节点为所述当前节点的共线邻居节点,则确定所述N个待搜索邻居节点中存在与所述当前节点共线且已解码的共线邻居节点。
34.根据权利要求21所述的方法,其中,所述方法还包括:
解析码流,获取N的取值。
35.根据权利要求21至34任一项所述的方法,其中,所述方法还包括:
设置参考邻居节点的数量为K个,K为大于0且小于或等于N的整数。
36.根据权利要求21至34任一项所述的方法,其中,所述方法还包括:
解析码流,获取K的取值;其中,K表示参考邻居节点的数量。
37.根据权利要求35或36所述的方法,其中,所述方法还包括:
判断所述N个待搜索邻居节点中是否存在与所述当前节点共面且已解码的共面邻居节点;
若所述N个待搜索邻居节点中存在K个与所述当前节点共面且已解码的共面邻居节点,则获取所述K个共面邻居节点的第一属性重建值;
相应地,所述基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值,包括:
对所述K个共面邻居节点的第一属性重建值进行均值计算,确定所述当前节点的属性预测值。
38.根据权利要求35或36所述的方法,其中,所述方法还包括:
判断所述N个待搜索邻居节点中是否存在与所述当前节点共面且已解码的共面邻居节点;
若所述N个待搜索邻居节点中不存在与所述当前节点共面且已解码的共面邻居节点,则判断所述N个待搜索邻居节点中是否存在与所述当前节点共线且已解码的共线邻居节点;
若所述N个待搜索邻居节点中存在K个与所述当前节点共线且已解码的共线邻居节点,则获取所述K个共线邻居节点的第二属性重建值;
相应地,所述基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值,包括:
对所述K个共线邻居节点的第二属性重建值进行均值计算,确定所述当前节点的属性预测值。
39.根据权利要求35或36所述的方法,其中,所述方法还包括:
判断所述N个待搜索邻居节点中是否存在与所述当前节点共面且已解码的共面邻居节点;
若所述N个待搜索邻居节点中存在M个与所述当前节点共面且已解码的共面邻居节点,则获取所述M个共面邻居节点的第一属性重建值,M为大于0且小于K的整数;
判断所述N个待搜索邻居节点中是否存在与所述当前节点共线且已解码的共线邻居节点;
若所述N个待搜索邻居节点中存在L个与所述当前节点共线且已解码的共线邻居节点,则获取所述L个共线邻居节点的第二属性重建值;其中,L为大于0且小于或等于(K-M)的整数;
相应地,所述基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值,包括:
对所述M个第一属性重建值和所述L个第二属性重建值进行加权计算,确定所述当前节点的属性预测值。
40.根据权利要求31所述的方法,其中,所述方法还包括:
若所述N个待搜索邻居节点中不存在与所述当前节点共面且已解码的共面邻居节点且不存在与所述当前节点共线且已解码的共线邻居节点,则从所述莫顿码序中确定位于所述当前节点的莫顿码的前一个莫顿码,将所述前一个莫顿码对应的点的属性重建值确定为所述当前节点的属性预测值。
41.一种编码器,所述编码器包括第一确定单元、第一判断单元和第一预测单元;其中,
所述第一确定单元,配置为确定当前节点的N个待搜索邻居节点;
所述第一判断单元,配置为若所述N个待搜索邻居节点中存在与所述当前节点共面且已编码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值;
所述第一判断单元,还配置为若所述N个待搜索邻居节点中存在与所述当前节点共线且已编码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值;
所述第一预测单元,配置为基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值。
42.一种编码器,所述编码器包括第一存储器和第一处理器;其中,
所述第一存储器,用于存储能够在所述第一处理器上运行的计算机程序;
所述第一处理器,用于在运行所述计算机程序时,执行如权利要求1至20任一项所述的方法。
43.一种解码器,所述解码器包括第二确定单元、第二判断单元和第二预测单元;其中,
所述第二确定单元,配置为确定当前节点的N个待搜索邻居节点;
所述第二判断单元,配置为若所述N个待搜索邻居节点中存在与所述当前节点共面且已解码的共面邻居节点,则获取所述共面邻居节点的第一属性重建值;
所述第二判断单元,还配置为若所述N个待搜索邻居节点中存在与所述当前节点共线且已解码的共线邻居节点,则获取所述共线邻居节点的第二属性重建值;
所述第二预测单元,配置为基于所述第一属性重建值和/或所述第二属性重建值,确定所述当前节点的属性预测值。
44.一种解码器,所述解码器包括第二存储器和第二处理器;其中,
所述第二存储器,用于存储能够在所述第二处理器上运行的计算机程序;
所述第二处理器,用于在运行所述计算机程序时,执行如权利要求21至40任一项所述的方法。
45.一种计算机存储介质,其中,所述计算机存储介质存储有计算机程序,所述计算机程序被第一处理器执行时实现如权利要求1至20任一项所述的方法、或者被第二处理器执行时实现如权利要求21至40任一项所述的方法。
CN202311829559.0A 2020-12-03 2020-12-03 预测方法、编码器、解码器以及计算机存储介质 Pending CN117793372A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311829559.0A CN117793372A (zh) 2020-12-03 2020-12-03 预测方法、编码器、解码器以及计算机存储介质

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN202080107458.0A CN116547968A (zh) 2020-12-03 2020-12-03 预测方法、编码器、解码器以及计算机存储介质
PCT/CN2020/133704 WO2022116117A1 (zh) 2020-12-03 2020-12-03 预测方法、编码器、解码器以及计算机存储介质
CN202311829559.0A CN117793372A (zh) 2020-12-03 2020-12-03 预测方法、编码器、解码器以及计算机存储介质

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN202080107458.0A Division CN116547968A (zh) 2020-12-03 2020-12-03 预测方法、编码器、解码器以及计算机存储介质

Publications (1)

Publication Number Publication Date
CN117793372A true CN117793372A (zh) 2024-03-29

Family

ID=81852825

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202311829559.0A Pending CN117793372A (zh) 2020-12-03 2020-12-03 预测方法、编码器、解码器以及计算机存储介质
CN202080107458.0A Pending CN116547968A (zh) 2020-12-03 2020-12-03 预测方法、编码器、解码器以及计算机存储介质

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202080107458.0A Pending CN116547968A (zh) 2020-12-03 2020-12-03 预测方法、编码器、解码器以及计算机存储介质

Country Status (2)

Country Link
CN (2) CN117793372A (zh)
WO (1) WO2022116117A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024011472A1 (zh) * 2022-07-13 2024-01-18 Oppo广东移动通信有限公司 点云编解码方法、编解码器及计算机存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10861196B2 (en) * 2017-09-14 2020-12-08 Apple Inc. Point cloud compression
US12034979B2 (en) * 2019-03-20 2024-07-09 Lg Electronics Inc. Point cloud data transmission device, point cloud data transmission method, point cloud data reception device and point cloud data reception method
CN111145090B (zh) * 2019-11-29 2023-04-25 鹏城实验室 一种点云属性编码方法、解码方法、编码设备及解码设备
CN111405284B (zh) * 2020-03-30 2022-05-31 北京大学深圳研究生院 一种基于点云密度的属性预测方法及设备
CN111953998B (zh) * 2020-08-16 2022-11-11 西安电子科技大学 基于dct变换的点云属性编码及解码方法、装置及系统

Also Published As

Publication number Publication date
WO2022116117A1 (zh) 2022-06-09
CN116547968A (zh) 2023-08-04

Similar Documents

Publication Publication Date Title
US12026922B2 (en) Attribute parameter coding for geometry-based point cloud compression
CN115462083A (zh) 发送点云数据的设备、发送点云数据的方法、接收点云数据的设备和接收点云数据的方法
CN114175100A (zh) 用于处理点云数据的方法和装置
CN114930858A (zh) 用于基于几何的点云压缩的高级语法
US11483363B2 (en) Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
US11770562B2 (en) High-level syntax for geometry-based point cloud compression
US20240282009A1 (en) Point cloud encoding and decoding method, and decoder
CN117793372A (zh) 预测方法、编码器、解码器以及计算机存储介质
CN115086716B (zh) 点云中邻居点的选择方法、装置及编解码器
WO2022116118A1 (zh) 预测方法、编码器、解码器以及存储介质
WO2023123284A1 (zh) 一种解码方法、编码方法、解码器、编码器及存储介质
US20230386089A1 (en) Point cloud decoding method, decoder, and non-transitory computer-readable storage medium
EP4395320A1 (en) Point cloud data transmission method, point cloud data transmission device, point cloud data reception method, and point cloud data reception device
WO2023173238A1 (zh) 编解码方法、码流、编码器、解码器以及存储介质
US20230377207A1 (en) Geometry reconstruction method, decoder and computer storage medium
US20230102401A1 (en) Inter prediction coding for geometry point cloud compression
WO2024145910A1 (zh) 编解码方法、码流、编码器、解码器以及存储介质
WO2023056232A1 (en) Inter prediction coding for geometry point cloud compression
KR20240093534A (ko) 메시 압축을 위한 변위 코딩
WO2023091260A1 (en) Outlier grouping based point cloud compression
CN117980953A (zh) 用于几何点云压缩的帧间预测译码
CN118302793A (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