CN120835147A - 点云信息的解码、编码方法、装置及相关设备 - Google Patents
点云信息的解码、编码方法、装置及相关设备Info
- Publication number
- CN120835147A CN120835147A CN202410457542.5A CN202410457542A CN120835147A CN 120835147 A CN120835147 A CN 120835147A CN 202410457542 A CN202410457542 A CN 202410457542A CN 120835147 A CN120835147 A CN 120835147A
- Authority
- CN
- China
- Prior art keywords
- layer
- information
- prediction mode
- target
- layers
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/20—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请公开了一种点云信息的解码、编码方法、装置及相关设备,属于编解码技术领域,本申请实施例的点云信息的解码方法包括:解码端对码流进行解码处理,得到第一信息或者得到第一信息和第二信息;其中,所述第一信息用于指示目标点云的树形数据结构包括的N个变换层中除K个预设变换层之外的N‑K个变换层的预测模式,所述第二信息用于指示K个预设变换层对应的同一种预测模式,N为正整数,0<K≤N,且K为整数;所述解码端根据所述第一信息以及所述K个预设变换层对应的预先约定的预测模式,或者,根据所述第一信息和所述第二信息,得到所述N个变换层的预测模式。
Description
技术领域
本申请属于编解码技术领域,具体涉及一种点云信息的解码、编码方法、装置及相关设备。
背景技术
相关技术中,在对点云的属性信息进行编码时,可以采用分层区域自适应变换(Region Adaptive Hierarchical Transform,RAHT)编码方式,该编码方式中需要对每个RAHT变换层的预测方法进行编码,在点云的变换树结构中包括较大数量的变换层的情况下,会消耗较大的编码资源,且不利于提高编码效率。
发明内容
本申请实施例提供一种点云信息的解码、编码方法、装置及相关设备,能够解决现有点云的预测信息的编码方案会消耗较大的编码资源,且不利于提高编码效率的问题。
第一方面,提供了一种点云信息的解码方法,包括:
解码端对码流进行解码处理,得到第一信息或者得到第一信息和第二信息;其中,所述第一信息用于指示目标点云的树形数据结构包括的N个变换层中除K个预设变换层之外的N-K个变换层的预测模式,所述第二信息用于指示K个预设变换层对应的同一种预测模式,N为正整数,0<K≤N,且K为整数;
所述解码端根据所述第一信息以及所述K个预设变换层对应的预先约定的预测模式,或者,根据所述第一信息和所述第二信息,得到所述N个变换层的预测模式。
第二方面,提供了一种点云信息的编码方法,包括:
编码端构建目标点云的树形数据结构,所述树形数据结构包括N个变换层,N为正整数;
所述编码端确定所述树形数据结构的N个变换层的预测模式,其中,所述树形数据结构的K个预设变换层的预测模式为预先约定的预测模式,或者,所述K个预设变换层的预测模式为同一种预测模式,0<K≤N,且K为整数;
所述编码端对所述树形数据结构的变换层的预测模式进行编码,得到码流,所述码流包括第一信息,或者包括第一信息和第二信息;
其中,所述第一信息用于指示所述N个变换层中除所述K个预设变换层之外的N-K个变换层的预测模式;所述第二信息用于指示所述同一种预测模式。
第三方面,提供了一种点云信息的解码装置,包括:
第一获取模块,用于对码流进行解码处理,得到第一信息或者得到第一信息和第二信息;其中,所述第一信息用于指示目标点云的树形数据结构包括的N个变换层中除K个预设变换层之外的N-K个变换层的预测模式,所述第二信息用于指示K个预设变换层对应的同一种预测模式,N为正整数,0<K≤N,且K为整数;
第二获取模块,用于根据所述第一信息以及所述K个预设变换层对应的预先约定的预测模式,或者,根据所述第一信息和所述第二信息,得到所述N个变换层的预测模式。
第四方面,提供了一种点云信息的编码装置,包括:
第二构建模块,用于构建目标点云的树形数据结构,所述树形数据结构包括N个变换层,N为正整数;
确定模块,用于确定所述树形数据结构的N个变换层的预测模式,其中,所述树形数据结构的K个预设变换层的预测模式为预先约定的预测模式,或者,所述K个预设变换层的预测模式为同一种预测模式,0<K≤N,且K为整数;
第四获取模块,用于对所述树形数据结构的变换层的预测模式进行编码,得到码流,所述码流包括第一信息,或者包括第一信息和第二信息;
其中,所述第一信息用于指示所述N个变换层中除所述K个预设变换层之外的N-K个变换层的预测模式;所述第二信息用于指示所述同一种预测模式。
第五方面,提供了一种电子设备,该终端包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤,或者实现如第二方面所述的方法的步骤。
第六方面,提供了一种电子设备,包括处理器及通信接口,其中,所述处理器用于对码流进行解码处理,得到第一信息或者得到第一信息和第二信息;其中,所述第一信息用于指示目标点云的树形数据结构包括的N个变换层中除K个预设变换层之外的N-K个变换层的预测模式,所述第二信息用于指示K个预设变换层对应的同一种预测模式,N为正整数,0<K≤N,且K为整数;根据所述第一信息以及所述K个预设变换层对应的预先约定的预测模式,或者,根据所述第一信息和所述第二信息,得到所述N个变换层的预测模式;或者,用于构建目标点云的树形数据结构,所述树形数据结构包括N个变换层,N为正整数;确定所述树形数据结构的N个变换层的预测模式,其中,所述树形数据结构的K个预设变换层的预测模式为预先约定的预测模式,或者,所述K个预设变换层的预测模式为同一种预测模式,0<K≤N,且K为整数;对所述树形数据结构的变换层的预测模式进行编码,得到码流,所述码流包括第一信息,或者包括第一信息和第二信息;其中,所述第一信息用于指示所述N个变换层中除所述K个预设变换层之外的N-K个变换层的预测模式;所述第二信息用于指示所述同一种预测模式。
第七方面,提供了一种电子设备,包括:存储器,被配置为存储视频数据,以及处理电路,被配置为实现如第一方面所述的方法的步骤,或者实现如第二方面所述的方法的步骤。
第八方面,提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤,或者实现如第二方面所述的方法的步骤。
第九方面,提供了一种编解码系统,包括:编码端设备及解码端设备,所述解码端设备可用于执行如第一方面所述的方法的步骤,所述编码端设备可用于执行如第二方面所述的方法的步骤。
第十方面,提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的方法的步骤,或实现如第二方面所述的方法的步骤。
第十一方面,提供了一种计算机程序/程序产品,所述计算机程序/程序产品被存储在存储介质中,所述程序/程序产品被至少一个处理器执行以实现如第一方面所述的方法的步骤,或者实现如第二方面所述的方法的步骤。
第十二方面,提供一种计算机程序产品,包括计算机指令,该计算机指令被处理器执行时实现如第一方面所述的方法的步骤,或者实现如第二方面所述的方法的步骤。
在本申请实施例中,解码端对码流进行解码处理,得到第一信息或者得到第一信息和第二信息;其中,所述第一信息用于指示目标点云的树形数据结构包括的N个变换层中除K个预设变换层之外的N-K个变换层的预测模式;根据所述第一信息以及所述K个预设变换层对应的预先约定的预测模式,或者,根据所述第一信息和所述第二信息,得到所述N个变换层的预测模式。上述方案中,由于K个预设变换层的预测模式是预先约定的或者对应同一种预测模式,因此,编码端可以无需对该K个预设变换层的预测模式进行编码或者对于该K个预设变换层仅编码上述一种预测模式,从而能够减少编码比特,节省编码资源,并提高编码效率。
附图说明
图1表示本申请实施例提供的编解码系统的示意图;
图2a表示基于AVS-PCC的编码框架的编码器执行的编码流程图;
图2b表示基于MPEG G-PCC的编码框架的编码器执行的编码流程图;
图3a表示基于AVS-PCC的解码框架的解码器执行的解码流程图;
图3b表示基于MPEG G-PCC的解码框架的解码器执行的解码流程图;
图4表示本申请实施例的点云信息的解码方法的流程示意图;
图5表示本申请实施例的点云信息的编码方法的流程示意图;
图6表示本申请实施例的点云信息的解码装置的模块示意图;
图7表示本申请实施例的点云信息的编码装置的模块示意图;
图8表示本申请实施例的电子设备的结构框图;
图9表示本申请实施例的终端的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。
本申请的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”所区别的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,本申请中的“或”表示所连接对象的至少其中之一。例如“A或B”涵盖三种方案,即,方案一:包括A且不包括B;方案二:包括B且不包括A;方案三:既包括A又包括B。字符“/”一般表示前后关联对象是一种“或”的关系。
在介绍本申请实施例提供的技术方案之前,首先介绍其中的一些名词的含义。
点云(Point Cloud):点云是指空间中一组无规则分布的、表达三维物体或三维场景的空间结构及表面属性的离散点集。可以根据不同的分类标准将点云划分为不同的类别,例如,按照点云的获取方式划分,可以分为密集型点云和稀疏型点云;又如,按照点云的时序类型划分,可以分为静态点云和动态点云。
点云数据(Point Cloud Data):点云中各个点具备的几何坐标信息和属性信息共同组成点云数据。其中,几何坐标信息也可以称为三维位置信息,点云中某个点的几何坐标信息是指该点的空间坐标(x,y,z),可以包括该点在三维坐标系统的各个坐标轴方向上的坐标值,例如,X轴方向上的坐标值x,Y轴方向上的坐标值y和Z轴方向上的坐标值z。点云中某个点的属性信息可以包括以下至少一种:颜色信息、材质信息、激光反射强度信息(也可以称为反射率)。通常,点云中的每个点具有相同数量的属性信息,例如,点云中的每个点都可以具有颜色信息和激光反射强度两种属性信息,又如,点云中的每个点都可以具有颜色信息、材质信息和激光反射强度信息三种属性信息。
点云编码(Point Cloud Compression,PCC):点云编码是指对点云中各点的几何坐标信息和属性信息进行编码,得到压缩码流的过程。点云编码可以包括几何坐标信息编码和属性信息编码两个主要过程。目前,可对点云进行压缩的点云编码框架可以是运动图像专家组(Moving Picture Experts Group,MPEG)提供的基于几何的点云压缩(GeometryPoint Cloud Compression,G-PCC)编解码框架或基于视频的点云压缩(Video PointCloud Compression,V-PCC)编解码框架,也可以是音视频标准(Audio Video Standard,AVS)提供的AVS-PCC编解码框架。
点云解码:点云解码是指对点云编码得到的压缩码流进行解码,以重建点云的过程。详细地说,是指基于压缩码流中的几何比特流和属性比特流,重建点云中各点的几何坐标信息和属性信息的过程。在解码端获得压缩码流之后,对于几何比特流,首先进行熵解码,得到点云中各点量化后的信息,然后进行反量化,以重建点云中各点的几何坐标信息。
而对于属性比特流,首先进行熵解码,得到点云中各点量化后的属性残差信息或量化后的残差变换系数;然后对量化后的属性残差信息进行反量化得到重建残差信息,或者对量化后的残差变换系数进行反量化得到重建残差变换系数,重建残差变换系数经反变换后得到重建残差信息。然后重建残差信息加上属性预测信息就得到了重建点云中各点的属性信息。最终的得到重建点云。
图1是本申请实施例提供的编解码系统10的示意图。本申请实施例的技术方案涉及对点云数据进行编解码(CODEC)(包括编码或解码)。
如图1所示,编解码系统10包括源设备100,源设备100提供被目的地设备110解码和显示的已编码的点云数据。具体地,源设备100经由通信介质120向目的地设备110提供点云数据。源设备100和目的地设备110可以包括台式计算机、笔记本(即,膝上型)计算机、平板计算机、机顶盒、移动电话、可穿戴设备(例如智能手表或可穿戴相机)、电视、相机、显示设备、车载设备、虚拟现实(virtual reality,VR)设备、增强现实(Augmented reality,AR)设备、混合现实(mixed reality,MR)设备、数字媒体播放器、视频游戏控制台、视频会议设备、视频流式传输设备、广播接收器设备、广播发射器设备、航天器、飞机、机器人、卫星等任意一种或多种。
在图1的示例中,源设备100包括数据源101、存储器102、编码器200以及输出接口104。目的地设备110包括输入接口111、解码器300、存储器113和显示设备114。源设备100表示编码设备的示例,而目的地设备110表示解码设备的示例。在其他示例中,源设备100和目的地设备110可以不包括图1中的部分组件,或者也可以包括图1以外的其他组件。例如,源设备100可以通过外部捕获设备获取点云数据。同样,目的地设备110可以与外部显示设备接口连接,而不包括集成的显示设备。再例如,存储器102、存储器113可以是外置的存储器。
虽然图1将源设备100和目的地设备110绘示为单独的设备,但在一些示例中,二者也可以集成在一个设备中。在此类实施例中,可以使用相同硬件或软件,或使用单独的硬件或软件,或其任何组合来实施源设备100对应的功能以及目的地设备110对应的功能。
在一些示例中,源设备100和目的地设备110可以进行单向数据传输或双向数据传输。如果是双向数据传输,则源设备100和目的设备110可以以基本对称的方式操作,即源设备100和目的地设备110中的每一个都包括编码器和解码器。
数据源101表示点云数据的源(即,原始的、未编码的点云数据)并且向编码器200提供包含点云数据,编码器103对点云数据进行编码。源设备100可以包括捕获设备(例如摄像设备、传感设备或扫描设备)、包括先前捕获的点云数据的存档或用于从数据内容提供商接收点云数据的馈送接口。其中,摄像设备可以包括普通摄像头、立体摄像头、以及光场摄像头等,传感设备可以包括激光设备、雷达设备等,扫描设备可以包括三维激光扫描设备等。通过捕获设备采集真实世界的视觉场景可以得到点云数据。作为替代,数据源101可以生成基于计算机图形的数据作为源数据,或者对实时数据、存档数据和计算机生成的数据进行组合。例如,数据源根据虚拟对象(例如通过三维建模得到的虚拟三维物体及虚拟三维场景)的生成点云数据。
编码器200对所捕获的、预捕获的或计算机生成的数据进行编码。编码器200可以将点云数据从所接收的顺序(有时被称为“显示顺序″)重新按照编码顺序布置。编码器200可以生成包括已编码的点云数据的比特流。源设备100随后可以经由输出接口104将已编码的点云数据输出到通信介质120上,以供例如目的地设备110的输入接口111接收或检索。
源设备100的存储器102和目的地设备110的存储器113表示通用存储器。在一些示例中,存储器102可以存储来自数据源101的原始数据,存储器113可以存储来自解码器300的已解码的点云数据。附加地或替代地,存储器102、113可以分别存储能由例如编码器200和解码器300执行的软件指令。尽管在此示例中存储器102和存储器113与编码器200和解码器300被分开地示出,但应理解,编码器200和解码器300还可以包括用于功能上类似或等同目的的内部存储器。若编码器200和解码器300部署在同一个硬件设备上,存储器102和存储器113可以是同一个存储器。此外,存储器102、113可以存储例如从编码器200输出且被输入到解码器300的已编码的点云数据。在一些示例中,存储器102、113的部分可以被分配为一个或多个点云缓冲器,例如用于存储原始的、已解码的或已编码的点云数据。
在一些示例中,源设备100可以将已编码的数据从输出接口104输出到存储器113。类似地,目的地设备110可以经由输入接口111从存储器113访问已编码的数据。存储器113或存储器102可以包括各种分布式或本地访问的数据存储介质中的任何一种,诸如硬驱动器、蓝光光盘、数字多功能光盘(Digital Versatile Disc,DVD)、只读光盘(Compact DiscRead-Only Memory,CD-ROM)、闪存、易失性或非易失性存储器或者用于存储已编码的点云数据的任何其他合适的数字存储介质。
输出接口104可以包括能够将已编码的点云数据从源设备100发送至目的地设备110的任何类型的介质或设备。例如,输出接口104可以包括被配置为将已编码的点云数据从源设备100直接实时发送至目的地设备110的发送器或收发器,例如天线。已编码的点云数据可以根据无线通信协议的通信标准被调制,并且被发送至目的地设备110。
通信介质120可以包括瞬时介质,诸如无线广播或有线网络传输。例如,通信介质120可以包括射频(radio frequency,RF)频谱或者一个或更多个物理传输线(例如,电缆)。通信介质120可以形成基于分组的网络(诸如局域网、广域网或诸如互联网的全球网络)的一部分。通信介质120也可以采用存储介质(例如,非暂时性存储介质)的形式,诸如硬盘、闪存驱动器、压缩盘、数字点云盘、蓝光光盘、易失性或非易失性存储器或用于存储已编码的点云数据的任何其它合适的数字存储介质。
在一些实施方式中,通信介质120可以包括路由器、交换机、基站或可以用于促进从源设备100到目的地设备110的通信的任何其它设备。例如,服务器(未示出)可以从源设备100接收已编码的点云数据提供给目的地设备110,例如,经由网络传输提供给目的地设备110。该服务器可以包括(例如,用于网站的)web服务器、被配置为提供文件传输协议服务(诸如文件传输协议(File Transfer Protocol,FTP)或单向文件传输(File DeliveryOver Unidirectional Transport,FLUTE)协议)的服务器、内容递送网络(contentdelivery network,CDN)设备、超文本传输协议(Hypertext Transfer Protocol,HTTP)服务器、多媒体广播多播服务(Multimedia Broadcast Multicast Services,MBMS)或增强型MBMS(evolved Multimedia Broadcast Multicast Service,eMBMS)服务器或网络附属存储(Network-attached storage,NAS)设备等。服务器可以实施一个或多个HTTP流式传输协议,诸如MPEG媒体传输(MPEG Media Transport,MMT)协议、基于HTTP的动态自适应流式传输(Dynamic Adaptive Streaming over HTTP,DASH)协议、HTTP实时流式传输(HTTP LiveStreaming,HLS)协议或实时流式传输协议(Real Time Streaming Protocol,RTSP)等。
目的地设备110可以从服务器访问已编码的点云数据,例如通过用于访问被存储在服务器上的已编码的点云数据的无线信道(例如,Wi-Fi连接)或有线连接(例如,数字订户线(Digital subscriber line,DSL)、电缆调制解调器等)。
输出接口104和输入接口111可以表示无线发送器/接收器、调制解调器、有线联网组件(例如,以太网卡)、根据IEEE 802.11标准或IEEE 802.15标准(例如,ZigBeeTM)、蓝牙标准等)操作的无线通信组件或者其他物理组件。在输出接口104和输入接口111包括无线组件的示例中,输出接口104和输入接口111可以被配置为根据WIFI、以太网、蜂窝网络(诸如4G、LTE(长期演进)、高级LTE、5G、6G等)来传递数据,诸如已编码的点云数据。
本申请实施例提供的技术可以被应用于支持诸如以下一种或多种应用场景:机器感知点云,其可以用于自主导航系统、实时巡检系统、地理信息系统、视觉分拣机器人、抢险救灾机器人等场景;人眼感知点云,其可以用于数字文化遗产、自由视点广播、三维沉浸通信、三维沉浸交互等点云应用场景。
目的地设备110的输入接口111从通信介质120接收已编码的比特流(bitstream)。已编码的比特流可以包括高层语法元素和已编码的数据单元(例如序列、图片组、图片、切片、块等),其中高层语法元素用于对已编码的数据单元进行解码,得到已解码的点云数据。显示设备114向用户显示已解码的点云数据。显示设备114可以包括阴极射线管(Cathoderay tube,CRT)、液晶显示器(liquid-crystal display,LCD)、等离子显示器、有机发光二极管(organic light-emitting diode,OLED)显示器或其他类型的显示设备。在一些示例中,目的地设备110可以没有显示设备114,例如若已解码的点云数据被用于确定物理对象的位置,显示设备114可以替换为处理器。
编码器200和解码器300可以被实施为各种处理电路中的一个或多个,该处理电路可以包括微处理器、数字信号处理器(Digital Signal Processors,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Arrays,FPGA)、分立逻辑、硬件或其任何组合。当所述技术全部或部分地被实施在软件中时,设备可以将用于软件的指令存储在适当的非暂态计算机可读存储介质中,并且使用一个或多个处理器在硬件中执行指令以执行本申请实施例提供的技术。
下面以G-PCC和AVS-PCC编解码框架为例对本申请实施例提供的编码器200和解码器300的基本原理进行介绍。
G-PCC及AVS-PCC的编解码框架大致相同。如图2a示出了基于AVS-PCC的编码框架的编码器执行的编码流程图,如图2b示出了基于MPEG G-PCC的编码框架的编码器执行的编码流程图,上述编码器可以是图1所示的编码器200。上述编码框架大体均可以分为几何坐标信息编码过程以及属性信息编码过程。在几何信息编码过程中,对点云中各点的几何坐标信息进行编码,得到几何比特流;在属性信息编码过程中,对点云中各点的属性信息进行编码,得到属性比特流;几何比特流和属性比特流共同组成点云的压缩码流。
对于几何信息编码过程,编码器200执行的编码流程如下:
1、预处理(Pre-Processing):可以包括坐标变换(Transform Coordinates)和体素化(Voxelize)。通过缩放和平移的操作,预处理是将三维空间中的点云数据转换成整数形式,并将其最小几何位置移至坐标原点处。在一些示例中,编码器200可以不进行预处理。
2、几何编码:对于AVS-PCC编码框架,几何编码包括两种模式,分别是基于八叉树(Octree)的几何编码和基于预测树的几何编码。对于G-PCC编码框架,几何编码包括三种模式,分别是基于八叉树的几何编码、基于三角表示(Trisoup)的几何编码以及基于预测树的预测编码。
其中:
基于八叉树的几何编码:八叉树是一种树形数据结构,在三维空间划分中,对预先设定的包围盒(bounding box)进行均匀划分,每个节点都具有八个子节点。通过对八叉树各个子节点的占用与否采用“1”和“0”指示,获得占用码信息(Occupancy Code)作为点云几何信息的码流。
基于预测树的几何编码:采用预测策略生成预测树,从预测树的根节点开始遍历每个节点,对遍历到的每个节点对应的残差坐标值进行编码。
基于三角表示的几何编码:将点云划分为一定大小的块(block),定位点云表面在块的边缘的交点(称为顶点)。通过编码块上各边是否有交点以及交点的位置实现几何信息的压缩。
3、几何熵编码(Geometry Entropy Encoding):针对八叉树的占用码信息、预测树的预测残差信息和三角表示的顶点信息,进行统计压缩编码,最后输出二值化(0或者1)的压缩码流。统计编码是一种无损编码方式,可以有效的降低表达同样的信号所需要的码率。常用的统计编码方式是基于上下文的自适应二进制算术编码(Content Adaptive BinaryArithmetic Coding,CABAC)。
4、几何重建:对几何编码后的几何信息进行解码和重建。
对于属性信息编码过程,编码器200执行的编码流程如下:
1、颜色变换:应用变换以将属性的颜色信息变换到不同的域,例如,可以将颜色信息从RGB颜色空间变换到YCbCr颜色空间。
2、属性重上色(Recoloring):有损编码情况下,几何信息编码后,点云的原始几何信息被改变,此时的点云没有任何属性信息附着,要进行属性信息的编码,就要利用点云的原始属性信息对几何编码完成的点云进行重上色。重上色追求以最小失真,给几何编码完成后的重建点云进行重上色。重上色的属性值取自于原始点云的近邻点的属性值,采用的方式是由空间距离决定权重的加权平均方法。
在一些示例中,编码器200可以不执行颜色变换或属性重上色。
3、属性信息处理:在AVS-PCC中,属性信息处理可以包括三种模式,分别是预测(Prediction)编码、变换(Transform)编码以及预测变换(Prediction&Transform)编码,这三种编码模式可以在不同的条件下使用。
其中,预测编码是指根据距离或空间关系等信息,在已编码点中确定待编码点的邻居点作为预测点,基于设定的准则,根据预测点的属性信息计算待编码点的预测属性信息。计算待编码点的真实属性信息与预测属性信息之间的差值作为属性残差信息,对属性残差信息进行量化、变换(可选)及熵编码。
变换编码是指利用离散余弦变换(Discrete Cosine Transform,DCT)、哈尔变换(Haar Transform,Haar)等变换方法,对属性信息进行分组、变换,对变换系数做量化;通过逆量化,逆变换后得到属性重建信息;计算真实属性信息和属性重建信息的差得到属性残差信息并对其量化;将量化后的变换系数和属性残差进行熵编码。
预测变换编码是指利用预测获得的属性残差信息进行变换,对变换系数进行量化、熵编码。
在MPEG G-PCC中,属性信息处理可以包括三种模式,分别是预测变换(PredictionTransform)编码、提升变换(Lifting Transform)编码、以及分层区域自适应变换(RegionAdaptive Hierarchical Transform,RAHT)编码,这三种编码模式可以在不同的条件下使用。
其中,预测变换编码是指根据距离选择子点集,将点云划分成多个不同的层级(Level of Detail,LoD),实现由粗糙到精细化的多质量层级点云表示。相邻层之间可以实现自下而上的预测,即由粗糙层中的邻近点预测精细层中引入的点的属性信息,获得对应的属性残差信息。其中,最底层的点作为参考信息进行编码。
提升变换编码是指在LoD相邻层预测的基础上,引入邻域点的权重更新策略,最终获得各点的预测属性信息,获得对应的属性残差信息。
分层区域自适应变换编码是指属性信息经过RAHT变换,将信号转换到变换域中,称之为变换系数。
4、属性信息量化(Attribute Quantization):量化的精细程度通常由量化参数来决定。对属性信息处理得到的变换系数或属性残差信息进行量化,并对量化后的结果进行熵编码,例如,在预测变换编码及提升变换编码中,是对量化后的属性残差信息进行熵编码;在RAHT中,是对量化后的残差变换系数进行熵编码。
5、熵编码(Entropy Coding):量化后的属性残差信息和/或残差变换系数一般使用行程编码(Run Length Coding)及算数编码(Arithmetic Coding)实现最终的压缩。相应的编码模式,量化参数等信息也同样采用熵编码器进行编码。
编码器200对点云中各点的几何坐标信息进行编码处理,得到几何比特流,以及对点云中各点的属性信息进行编码处理,得到属性比特流。编码器200可以将编码得到的几何比特流和属性比特流一起传输至解码器300。
图3a示出了基于AVS-PCC的解码框架的解码器执行的解码流程图,如图3b示出了基于MPEG G-PCC的解码框架的解码器执行的解码流程图,上述解码器可以是图1所示的解码器300。解码器300接收到编码器200传输的压缩码流(即属性比特流和几何比特流)后,对几何比特流进行解码处理,以重建点云中各点的几何坐标信息,以及对属性比特流进行解码处理,以重建点云中各点的属性信息。
解码器300执行的解码流程如下:
1、熵解码(Entropy Decoding):对几何比特流和属性比特流分别进行熵解码,得到几何语法元素和属性语法元素。
2、几何解码:对于AVS-PCC编码框架,几何解码包括两种模式,分别是基于八叉树(Octree)的几何解码和基于预测树的几何解码。对于G-PCC编码框架,几何编码包括三种模式,分别是基于八叉树的几何解码、基于三角表示(Trisoup)的几何解码以及基于预测树的预测解码。
基于八叉树的几何解码:基于从几何比特流解析得到的几何语法元素来重构八叉树。
基于预测树的几何解码:基于从几何比特流解析得到的几何语法元素来重构预测树。
基于三角表示的几何解码:基于从几何比特流解析得到的几何语法元素来重构三角模型。
3、几何重建:执行重建以获得点云中点的几何坐标信息。
4、坐标反变换:对重建得到的几何坐标信息进行反变换,以将点云中的点的重建坐标(位置)从变换域转换回初始域。
5、反量化:对属性语法元素进行反量化。
6、属性信息处理:在AVS-PCC中,属性信息处理通过预测或预测变换对反量化后的预测残差或预测残差变换系数确定点云中点的颜色信息,或者通过变换对反量化后的残差变换系数确定点云中中点的颜色信息。
在MPEG G-PCC中,属性信息处理通过RAHT对反量化后的属性信息确定点云中点的颜色信息,或者通过LOD和反提升对反量化后的属性信息进确定点云中点的颜色信息。
7、颜色反变换:将颜色信息从YCbCr颜色空间变换到RGB颜色空间。在一些示例中,可以不进行颜色反变换操作。
基于上述描述可知,对于属性信息编码方式包括RAHT编码和基于LOD划分的预测和提升变换。
对于解码端,RAHT包括:
步骤1:首先,从输入码流中对量化编码的变换系数或系数残差进行熵解码和反量化。
步骤2:然后,自下而上构建变换树结构。
由于属性解码是在几何解码之后的,所以在解码属性信息的时候,已经得到了重建好的每个点的位置坐标。对点云进行按照莫顿序升序的方法进行重排序,之后从最底层开始,自底向上构建八叉树结构,在构建变换树的过程中,为合并后的节点生成对应的莫顿码信息和权重信息。
步骤3:然后,自顶向下进行处理,处理过程包括:
从码流中为当前变换层解析出一个flag来标识当前层使用的是以层为单位的预测方法还是以节点为单位的预测方法,该flag暂用layer_based_pred_mode_flag来标识。
当layer_based_pred_mode_flag为1时,表示使用的是以层为单位的预测(layerby layer),此时需要再在码流中解析出另一个flag来标识当前层为帧间预测层(interlayer)还是帧内预测层(intra layer),该flag暂用layer_pred_mode来标识。当layer_pred_mode为1时,可以表示当前层为inter layer;当layer_pred_mode为0时,可以表示当前层为intra layer。
当layer_based_pred_mode_flag为0时,表示当前变换层使用的是以节点为单位的预测(node by node),在该方法下,会将整个raht变换层分为三层,不同的层使用不同的方法来确定当前节点的预测模式及预测值。
具体解码方法如下:
也就是说,如果layer_based_pred_mode_flag为0,确定是以节点为单位的预测模式;如果layer_based_pred_mode_flag为1,且变换层在上层,则确定是帧内层的预测模式,即等价于layer_pred_mode=0,如果layer_based_pred_mode_flag为1,且变换层在下层,且下层不允许加权预测,则确定是帧间层的预测模式,即等价于layer_pred_mode=1,若layer_based_pred_mode_flag为1,且变换层处于中层,或者处于下层,且该下层允许加权预测时,继续解析layer_pred_mode,根据layer_pred_mode确定是帧间层的预测模式还是帧内层的预测模式(也可描述为预测方法)。
其中,当变换层处于上层时,以节点为单位的预测方法的代价nodeByNodeCost和帧间层的预测方法的代价interLayerCost的计算过程是相同的,也就是说nodeByNodeCost和interLayerCost的最后计算得到的值是一样的。
当变换层处于下层且不允许进行加权预测时,以节点为单位的预测方法的代价nodeByNodeCost和帧内层的预测方法的代价intraLayerCost的计算过程是相同的,也就是说nodeByNodeCost和intraLayerCost的最后计算得到的值是一样的。
上述上层、中层、下层的分割通过解析码流中的两个标识分层结构的语法元素来划分:raht_prediction_signalling_upper_dist和raht_prediction_signalling_lower_dist。
raht_prediction_signalling_upper_dist:表示从距根节点所在层的距离等于raht_prediction_signalling_upper_dist的层为中层的第一层。定义根节点所在层为RahtRootLvl,中层第一层可以用StartSignalPredictionLvlP来标识:
StartSignalPredictionLvlP=RahtRootLvl-raht_prediction_signalling_upper_dist
raht_prediction_signalling_lower_dist:表示中层的最后一层。
定义:EndSignalPredictionLvl=raht_prediction_signalling_lower_dist
当当前层lvl大于StartSignalPredictionLvlP时,表示当前层处于上层;当当前层lvl小于EndSignalPredictionLvl时,表示当前层处于下层;当当前层lvl小于等于StartSignalPredictionLvlP且大于等于EndSignalPredictionLvl,表示当前层处于中层。
同时,可选的,码流中还会传输一个flag来标识是否允许进行帧内帧间加权预测,若该flag为1,码流中还会传输两个相对量raht_average_prediction_upper_num和raht_average_prediction_lower_num来进一步标识可以使用帧内帧间加权预测值的层数:
raht_average_prediction_upper_num:说明了允许在EndSignalPredictionLvl上进行加权预测的层数,包括EndSignalPredictionLvl这一层。
raht_average_prediction_lower_num:说明了允许在EndSignalPredictionLvl下进行加权预测的层数。不包括EndSignalPredictionLvl这一层。(例如,当EndSignalPredictionLvl为5,raht_average_prediction_upper_num和raht_average_prediction_lower_num都为1时,则允许进行加权预测的层数为第5和第4层)
所述每一个节点的预测模式可以分为四种,为了便于区分,以下用inter、intra、average、null分别表示帧间预测、帧内预测、帧内帧间加权预测和不预测。
以下分别对以层为单位的预测方法和以节点为单位的预测方法进行介绍:
1、以节点为单位的预测方法(layer_based_pred_mode_flag=0)
在该方法下,会将整个raht变换层分为上、中、下三层,不同的层使用不同的方法来确定当前节点的预测模式及预测值。
(1)上层:推断节点的预测模式(inter---->intra---->null)。
首先,判断当前帧节点的占位子节点与对应的参考帧节点的子节点是否完全匹配:
对于一个2*2*2大小的节点块,在参考帧中选择与其几何位置相同的节点作为其参考帧节点,由于参考帧节点对应位置的某些子节点可能为空,不存在预测值。因此用参数inter_pred_complete_match来表示当前帧节点的所有占位子节点是否全部能在对应的参考帧节点中找到相同位置的子节点,如果可以,则代表完全匹配,inter_pred_complete_match=1;否则为0。
如果inter_pred_complete_match=1,则当前节点的预测模式为Inter,预测值为帧间预测值;
否则,则需要判断当前节点是否开启帧内预测:我们使用RahtIntraPredEligible这个flag来标识当前节点是否开启帧内预测。以下是判断是否开启帧内预测的条件:
若当前节点为根节点,则不进行帧内预测,RahtIntraPredEligible=0。
若不为根节点,则需要判断对当前2*2*2节点是否进行预测:
1)判断占位子节点个数是否等于1:如果当前待编码节点的非空占位子节点个数为1,则设置其邻居父节点个数为19,不进行帧内预测,RahtIntraPredEligible=0。否则继续判断2:
2)判断邻居祖父节点个数是否大于等于2:如果当前待编码子节点的邻居祖父节点(包括祖父节点)的个数小于2,不进行帧内预测,RahtIntraPredEligible=0。否则进行3:
3)邻居搜索:搜索范围为:当前待编码子节点的父节点(1个)、当前待编码子节点的父节点的共面邻居父节点(6个)、当前待编码子节点的父节点的共线邻居父节点(12个)、当前待编码子节点的共面邻居子节点(6个)、当前待编码子节点的共线邻居子节点(12个)。依次搜索上述邻居节点,若该邻居节点存在,记录它对应的索引信息,同时记录父节点的邻居个数(包括父节点本身)。然后进行4。
4)判断邻居父节点的个数是否大于等于6:若当前待编码子节点的邻居父节点个数小于阈值6,不进行帧内预测,RahtIntraPredEligible=0。
5)否则,帧内预测开启,RahtIntraPredEligible=1。
如果帧内预测开启,则当前节点的预测模式为intra,预测值为帧内预测值;否则当前节点的预测模式为null,不进行预测,无预测值。
需要说明的是,上述判断帧间节点是否匹配和帧内预测是否开启的方法同样适用于其他变换层,后文不再赘述。
(2)中层:根据当前节点与参考帧节点的匹配情况、Intra预测的开启情况,推断或者从码流中解码当前节点的预测模式。
如果inter_pred_complete_match=0并且RahtIntraPredEligible==0,直接推断当前节点的预测模式为Null。否则从码流中解码得到当前节点的预测模式。
当解码得到当前节点的预测模式为inter时,预测值的确定分为两种情况:1.当当前层允许进行帧内帧间加权预测且inter_pred_complete_match=1和RahtIntraPredEligible==1,则预测值为帧内帧间加权预测值;2.当当前层不允许进行帧内帧间加权预测时,则预测值为帧间预测值。
当解码得到当前节点的预测模式为intra时,预测值为帧内预测值;
当解码得到当前节点的预测模式为null时,不预测,无预测值;
(3)下层:推断节点的预测模式(intra---->null)
首先,检查当前节点是否开启Intra预测,如果开启,预测值的确定分为两种情况:1.当当前层允许进行帧内帧间加权预测且inter_pred_complete_match=1和RahtIntraPredEligible=1,则预测值为帧内帧间加权预测值;2.当当前层不允许进行帧内帧间加权预测时,则预测值为帧内预测值。
否则不进行预测,无预测值。
2、以层为单位的预测方法(layer_based_pred_mode_flag=1);
此时使用的是以层为单位的预测模式,并使用layer_pred_mode来标识当前层是inter layer还是intra layer。当layer_pred_mode为1时,可以表示当前层为interlayer;当layer_pred_mode为0时,可以表示当前层为intra layer。
2.1、帧间层(layer_pred_mode=1);
当layer_pred_mode为1时表示当前层为inter layer,此时当前层每一个node的预测值的确定方法如下:
当前层允许进行加权预测时:若当前节点帧间节点匹配且帧内预测开启,预测值为帧内帧间加权预测值。否则,若帧内预测开启,预测值为帧内预测值;否则为不预测,没有预测值。
当前层不允许进行加权预测时:若当前节点帧间节点匹配,则预测值为帧间预测值。否则,若帧内预测开启,预测值为帧内预测值;否则为不预测,没有预测值。
2.2、帧内层(layer_pred_mode=0);
当layer_pred_mode为0时表示当前层为intra layer,此时当前层每一个node的预测值的确定方法如下:
当当前节点帧内预测开启时,预测值为帧内预测值。否则为不预测,没有预测值。
然后,获取上文所述帧内预测值、帧间预测值、帧内帧间加权预测值的方法如下:
(1)帧内预测值:
当RahtIntraPredEligible为1时,利用邻居搜索中找到的最近邻居来对当前节点的每个子节点进行加权预测。
规定父节点的预测权重为9,与当前待编码子节点共面的邻居子节点预测权重为5,与当前待编码子节点共线的邻居子节点的预测权重为2,与当前待编码子节点共面的邻居父节点预测权重为3,与当前待编码子节点共线的邻居父节点预测权重为1。
利用上述邻居节点及所述权重对当前2*2*2节点的每一个占位子节点进行加权预测,得到2*2*2节点每一个占位子节点的帧内预测值。
(2)帧间预测值:
当前2*2*2节点的帧间预测值来自于参考帧相同位置上2*2*2节点的预测值,当参考帧相同位置上的节点的某个子节点为空(预测值为0时),使用当前节点的属性平均值代替作为该子节点的帧间预测值(此时可以称为revision的帧间预测值)。
(3)帧内帧间加权预测值:
帧内帧间加权预测值是当前节点帧内预测值和帧间预测值的加权平均,二者的权重值通过父节点、邻居父节点、邻居已编码子节点的预测模式决定。
步骤4:最后,对当前节点反量化后的系数残差/系数进行RAHT反变换,然后加上对应的预测值(或不加:预测模式为null的情况)就得到了最终的属性重建值。
对于编码端,RAHT包括:
步骤1:首先,构建变换树结构。利用重建几何从最底层开始,自底向上构建八叉树结构,在构建变换树的过程中,需要为合并后的节点生成对应的莫顿码信息、属性信息以及权重信息。
步骤2:然后,自顶向下进行处理,处理过程包括:
基于率失真优化的方法(RDO:rate-distortion optimization)为当前变换层分别按照以节点为单位,inter layer帧间预测层和intra layer帧内预测层的预测方法计算三个代价(cost),用nodeByNodeCost、interLayerCost和intraLayerCost表示
同样的,我们可以继续把整个raht变换层分为上、中、下三层。
(1)当当前层处于上层时:
(1.1)以节点为单位的预测方法的cost的计算:
首先,判断当前节点与对应的参考帧节点的子节点是否完全匹配,如果匹配,则当前节点的预测值为帧间预测值,计算帧间预测残差,进行RAHT变换和量化,并计算编码帧间预测残差系数的cost,然后累加到nodeByNodeCost;
否则,判断当前节点是否开启帧内预测,如果帧内预测开启,则当前节点的预测值为帧内预测值,计算帧内预测残差,进行RAHT变换和量化,并计算编码帧内预测残差系数的cost,然后累加到nodeByNodeCost;
否则,当前节点没有预测值,直接对原始值进行RAHT变换和量化,并计算编码原始变换系数的cost,然后累加到nodeByNodeCost。
(1.2)Inter layer预测方法的cost的计算:
不计算(因为与node by node的方式一样),置为无穷大
(1.3)Intra layer预测方法的cost的计算:
首先,如果帧内预测开启,则当前节点的预测值为帧内预测值,计算编码帧内预测残差系数的cost,然后累加到intraLayerCost;
否则,当前节点没有预测值,计算编码原始变换系数的cost,然后累加到intraLayerCost。
(2)当当前层处于中层时:
(2.1)以节点为单位的预测方法的cost的计算:
如果inter_pred_complete_match=1,并且intra预测也开启时,利用RDO在Inter、Intra、Null中选择合适的预测模式。同时需要说明的是,若当前层允许进行加权预测时,Inter模式使用的值是加权预测值,若不允许,Inter模式使用的是帧间预测值。
如表1所示,如果inter_pred_complete_match=0,并且intra预测开启,利用RDO在Inter(此时部分子节点的帧间预测值使用了父节点的平均值代替,可以把它看做revision的帧间预测值)、Intra、Null中选择合适的预测模式。
如果inter_pred_complete_match=1并且intra预测不开启,利用RDO在Inter、Null中选择合适的预测模式。
如果inter_pred_complete_match=0并且intra预测不开启,此时无需进行RDO,直接推断为Null不预测模式。
表1
若帧间节点不匹配且帧内预测不开启,则直接计算编码原始变换系数的cost,然后累加到nodeByNodeCost。
否则,通过RDO的方法计算出编码当前节点cost最小的模式,然后计算编码该模式信息(因为此时需要在码流中传输预测模式信息,包括inter,intra和null,计算cost时也需要把传输预测模式的代价加上)以及编码残差变换系数/原始变换系数的cost并累加到nodeByNodeCost。
(2.2)Inter layer预测方法的cost的计算:
首先,判断当前层是否允许进行加权预测;
情况1:若允许进行加权预测:
首先若帧间节点匹配且intra开启,则当前节点的预测值为加权预测值,计算编码加权预测残差系数的cost,然后累加到interLayerCost;
否则,若帧内预测开启,预测值为帧内预测值,计算编码帧内预测残差系数的cost,然后累加到interLayerCost;
否则,没有预测值,计算编码原始变换系数的cost,然后累加到interLayerCost。
情况2:若不允许进行加权预测:
若帧间节点匹配,则预测值为帧间预测值,计算编码帧间预测残差系数的cost,然后累加到interLayerCost;
否则,若帧内预测开启,预测值为帧内预测值,计算编码帧内预测残差系数的cost,然后累加到interLayerCost;
否则为不预测,没有预测值,计算编码原始变换系数的cost,然后累加到interLayerCost。
(2.3)Intra layer预测方法的cost的计算:
首先,如果帧内预测开启,则当前节点的预测值为帧内预测值,计算编码帧内预测残差系数的cost,然后累加到intraLayerCost;
否则,当前节点没有预测值,计算编码原始变换系数的cost,然后累加到intraLayerCost。
(3)当当前层处于下层时:
(3.1)以节点为单位的预测方法的cost的计算:
首先,判断当前层是否允许进行加权预测;
情况1:允许进行加权预测:
首先若帧间节点匹配且intra开启,则当前节点的预测值为加权预测值,计算编码加权预测残差系数的cost,然后累加到nodeByNodeCost;
否则,没有预测值,计算编码原始变换系数的cost,然后累加到nodeByNodeCost。
情况2:若不允许进行加权预测:
若帧内预测开启,预测值为帧内预测值,计算编码帧内预测残差系数的cost,然后累加到nodeByNodeCost;
否则为不预测,没有预测值,计算编码原始变换系数的cost,然后累加到nodeByNodeCost;
(3.2)Inter layer预测方法的cost的计算:
首先判断当前层是否允许进行加权预测;
情况1:允许进行加权预测:
首先若帧间节点匹配且intra开启,则当前节点的预测值为加权预测值,计算编码加权预测残差系数的cost,然后累加到interLayerCost;
否则,若帧内预测开启,预测值为帧内预测值,计算编码帧内预测残差系数的cost,然后累加到interLayerCost;
否则,没有预测值,计算编码原始变换系数的cost,然后累加到interLayerCost。
情况2:若不允许进行加权预测:
若帧间节点匹配,则预测值为帧间预测值,计算编码帧间预测残差系数的cost,然后累加到interLayerCost;
否则,若帧内预测开启,预测值为帧内预测值,计算编码帧内预测残差系数的cost,然后累加到interLayerCost;
否则为不预测,没有预测值,计算编码原始变换系数的cost,然后累加到interLayerCost;
(3.3)Intra layer预测方法的cost的计算:
首先判断当前层是否允许进行加权预测;
情况1:允许进行加权预测:
首先,如果帧内预测开启,则当前节点的预测值为帧内预测值,计算编码帧内预测残差系数的cost,然后累加到intraLayerCost;
否则,当前节点没有预测值,计算编码原始变换系数的cost,然后累加到intraLayerCost。
情况2:若不允许进行加权预测:
不计算(因为与node by node的方式一样),置为无穷大。
上述过程可以用表2来表示:
表2
需要说明的是:Inter->intra->null代表若inter match则计算帧间残差cost,否则若intra开,则计算帧内残差cost,否则计算原始系数cost,累加到当前层对应预测方法的cost上
步骤3:然后,当得到当前层的intraLayerCost、interLayerCost和nodeByNodeCost后进行如下比较:
情况1:当(nodeByNodeCost<intraLayerCost)&&(nodeByNodeCost<interLayerCost)
layer_based_pred_mode_flag=0;//是以节点为单位的预测方法;
按照以节点为单位的预测方法来计算当前层所有节点的变换系数/残差变换系数,进行量化和熵编码。
情况2:当(intraLayerCost<nodeByNodeCost)&&(intraLayerCost<interLayerCost)
layer_based_pred_mode_flag=1;//是以层为单位的预测方法;
layer_pred_mode=0;//是intra layer;
按照intra layer的预测方法来计算当前层所有节点的变换系数/残差变换系数,进行量化和熵编码。
情况3:当(interLayerCost<intraLayerCost)&&(interLayerCost<nodeByNodeCost)
layer_based_pred_mode_flag=1;//是以层为单位的预测方法;
layer_pred_mode=1;//是inter layer;
按照inter layer的预测方法来计算当前层所有节点的变换系数/残差变换系数,进行量化和熵编码。
步骤4:最后:编码传输所得到的预测模式信息
下面结合附图,通过一些实施例及其应用场景对本申请实施例提供的点云信息的解码方法进行详细地说明。
如图4所示,本申请实施例提供了一种点云信息的解码方法,包括:
步骤401:解码端对码流进行解码处理,得到第一信息或者得到第一信息和第二信息;其中,所述第一信息用于指示目标点云的树形数据结构包括的N个变换层中除K个预设变换层之外的N-K个变换层的预测模式,所述第二信息用于指示K个预设变换层对应的同一种预测模式,N为正整数,0<K≤N,且K为整数。
可选地,本申请实施例的方法还包括:
解码端构建目标点云的树形数据结构,所述树形数据结构包括N个变换层,N为正整数。
可选地,上述目标点云为点云序列或点云序列中的点云片(slice)。
作为一种实现方式,上述树形数据结构为八叉树结构(或描述为变换树结构)。
本申请实施例中,解码端首先从输入码流中对量化编码的变换系数或系数残差进行熵解码和反量化,然后自上而下构建变换树结构。
由于属性解码是在几何解码之后的,所以在解码属性信息的时候,已经得到了重建好的每个点的位置坐标。对点云进行按照莫顿序升序的方法进行重排序,之后从最底层开始,自底向上构建八叉树结构,在构建变换树的过程中,为合并后的节点生成对应的莫顿码信息和权重信息。
上述K个预设变换层可以是预先约定的K个预设变换层,如上述K个预设变换层为所述树形数据结构中的前K个变换层,或者为所述树形数据结构中的最后K个变换层,当然,也可以是树形数据结构中其他位置的K个变换层,本申请对此不做具体限定。
上述K个预设变换层对应的同一种预测模式可以是以节点为单位的预测模式、帧间层的预测模式或帧内层的预测模式。
上述N-K个变换层的预测模式可以相同,也可以不同。
步骤402:所述解码端根据所述第一信息以及所述K个预设变换层对应的预先约定的预测模式,或者,根据所述第一信息和所述第二信息,得到所述N个变换层的预测模式。
在上述K个预设变换层对应的预先约定的预测模式的情况下,该K个预设变换层对应的预测模式可以相同也可以不同。
在本申请实施例中,解码端构建目标点云的树形数据结构,该树形数据结构包括N个变换层;对码流进行解码处理,得到第一信息或者得到第一信息和第二信息;其中,第一信息用于指示N个变换层中除K个预设变换层之外的N-K个变换层的预测模式,第二信息用于指示K个预设变换层对应的同一种预测模式;根据所述第一信息以及所述K个预设变换层对应的预先约定的预测模式,或者,根据所述第一信息和所述第二信息,得到所述N个变换层的预测模式。上述方案中,由于K个预设变换层的预测模式是预先约定的或者对应同一种预测模式,因此,编码端可以无需对该K个预设变换层的预测模式进行编码或者对于该K个预设变换层仅编码上述一种预测模式,从而能够减少编码比特,节省编码资源,并提高编码效率。
可选地,所述解码端对码流进行解码处理,得到第一信息或者得到第一信息和第二信息,包括:
在所述K个预设变换层对应的预测模式为预先约定的预测模式的情况下,对所述码流进行解码处理,得到第一信息;
或者,在所述K个预设变换层对应的预测模式不是预先约定的预测模式的情况下,对所述码流进行解码处理,得到第一信息和所述第二信息。
本申请实施例中,在K个预设变换层对应的预测模式为预先约定的预测模式的情况下,解码端基于预先约定的方法,获取该K个预设变换层的预测模式,编码端无需对该K个预设变换层的预测模式进行编码,编码端只需对N-K个变换层的预测模式进行编码即可,该情况下,解码端从码流中获取N-K个变换层的预测模式,即上述第一信息。该情况下,编码端无需对该K个预设变换层的预测模式进行编码,且无需通过RDO的方法确定K个预设变换层中每个变换层的预测模式,有效节约了编码端的编码资源,并提高了编码效率。
在K个预设变换层的预测模式不是预先约定的情况下(即K个预设变换层对应的预测模式为同一种预测模式的情况下),编码端对K个预设变换层对应的同一种预测模式进行编码,并对N-K个变换层的预测模式进行编码,从而解码端对码流进行解码得到上述同一种预测模式(即第二信息)以及N-K个变换层的预测模式(即上述第一信息)。该情况下对于K个预设变换层编码端仅编码上述同一种预测模式即可,无需再针对K个预设变换层中每个预设变换层的预测模式进行编码,从而有效节约了编码资源,并提高了编码效率。
可选地,对所述码流进行解码处理,得到第二信息,包括:
对所述码流进行解码处理,获取所述K个预设变换层对应的第一目标标识,所述第一目标标识包括K个预设变换层对应的第一标识和第二标识中的至少一项,其中,所述K个预设变换层对应的第一标识用于指示所述K个预设变换层的预测模式是否为以层为单位的预测模式,所述K个预设变换层对应的第二标识用于指示所述K个预设变换层的预测模式是帧间层的预测模式或帧内层的预测模式;
根据所述第一标识和所述第二标识中的至少一项指示的预测模式,得到所述第二信息。
可选地,所述根据所述第一标识和所述第二标识中的至少一项指示的预测模式,得到所述第二信息,包括:
在所述第一目标标识包括所述第一标识,且所述第一标识指示所述K个预设变换层的预测模式不是以层为单位的预测模式的情况下,根据所述第一标识指示的预测模式,得到所述第二信息;
或者,在所述第一目标标识包括所述第一标识和所述第二标识,且所述第一标识指示所述K个预设变换层的预测模式是以层为单位的预测模式的情况下,根据所述第二标识指示的预测模式,得到所述第二信息;
或者,在所述第一目标标识包括所述第二标识的情况下,根据所述第二标识指示的预测模式,得到所述第二信息。
示例性的,对所述码流进行解码处理,获取所述K个预设变换层对应的第一标识,所述K个预设变换层对应的第一标识用于指示所述K个预设变换层的预测模式是否为以层为单位的预测模式;
在所述K个预设变换层对应的第一标识指示所述K个预设变换层的预测模式不是以层为单位的预测模式的情况下,确定所述K个预设变换层的预测模式为以节点为单位的预测模式,即确定第二信息为K个预设变换层的预测模式为以节点为单位的预测模式;
在所述K个预设变换层对应的第一标识指示所述K个预设变换层的预测模式是以层为单位的预测模式的情况下,对码流进行解码,获取K个预设变换层对应的第二标识;根据所述K个预设变换层对应的第二标识指示的预测模式,确定所述K个预设变换层的预测模式,其中,所述K个预设变换层对应的第二标识用于指示所述K个预设变换层的预测模式是帧间层的预测模式或帧内层的预测模式。
这里,上述第一标识可以用layer_based_pred_mode_flag来表示,layer_based_pred_mode_flag为1时,可用于指示所述K个预设变换层的预测模式是以层为单位的预测模式,layer_based_pred_mode_flag为0时,可用于指示所述K个预设变换层的预测模式不是以层为单位的预测模式,即是以节点为单位的预测模式。
在layer_based_pred_mode_flag为1时,需要进一步获取第二标识,该第二标识可以用layer_pred_mode来表示,当layer_pred_mode为1时,用于指示K个预设变换层的预测模式为帧间层的预测模式,当layer_pred_mode为0时,用于指示K个预设变换层的预测模式为帧内层的预测模式。
上述K个预设变换层的预测模式的解码过程具体如下:
对于上述K个预设变换层,只执行一次第一标识的解码过程,或者只执行一次第一标识和第二标识的解码过程,便可获取K个预设变换层的预测模式,有效提高了解码效率。
可选地,对所述码流进行解码处理,得到第一信息,包括:
对所述码流进行解码处理,获取目标变换层对应的第二目标标识,所述第二目标标识包括目标变换层对应的第一标识和第二标识中的至少一项,所述目标变换层对应的第一标识用于指示所述目标变换层的预测模式是否为以层为单位的预测模式,所述目标变换层对应的第二标识用于指示所述目标变换层的预测模式是帧间层的预测模式或帧内层的预测模式,所述目标变换层为N-K个变换层中的任意一个变换层;
根据所述目标变换层对应的第一标识和第二标识中的至少一项,得到所述第一信息。
可选地,作为一种实现方式,根据所述目标变换层对应的第一标识和第二标识中的至少一项,得到所述第一信息,包括:
在所述第二目标标识包括所目标变换层对应的第一标识,且所述目标变换层对应的第一标识指示所述目标变换层的预测模式不是以层为单位的预测模式的情况下,根据所述目标变换层对应的第一标识指示的预测模式,得到所述第一信息;
在所述第二目标标识包括所目标变换层对应的第一标识,且所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,根据所述目标变换层在所述树形数据结构中的位置信息,得到所述第一信息;
或者,在所述第二目标标识包括所目标变换层对应的第一标识和第二标识,且所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,根据所述目标变换层对应的第二标识指示的预测模式,得到所述第一信息;
或者,在所述第二目标标识包括所目标变换层对应的第二标识的情况下,根据所述目标变换层对应的第二标识指示的预测模式,得到所述第一信息。
示例性的,对所述码流进行解码处理,获取目标变换层对应的第一标识,所述目标变换层为N-K个变换层中的任意一个变换层;
在所述目标变换层对应的第一标识指示所述目标变换层的预测模式不是以层为单位的预测模式的情况下,确定所述目标变换层的预测模式为以节点为单位的预测模式;
在所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,对码流进行解码,获取所述目标变换层对应的第二标识;根据所述目标变换层对应的第二标识指示的预测模式,确定所述目标变换层的预测模式;
根据所述N-K个变换层中每个变换层的预测模式,得到所述第一信息。
该实现方式中,上述第一标识可以用layer_based_pred_mode_flag来表示,layer_based_pred_mode_flag为1时,可用于指示目标变换层的预测模式是以层为单位的预测模式,layer_based_pred_mode_flag为0时,可用于指示所述目标变换层的预测模式不是以层为单位的预测模式,即是以节点为单位的预测模式。
在layer_based_pred_mode_flag为1时,需要进一步获取第二标识,该第二标识可以用layer_pred_mode来表示,当layer_pred_mode为1时,用于指示目标变换成的预测模式为帧间层的预测模式,当layer_pred_mode为0时,用于指示目标变换层的预测模式为帧内层的预测模式。
该实现方式中,对于N-K个变换层中的每一个变换层都执行一次第一标识(或第一标识和第二标识)的解码过程,以便于获取N-K个变换层中的每一个变换层的预测模式。
该实现方式中的变换层的预测模式的解码过程具体如下:
可选地,根据所述目标变换层在所述树形数据结构中的位置信息,得到所述第一信息,包括:
在所述目标变换层处于所述树形数据结构的上层部分的情况下,确定所述目标变换层的预测模式为帧内层的预测模式;
在所述目标变换层处于所述树形数据结构的下层部分,且所述下层部分不允许进行加权预测的情况下,确定所述目标变换层的预测模式为帧间层的预测模式。
示例性的,对所述码流进行解码处理,获取目标变换层对应的第一标识,所述目标变换层为N-K个变换层中的任意一个变换层;
在所述目标变换层对应的第一标识指示所述目标变换层的预测模式不是以层为单位的预测模式的情况下,确定所述目标变换层的预测模式为以节点为单位的预测模式;
在所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,若所述目标变换层满足第一条件,则确定所述目标变换层的预测模式为帧内层的预测模式;
在所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,若所述目标变换层满足第二条件,则确定所述目标变换层的预测模式为帧间层的预测模式;
在所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,若所述目标变换层不满足第一条件和第二条件,则对码流进行解码,获取所述目标变换层对应的第二标识,根据所述第二标识指示的预测模式,确定所述目标变换层的预测模式,所述目标变换层对应的第二标识用于指示所述目标变换层的预测模式是帧间层的预测模式或帧内层的预测模式;
其中,所述第一条件包括所述目标变换层处于所述树形数据结构的上层部分;
所述第二条件包括所述目标变换层处于所述树形数据结构的下层部分,且所述下层部分不允许进行加权预测。
该实现方式中,上述第一标识可以用layer_based_pred_mode_flag来表示,layer_based_pred_mode_flag为1时,可用于指示目标变换层的预测模式是以层为单位的预测模式,layer_based_pred_mode_flag为0时,可用于指示所述目标变换层的预测模式不是以层为单位的预测模式,即是以节点为单位的预测模式。
若上述第一标识指示目标变换层的预测模式是以层为单位的预测模式,所述目标变换层处于所述树形数据结构的上层部分,则可确定该目标变换层的预测模式为帧内层的预测模式,由此,对于树形数据结构的上层部分的变换层仅可通过第一标识便可确定预测模式,无需再传输第二标识,有效降低编码比特。
若上述第一标识指示目标变换层的预测模式是以层为单位的预测模式,所述目标变换层处于所述树形数据结构的下层部分,且所述下层部分不允许进行加权预测,则确定所述目标变换层的预测模式为帧间层的预测模式,由此,对于不允许进行加权预测的下层部分仅可通过第一标识便可确定预测模式,无需再传输第二标识,有效降低编码比特。
该实现方式中,若在所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,若所述目标变换层不满足第一条件和第二条件,则需要进一步获取第二标识,该第二标识可以用layer_pred_mode表示,通过该第二标识确定目标变换层的预测模式。
该实现方式中的变换层的预测模式的解码过程具体如下:
需要说明的是,本申请实施例中,树形数据结构的上层部分、中层部分以及下层部分的划分基于raht_prediction_signalling_upper_dist和raht_prediction_signalling_lower_dist来确定,具体的划分过程已在上面描述中进行详细描述,此处不再赘述。
可选地,本申请实施例的方法,还包括:
对所述码流进行解码,获取所述K;
或者,根据协议约定,获取所述K。
本申请实施例中,编码端可以对K值进行编码并传输给解码端,解码端从码流中获取K值;解码端可以根据协议约定直接获取K值。
本申请实施例的方案中,通过变换K的值,对于树形数据结构中的不同变换层可以采用不同的方式获取预测模式,例如K不为0时,对前K个变换层进行预测模式的指定或者统一为一种预测模式,使得预测模式的获取方式更加灵活,同时可以降低编码的复杂度。
下面对解码端进行解码的整体流程进行如下说明,该流程中以上述K个预设变换层为前K个变换层为例进行说明。
该流程包括:
步骤1:首先,从输入码流中对量化编码的变换系数或系数残差进行熵解码和反量化。
步骤2:然后,自下而上构建变换树结构。
由于属性解码是在几何解码之后的,所以在解码属性信息的时候,已经得到了重建好的每个点的位置坐标。对点云进行按照莫顿序升序的方法进行重排序,之后从最底层开始,自底向上构建八叉树结构,在构建变换树的过程中,为合并后的节点生成对应的莫顿码信息和权重信息。
步骤3:然后,自顶向下进行处理,处理过程包括:
从码流中解析或者按照编解码端约定的方法获取K的值。
获取每一层的预测方法信息,该预测方法可以是以节点为单位的预测方法,是帧间层的预测方法,或者帧内层的预测方法。
所述获取每一层的预测方法信息包括:
对于前K层,当编码端是按照约定的方法指定前K层每一层的预测方法时,解码端也按照编码端约定的预测方法规定前K层每一层使用的预测方法。
对于前K层,当编码端是按照RDO的方法获取前K层的预测方法时,解码端需要从码流中解析出前K层的变换层所使用的预测方法,具体方法如下(解析一次即可):
对于其余每一层,需要从码流中解析相关信息,从而获取该层的预测方法信息,具体方法如下:
需要说明的是,当K等于0时:需要为每一个变换层解析出相应的预测方法信息,具体方法如下:
否则继续解析layer_pred_mode。
步骤4:然后每一层按照所得到的layer_based_pred_mode_flag和layer_pred_mode应用相应的预测方法。
假设1:If(layer_based_pred_mode_flag=0);
在该假设下,不同的层使用不同的方法来确定当前节点的预测模式及预测值。当前节点:
a)如果在上层:推断节点的预测模式(inter---->intra---->null)。
首先,判断当前帧节点的占位子节点与对应的参考帧节点的子节点是否完全匹配:
如果匹配,则当前节点的预测模式为Inter,预测值为帧间预测值;
否则,如果帧内预测开启,则当前节点的预测模式为intra,预测值为帧内预测值;
否则当前节点的预测模式为null,不进行预测,无预测值。
b)如果在中层:根据当前节点与参考帧节点的匹配情况、Intra预测的开启情况,推断或者从码流中解码当前节点的预测模式。
如果inter_pred_complete_match=0并且RahtIntraPredEligible==0,直接推断当前节点的预测模式为Null。否则从码流中解码得到当前节点的预测模式:
(1)当解码得到当前节点的预测模式为inter时,预测值的确定分为两种情况:
第一种情况:当当前层允许进行帧内帧间加权预测且inter_pred_complete_match=1和RahtIntraPredEligible=1,则预测值为帧内帧间加权预测值;
第二种情况:当当前层不允许进行帧内帧间加权预测时,则预测值为帧间预测值。
(2)当解码得到当前节点的预测模式为intra时,预测值为帧内预测值;
(3)当解码得到当前节点的预测模式为null时,不预测,无预测值;
c)如果在下层:推断节点的预测模式(intra---->null);
首先,检查是否开启Intra预测,如果开启,预测值的确定分为两种情况:
第一种情况:当当前层允许进行帧内帧间加权预测且inter_pred_complete_match=1和RahtIntraPredEligible=1,则预测值为帧内帧间加权预测值;
第二种情况:当当前层不允许进行帧内帧间加权预测时,则预测值为帧内预测值。
否则不进行预测,无预测值。
假设2:if(layer_based_pred_mode_flag=1&&layer_pred_mode=1);
当layer_based_pred_mode_flag=1和layer_pred_mode为1时表示当前层为inter layer,此时当前层每一个node的预测值的确定方法如下:
当前层允许进行加权预测时:若当前节点帧间节点匹配且帧内预测开启,预测值为帧内帧间加权预测值。否则,若帧内预测开启,预测值为帧内预测值;否则为不预测,没有预测值。
当前层不允许进行加权预测时:若当前节点帧间节点匹配,则预测值为帧间预测值。否则,若帧内预测开启,预测值为帧内预测值;否则为不预测,没有预测值。
假设3:if(layer_based_pred_mode_flag=1&&layer_pred_mode=0);
当layer_based_pred_mode_flag=1和layer_pred_mode为0时表示当前层为intra layer,此时当前层每一个node的预测值的确定方法如下:
当帧内预测开启时,预测值为帧内预测值。否则为不预测,没有预测值。
步骤5:最后,对当前节点反量化后的系数/系数残差进行RAHT反变换,然后加上对应的预测值就得到了最终的属性重建值。
上述方案中,由于K个预设变换层的预测模式是预先约定的或者对应同一种预测模式,因此,编码端可以无需对该K个预设变换层的预测模式进行编码或者对于该K个预设变换层仅编码上述一种预测模式,从而能够减少编码比特,节省编码资源,并提高编码效率。且通过变换K的值,对于树形数据结构中的不同变换层可以采用不同的方式获取预测模式,例如K不为0时,对前K个变换层进行预测模式的指定或者统一为一种预测模式,使得预测模式的获取方式更加灵活,同时可以降低编码的复杂度。
如图5所示,本申请实施例还提供了一种点云信息的编码方法,包括:
步骤501:编码端构建目标点云的树形数据结构,所述树形数据结构包括N个变换层,N为正整数。
可选地,上述目标点云为点云序列或点云序列中的点云片(slice)。
作为一种实现方式,上述树形数据结构为八叉树结构(或描述为变换树结构)。
编码端利用重建几何从最底层开始,自底向上构建八叉树结构,在构建变换树的过程中,需要为合并后的节点生成对应的莫顿码信息、属性信息以及权重信息。
步骤502:所述编码端确定所述树形数据结构的N个变换层的预测模式,其中,所述树形数据结构的K个预设变换层的预测模式为预先约定的预测模式,或者,所述K个预设变换层的预测模式为同一种预测模式,0<K≤N,且K为整数。
上述K个预设变换层可以是预先约定的K个预设变换层,如上述K个预设变换层为所述树形数据结构中的前K个变换层,或者为所述树形数据结构中的最后K个变换层,当然,也可以是树形数据结构中其他位置的K个变换层,本申请对此不做具体限定。
上述K个预设变换层对应的同一种预测模式可以是以节点为单位的预测模式、帧间层的预测模式或帧内层的预测模式。
上述N-K个变换层的预测模式可以相同,也可以不同。该N-K个变换层的预测模式可以通过RDO对多种预测模式的RD-cost(代价)进行比较,并选择RD-cost的预测模式作为变换层的预测模式。
步骤503:所述编码端对所述树形数据结构的变换层的预测模式进行编码,得到码流,所述码流包括第一信息,或者包括第一信息和第二信息;
其中,所述第一信息用于指示所述N个变换层中除所述K个预设变换层之外的N-K个变换层的预测模式;所述第二信息用于指示所述同一种预测模式。
本申请实施例中,编码端构建目标点云的树形数据结构,所述树形数据结构包括N个变换层;所述编码端确定所述树形数据结构的N个变换层的预测模式,其中,所述树形数据结构的K个预设变换层的预测模式为预先约定的预测模式,或者,所述K个预设变换层的预测模式为同一种预测模式;所述编码端对所述树形数据结构的变换层的预测模式进行编码,得到码流,所述码流包括第一信息,或者包括第一信息和第二信息;其中,所述第一信息用于指示所述N个变换层中除所述K个预设变换层之外的N-K个变换层的预测模式;所述第二信息用于指示所述同一种预测模式。上述方案中,由于K个预设变换层的预测模式是预先约定的或者对应同一种预测模式,因此,编码端可以无需对该K个预设变换层的预测模式进行编码或者对于该K个预设变换层仅编码上述一种预测模式,从而能够减少编码比特,节省编码资源,并提高编码效率。
可选地,所述编码端对所述树形数据结构的变换层的预测模式进行编码,包括:
所述编码端在所述K个预设变换层的预测模式为同一种预测模式的情况下,对所述同一种预测模式以及所述N-K个变换层中每个变换层的预测模式进行编码;
或者,所述编码端在所述K个预设变换层的预测模式为预先约定的预测模式的情况下,对所述N-K个变换层的每个变换层的预测模式进行编码。
本申请实施例中,在K个预设变换层对应的预测模式为预先约定的预测模式的情况下,编码端无需对该K个预设变换层的预测模式进行编码,编码端只需对N-K个变换层的预测模式进行编码即可,该情况下,解码端从码流中获取N-K个变换层的预测模式,即上述第一信息。该情况下,编码端无需对该K个预设变换层的预测模式进行编码,且无需通过RDO的方法确定K个预设变换层中每个变换层的预测模式,有效节约了编码端的编码资源,并提高了编码效率。
在K个预设变换层的预测模式不是预先约定的情况下(即K个预设变换层对应的预测模式为同一种预测模式的情况下),编码端对K个预设变换层对应的同一种预测模式进行编码,并对N-K个变换层的预测模式进行编码,从而解码端对码流进行解码得到上述同一种预测模式(即第二信息)以及N-K个变换层的预测模式(即上述第一信息)。该情况下对于K个预设变换层编码端仅编码上述同一种预测模式即可,无需再针对K个预设变换层中每个预设变换层的预测模式进行编码,从而有效节约了编码资源,并提高了编码效率。
可选地,所述编码端对所述树形数据结构的变换层的预测模式进行编码,得到第二信息,包括:
所述编码端对所述K个预设变换层对应的第一目标标识进行编码,得到第二信息,所述第一目标标识包括K个预设变换层对应的第一标识和第二标识中的至少一项,其中,所述K个预设变换层对应的第一标识用于指示所述K个预设变换层的预测模式是否为以层为单位的预测模式,所述K个预设变换层对应的第二标识用于指示所述K个预设变换层的预测模式是帧间层的预测模式或帧内层的预测模式。
可选地,作为一种实现方式,所述编码端对所述K个预设变换层对应的第一目标标识进行编码,得到第二信息,所述第一目标标识包括K个预设变换层对应的第一标识和第二标识中的至少一项,其中,所述K个预设变换层对应的第一标识用于指示所述K个预设变换层的预测模式是否为以层为单位的预测模式,所述K个预设变换层对应的第二标识用于指示所述K个预设变换层的预测模式是帧间层的预测模式或帧内层的预测模式。
示例性的,所述编码端对所述K个预设变换层对应的第一标识进行编码,得到第一编码信息;
所述编码端在所述K个预设变换层对应的第一标识指示所述K个预设变换层的预测模式不是以层为单位的预测模式的情况下,根据所述第一编码信息得到所述第二信息;
所述编码端在所述K个预设变换层对应的第一标识指示所述K个预设变换层的预测模式是以层为单位的预测模式的情况下,对第二标识进行编码,得到第二编码信息,并根据所述第二编码信息和所述第一编码信息,得到所述第二信息。
这里,上述第一标识可以用layer_based_pred_mode_flag来表示,layer_based_pred_mode_flag为1时,可用于指示所述K个预设变换层的预测模式是以层为单位的预测模式,layer_based_pred_mode_flag为0时,可用于指示所述K个预设变换层的预测模式不是以层为单位的预测模式,即是以节点为单位的预测模式。
在layer_based_pred_mode_flag为1时,需要进一步对第二标识进行编码,该第二标识可以用layer_pred_mode来表示,当layer_pred_mode为1时,用于指示K个预设变换层的预测模式为帧间层的预测模式,当layer_pred_mode为0时,用于指示K个预设变换层的预测模式为帧内层的预测模式。
上述K个预设变换层的预测模式的编码过程具体如下:
对于K个预设变换层(传输一次即可):
首先编码传输layer_based_pred_mode_flag,
If(layer_based_pred_mode_flag==1)
继续编码传输layer_pred_mode。
对于上述K个预设变换层,只执行一次第一标识的编码过程,或者只执行一次第一标识和第二标识的编码过程,有效提高了编码效率。
可选地,所述编码端对所述树形数据结构的变换层的预测模式进行编码,得到第一信息,包括:
对所述目标变换层对应的第二目标标识进行编码,得到所述第一信息,所述第二目标标识包括目标变换层对应的第一标识和第二标识中的至少一项,所述目标变换层对应的第一标识用于指示所述目标变换层的预测模式是否为以层为单位的预测模式,所述目标变换层对应的第二标识用于指示所述目标变换层的预测模式是帧间层的预测模式或帧内层的预测模式,所述目标变换层为N-K个变换层中的任意一个变换层。
可选地,作为一种实现方式,所述对所述目标变换层对应的第二目标标识进行编码,得到所述第一信息,包括:
在所述目标变换层对应的第一标识指示所述目标变换层的预测模式不是以层为单位的预测模式的情况下,根据所述目标变换层对应的第一标识的编码信息,得到所述第一信息;
或者,在所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,根据所述目标变换层对应的第一标识和第二标识的编码信息,得到所述第一信息,或者,根据所述目标变换层对应的第二标识的编码信息,得到所述第一信息;
或者,在所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,若所述目标变换层处于所述树形数据结构的上层部分,或者,所述目标变换层处于所述树形数据结构的下层部分且所述下层部分不允许进行加权预测,则根据所述第一标识的编码信息,得到所述第一信息,若所述目标变换层处于所述树形数据结构的中层部分,则根据所述第一标识和第二标识的编码信息,得到所述第一信息。
示例性的,编码端对目标变换层对应的第一标识进行编码,得到第三编码信息;
在所述目标变换层对应的第一标识指示所述目标变换层的预测模式不是以层为单位的预测模式的情况下,根据所述第三编码信息,得到所述第一信息;
在所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,对所述目标变换层对应的第二标识进行编码,得到第四编码信息,并根据所述第三编码信息和所述第四编码信息,得到所述第一信息,其中,所述目标变换层对应的第二标识用于指示所述目标变换层的预测模式是帧间层的预测模式或帧内层的预测模式。
该示例中,上述第一标识可以用layer_based_pred_mode_flag来表示,layer_based_pred_mode_flag为1时,可用于指示目标变换层的预测模式是以层为单位的预测模式,layer_based_pred_mode_flag为0时,可用于指示所述目标变换层的预测模式不是以层为单位的预测模式,即是以节点为单位的预测模式。
在layer_based_pred_mode_flag为1时,需要进一步编码第二标识,该第二标识可以用layer_pred_mode来表示,当layer_pred_mode为1时,用于指示目标变换成的预测模式为帧间层的预测模式,当layer_pred_mode为0时,用于指示目标变换层的预测模式为帧内层的预测模式。
该示例中,上述N-K个变换层的预测模式的编码过程具体如下(每一层执行一次该过程):
首先编码传输layer_based_pred_mode_flag,
If(layer_based_pred_mode_flag==1)
继续编码传输layer_pred_mode
示例性的,对目标变换层对应的第一标识进行编码,得到第三编码信息;
在所述目标变换层对应的第一标识指示所述目标变换层的预测模式不是以层为单位的预测模式的情况下,根据所述第三编码信息,得到所述第一信息;
在所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,若所述目标变换层满足第一条件或第二条件,则根据所述第三编码信息,得到所述第一信息;
在所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,若所述目标变换层不满足第一条件和第二条件,则对所述目标变换层对应的第二标识进行编码,得到第四编码信息,并根据所述第三编码信息和所述第四编码信息,得到所述第一信息,其中,所述目标变换层对应的第二标识用于指示所述目标变换层的预测模式是帧间层的预测模式或帧内层的预测模式;
其中,所述第一条件包括所述目标变换层处于所述树形数据结构的上层部分;
所述第二条件包括所述目标变换层处于所述树形数据结构的下层部分,且所述下层部分不允许进行加权预测。
该示例中,上述第一标识可以用layer_based_pred_mode_flag来表示,layer_based_pred_mode_flag为1时,可用于指示目标变换层的预测模式是以层为单位的预测模式,layer_based_pred_mode_flag为0时,可用于指示所述目标变换层的预测模式不是以层为单位的预测模式,即是以节点为单位的预测模式。
若上述第一标识指示目标变换层的预测模式是以层为单位的预测模式,所述目标变换层处于所述树形数据结构的上层部分,则解码端可确定该目标变换层的预测模式为帧内层的预测模式,无需对第二标识编码,有效降低编码比特。
若上述第一标识指示目标变换层的预测模式是以层为单位的预测模式,所述目标变换层处于所述树形数据结构的下层部分,且所述下层部分不允许进行加权预测,则解码端可确定所述目标变换层的预测模式为帧间层的预测模式,无需再传输第二标识,有效降低编码比特。
该示例中,若在所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,若所述目标变换层不满足第一条件和第二条件,则需要进一步编码第二标识,该第二标识可以用layer_pred_mode表示,通过该第二标识确定目标变换层的预测模式。
该示例中的每个变换层的预测模式的编码过程具体如下:
首先编码传输layer_based_pred_mode_flag,
If(中层||(下层&&允许加权))
If(layer_based_pred_mode_flag==1)
继续编码传输layer_pred_mode。
需要说明的是,本申请实施例中,树形数据结构的上层部分、中层部分以及下层部分的划分基于raht_prediction_signalling_upper_dist和raht_prediction_signalling_lower_dist来确定,具体的划分过程已在上面描述中进行详细描述,此处不再赘述。
可选地,本申请实施例的方法,还包括:
获取至少两种预设预测模式中的每种预设预测模式的目标率失真优化代价,所述预设预测模式的目标率失真优化代价是基于K个预设变换层在所述预设预测模式下的率失真优化代价之和得到的;
在至少两种预设预测模式中,选取目标率失真优化代价(RD-cost)最小的预设预测模式作为所述K个预设变换层的预测模式。
例如,至少两种预设预测模式包括以节点为单位的预测模式、帧间层的预测模式和帧内层的预测模式,对于前K个预设变换层,通过RDO比较按照这三种预测方式分别编码K个预设变换层的RD-cost来决定,选择RD-cost最小的预测方法作为K个预设变换层的预测方法。假设上述K个预设变换层为前K个变换层,具体方法如下:
基于率失真优化的方法(RDO:rate-distortion optimization)为这些层按照以节点为单位,inter layer和intra layer的预测方法计算三个代价(cost),用K_nodeByNodeCost、K_interLayerCost和K_intraLayerCost表示。以K_nodeByNodeCost为例,其最终的值即为,前K层都按照以节点为单位的预测方法编码的RD代价。
对前K个变换层的每一层进行如下操作:
1)当当前变换层处于上层时:
1.1)以节点为单位的预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述,并累加到K_nodeByNodeCost;
1.2)Inter layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述,并累加到K_interLayerCost;
1.3)Intra layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述,并累加到K_intraLayerCost。
2)当当前变换层处于中层时:
2.1)以节点为单位的预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述,并累加到K_nodeByNodeCost;
2.2)Inter layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述,并累加到K_interLayerCost;
2.3)Intra layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述,并累加到K_intraLayerCost。
3)当当前变换层处于下层时:
3.1)以节点为单位的预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述,并累加到K_nodeByNodeCost;
3.2)Intra layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述,并累加到K_intraLayerCost;
3.3)Inter layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述,并累加到K_interLayerCost。
然后,当得到前K层的不同预测方法的编码代价:K_nodeByNodeCost、K_intraLayerCost和K_interLayerCost后
进行如下比较:
情况1:当(K_nodeByNodeCost<K_intraLayerCost)&&(K_nodeByNodeCost<K_interLayerCost)
layer_based_pred_mode_flag=0;//是以节点为单位的预测方法
按照以节点为单位的预测方法来计算前K层所有节点的变换系数/残差变换系数,进行量化和熵编码。
情况2:当(K_intraLayerCost<K_nodeByNodeCost)&&(K_intraLayerCost<K_interLayerCost)
layer_based_pred_mode_flag=1;//是以层为单位的预测方法
layer_pred_mode=0;//是intra layer
按照intra layer的预测方法来计算前K层所有节点的变换系数/残差变换系数,进行量化和熵编码。
情况3:当(K_interLayerCost<K_intraLayerCost)&&(K_interLayerCost<K_nodeByNodeCost)
layer_based_pred_mode_flag=1;//是以层为单位的预测方法
layer_pred_mode=1;//是inter layer
按照inter layer的预测方法来计算前K层所有节点的变换系数/残差变换系数,进行量化和熵编码。
可选地,本申请实施例的方法,还包括:
获取所述N-K个变换层中的每个变换层在至少两种预设预测模式下的率失真优化代价;
在至少两种预设预测模式中,选取率失真优化代价最小的预设预测模式作为每个所述变换层的预测模式。
例如,至少两种预设预测模式包括以节点为单位的预测模式、帧间层的预测模式和帧内层的预测模式,对于N-K个变换层中的每个变换层,通过RDO比较三种预测方法的RD-cost来决定,选择cost最小的预测方法作为该层的预测方法。具体方法如下:
基于率失真优化的方法(RDO:rate-distortion optimization)为当前层按照以节点为单位,inter layer和intra layer的预测方法计算三个代价(cost),用nodeByNodeCost、interLayerCost和intraLayerCost表示。
1)当当前变换层处于上层时:
1.1)以节点为单位的预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述;
1.2)Inter layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述;
1.3)Intra layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述。
2)当当前变换层处于中层时:
2.1)以节点为单位的预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述;
2.2)Inter layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述;
2.3)Intra layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述。
3)当当前变换层处于下层时:
3.1)以节点为单位的预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述;
3.2)Intra layer预测方法的cost的计算:
与上文描述的编码端计算方法一致;
3.3)Inter layer预测方法的cost的计算:
与上文描述的编码端计算方法一致。
然后,当得到当前层的intraLayerCost、interLayerCost和nodeByNodeCost后,进行如下比较:
情况1:当(nodeByNodeCost<intraLayerCost)&&(nodeByNodeCost<interLayerCost)时;
layer_based_pred_mode_flag=0;//是以节点为单位的预测方法
按照以节点为单位的预测方法来计算当前层所有节点的变换系数/残差变换系数,进行量化和熵编码。
情况2:当(intraLayerCost<nodeByNodeCost)&&(intraLayerCost<interLayerCost)时;
layer_based_pred_mode_flag=1;//是以层为单位的预测方法
layer_pred_mode=0;//是intra layer
按照intra layer的预测方法来计算当前层所有节点的变换系数/残差变换系数,进行量化和熵编码。
情况3:当(interLayerCost<intraLayerCost)&&(interLayerCost<nodeByNodeCost)时;
layer_based_pred_mode_flag=1;//是以层为单位的预测方法
layer_pred_mode=1;//是inter layer
按照inter layer的预测方法来计算当前层所有节点的变换系数/残差变换系数,进行量化和熵编码。
可选地,本申请实施例的方法,所述码流中还包括所述K的编码信息。
本申请实施例中,对于K的取值,可以在编解码端进行约定,也可以在码流中进行传输。若传输K值,则编码K值,编码方法可以是基于上下文的自适应算术编码,变长编码,指数哥伦布编码等。
下面对编码端进行编码的整体流程进行如下说明,该流程中以上述K个预设变换层为前K个变换层为例进行说明。
该流程包括:
步骤1:首先,构建变换树结构。利用重建几何从最底层开始,自底向上构建八叉树结构,在构建变换树的过程中,需要为合并后的节点生成对应的莫顿码信息、属性信息以及权重信息。
步骤2:然后,自顶向下进行处理,处理过程包括:
为所有变换层选择预测方法,该预测方法可以是以节点为单位的预测方法,也可以是帧间层的预测方法,也可以是帧内层的预测方法。
其中,为所有变换层分别选择预测方法时,可以对前K个变换层分别指定其预测方法为三种里的某一种,其余层可以通过RDO比较三种预测模式的RD-cost来决定。
为所有变换层分别选择预测方法时,也可以对前K个变换层一起通过RDO比较三种预测模式的RD-cost来决定,即选择编码前K层所需cost最小的那种预测方法作为前K层的变换层的预测方法,其余层可以通过RDO比较三种预测模式的RD-cost来决定。
(一)为所有变换层分别选择预测方法时,对前K个变换层分别指定其预测方法为三种里的某一种,其余层可以通过RDO比较三种预测方法的RD-cost来决定的方法具体如下:
对于前K层,分别指定其预测方法为三种预测方法里的某一种,示例性的,rootlvl层可以指定为以节点为单位的预测方法,(rootlvl–1)层可以指定为帧间层的预测方法,…(rootlvl–K-1)层可以指定为帧内层的预测方法,前K层可以是一样的预测方法,也可以是不同的预测方法,也可以前K层某些层的预测方法一样。编解码端按照约定的方法对前K层的每一层按照指定的预测方法进行编解码即可。
对于其余层,通过RDO比较三种预测方法的RD-cost来决定,选择cost最小的预测方法作为该层的预测方法。具体方法如下:
首先,基于率失真优化的方法(RDO:rate-distortion optimization)为当前层按照以节点为单位,inter layer和intra layer的预测方法计算三个代价(cost),用nodeByNodeCost、interLayerCost和intraLayerCost表示。
1)当当前层处于上层时:
1.1)以节点为单位的预测方法的cost的计算:
与上文描述的编码端计算方法一致,不再赘述;
1.2)Inter layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,不再赘述;
1.3)Intra layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,不再赘述。
2)当当前层处于中层时:
2.1)以节点为单位的预测方法的cost的计算:
与上文描述的编码端计算方法一致,不再赘述;
2.2)Inter layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,不再赘述;
2.3)Intra layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,不再赘述。
3)当当前层处于下层时:
3.1)以节点为单位的预测方法的cost的计算:
与上文描述的编码端计算方法一致,不再赘述;
3.2)Intra layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,不再赘述;
3.3)Inter layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,不再赘述。
然后,当得到当前层的intraLayerCost、interLayerCost和nodeByNodeCost后,进行如下比较:
情况1:当(nodeByNodeCost<intraLayerCost)&&(nodeByNodeCost<interLayerCost)时;
layer_based_pred_mode_flag=0;//是以节点为单位的预测方法
按照以节点为单位的预测方法来计算当前层所有节点的变换系数/残差变换系数,进行量化和熵编码。
情况2:当(intraLayerCost<nodeByNodeCost)&&(intraLayerCost<interLayerCost)时;
layer_based_pred_mode_flag=1;//是以层为单位的预测方法
layer_pred_mode=0;//是intra layer
按照intra layer的预测方法来计算当前层所有节点的变换系数/残差变换系数,进行量化和熵编码。
情况3:当(interLayerCost<intraLayerCost)&&(interLayerCost<nodeByNodeCost)时;
layer_based_pred_mode_flag=1;//是以层为单位的预测方法
layer_pred_mode=1;//是inter layer
按照inter layer的预测方法来计算当前层所有节点的变换系数/残差变换系数,进行量化和熵编码。
最后,进行预测方法信息的编码。同时对于K的取值,可以在编解码端进行约定,使用同样的值,也可以在码流里面传输。
若传输K值,则编码K值,编码方法可以是基于上下文的自适应算术编码,变长编码,指数哥伦布编码等。
此外,编码传输其余每一层的预测方法信息,具体如下:
首先编码传输layer_based_pred_mode_flag,
If(中层||(下层&&允许加权))
If(layer_based_pred_mode_flag==1)
继续编码传输layer_pred_mode。
(二)为所有变换层分别选择预测方法时,对前K个变换层一起通过RDO比较三种预测模式的RD-cost来决定,即选择编码前K层所需cost最小的那种预测方法作为前K变换层的预测方法,其余层可以通过RDO比较三种预测模式的RD-cost来决定。其方法具体如下:
对于前K层,通过RDO比较按照三种预测方法分别编码这些层的RD-cost来决定,选择cost最小的预测方法作为这些层的预测方法,具体方法如下:
基于率失真优化的方法(RDO:rate-distortion optimization)为这些层按照以节点为单位,inter layer和intra layer的预测方法计算三个代价(cost),用K_nodeByNodeCost、K_interLayerCost和K_intraLayerCost表示。以K_nodeByNodeCost为例,其最终的值即为,前K层都按照以节点为单位的预测方法编码的RD代价。
对前K个变换层的每一层进行如下操作:
1)当当前变换层处于上层时:
1.1)以节点为单位的预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述,并累加到K_nodeByNodeCost;
1.2)Inter layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述,并累加到K_interLayerCost;
1.3)Intra layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述,并累加到K_intraLayerCost。
2)当当前变换层处于中层时:
2.1)以节点为单位的预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述,并累加到K_nodeByNodeCost;
2.2)Inter layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述,并累加到K_interLayerCost;
2.3)Intra layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述,并累加到K_intraLayerCost。
3)当当前变换层处于下层时:
3.1)以节点为单位的预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述,并累加到K_nodeByNodeCost;
3.2)Intra layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述,并累加到K_intraLayerCost;
3.3)Inter layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,此处不再赘述,并累加到K_interLayerCost。
然后,当得到前K层的不同预测方法的编码代价:K_nodeByNodeCost、K_intraLayerCost和K_interLayerCost后
进行如下比较:
情况1:当(K_nodeByNodeCost<K_intraLayerCost)&&(K_nodeByNodeCost<K_interLayerCost)
layer_based_pred_mode_flag=0;//是以节点为单位的预测方法
按照以节点为单位的预测方法来计算前K层所有节点的变换系数/残差变换系数,进行量化和熵编码。
情况2:当(K_intraLayerCost<K_nodeByNodeCost)&&(K_intraLayerCost<K_interLayerCost)
layer_based_pred_mode_flag=1;//是以层为单位的预测方法
layer_pred_mode=0;//是intra layer
按照intra layer的预测方法来计算前K层所有节点的变换系数/残差变换系数,进行量化和熵编码。
情况3:当(K_interLayerCost<K_intraLayerCost)&&(K_interLayerCost<K_nodeByNodeCost)
layer_based_pred_mode_flag=1;//是以层为单位的预测方法
layer_pred_mode=1;//是inter layer
按照inter layer的预测方法来计算前K层所有节点的变换系数/残差变换系数,进行量化和熵编码。
最后,进行预测方法信息的编码。同时对于K的取值,可以在编解码端进行约定,使用同样的值,也可以在码流里面传输。
若传输K值,则编码K值,编码方法可以是基于上下文的自适应算术编码,变长编码,指数哥伦布编码等。
此外,编码传输前K层的预测方法信息和其余每一层的预测方法信息,如下:
对于前K层:(执行一次下述过程即可):
首先编码传输layer_based_pred_mode_flag,
If(layer_based_pred_mode_flag==1)
继续编码传输layer_pred_mode
对于其余层:(每一层执行一次下述过程):
首先编码传输layer_based_pred_mode_flag,
If(中层||(下层&&允许加权))
If(layer_based_pred_mode_flag==1)
继续编码传输layer_pred_mode。
需要说明的是,当上文所述K值为0时,即代表着,每一个变换层的预测方法都通过RDO比较当前层三种预测模式的RD-cost来决定,即选择编码当前层所需cost最小的那种预测方法作为当前层的预测方法。
即,基于率失真优化的方法(RDO:rate-distortion optimization)为当前层按照以节点为单位,inter layer和intra layer的预测方法计算三个代价(cost),用nodeByNodeCost、interLayerCost和intraLayerCost表示。
1)当当前层处于上层时:
1.1)以节点为单位的预测方法的cost的计算:
与上文描述的编码端计算方法一致,不再赘述
1.2)Inter layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,不再赘述
1.3)Intra layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,不再赘述。
2)当当前层处于中层时:
2.1)以节点为单位的预测方法的cost的计算:
与上文描述的编码端计算方法一致,不再赘述
2.2)Inter layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,不再赘述
2.3)Intra layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,不再赘述
3)当当前层处于下层时:
3.1)以节点为单位的预测方法的cost的计算:
与上文描述的编码端计算方法一致,不再赘述
3.2)Intra layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,不再赘述
3.3)Inter layer预测方法的cost的计算:
与上文描述的编码端计算方法一致,不再赘述
然后,当得到当前层的intraLayerCost、interLayerCost和nodeByNodeCost后进行如下比较:
情况1:当(nodeByNodeCost<intraLayerCost)&&(nodeByNodeCost<interLayerCost)时;
layer_based_pred_mode_flag=0;//是以节点为单位的预测方法
按照以节点为单位的预测方法来计算当前层所有节点的变换系数/残差变换系数,进行量化和熵编码。
情况2:当(intraLayerCost<nodeByNodeCost)&&(intraLayerCost<interLayerCost)时;
layer_based_pred_mode_flag=1;//是以层为单位的预测方法
layer_pred_mode=0;//是intra layer
按照intra layer的预测方法来计算当前层所有节点的变换系数/残差变换系数,进行量化和熵编码。
情况3:当(interLayerCost<intraLayerCost)&&(interLayerCost<nodeByNodeCost)时;
layer_based_pred_mode_flag=1;//是以层为单位的预测方法
layer_pred_mode=1;//是inter layer
按照inter layer的预测方法来计算当前层所有节点的变换系数/残差变换系数,进行量化和熵编码。
最后,编码传输每一层的预测方法信息,如下:
首先编码传输layer_based_pred_mode_flag,
If(中层||(下层&&允许加权))
If(layer_based_pred_mode_flag==1)
继续编码传输layer_pred_mode。
上述方案中,由于K个预设变换层的预测模式是预先约定的或者对应同一种预测模式,因此,编码端可以无需对该K个预设变换层的预测模式进行编码或者对于该K个预设变换层仅编码上述一种预测模式,从而能够减少编码比特,节省编码资源,并提高编码效率。且通过变换K的值,对于树形数据结构中的不同变换层可以采用不同的方式获取预测模式,例如K不为0时,对前K个变换层进行预测模式的指定或者统一为一种预测模式,使得预测模式的获取方式更加灵活,同时可以降低编码的复杂度。
本申请实施例提供的点云信息的解码方法,执行主体可以为点云信息的解码装置。本申请实施例中以点云信息的解码装置执行点云信息的解码方法为例,说明本申请实施例提供的点云信息的解码装置。
如图6所示,本申请实施例还提供了一种点云信息的解码装置600,包括:
第一获取模块601,用于对码流进行解码处理,得到第一信息或者得到第一信息和第二信息;其中,所述第一信息用于指示目标点云的树形数据结构包括的N个变换层中除K个预设变换层之外的N-K个变换层的预测模式,所述第二信息用于指示K个预设变换层对应的同一种预测模式,N为正整数,0<K≤N,且K为整数;
第二获取模块602,用于根据所述第一信息以及所述K个预设变换层对应的预先约定的预测模式,或者,根据所述第一信息和所述第二信息,得到所述N个变换层的预测模式。
可选地,所述第一获取模块用于:
在所述K个预设变换层对应的预测模式为预先约定的预测模式的情况下,对所述码流进行解码处理,得到第一信息;
或者,在所述K个预设变换层对应的预测模式不是预先约定的预测模式的情况下,对所述码流进行解码处理,得到第一信息和所述第二信息。
可选地,所述第一获取模块包括:
第一获取子模块,用于对所述码流进行解码处理,获取所述K个预设变换层对应的第一目标标识,所述第一目标标识包括K个预设变换层对应的第一标识和第二标识中的至少一项,其中,所述K个预设变换层对应的第一标识用于指示所述K个预设变换层的预测模式是否为以层为单位的预测模式,所述K个预设变换层对应的第二标识用于指示所述K个预设变换层的预测模式是帧间层的预测模式或帧内层的预测模式;
第二获取子模块,用于根据所述第一标识和所述第二标识中的至少一项指示的预测模式,得到所述第二信息。
可选地,所述第二获取子模块用于:
在所述第一目标标识包括所述第一标识,且所述第一标识指示所述K个预设变换层的预测模式不是以层为单位的预测模式的情况下,根据所述第一标识指示的预测模式,得到所述第二信息;
或者,在所述第一目标标识包括所述第一标识和所述第二标识,且所述第一标识指示所述K个预设变换层的预测模式是以层为单位的预测模式的情况下,根据所述第二标识指示的预测模式,得到所述第二信息;
或者,在所述第一目标标识包括所述第二标识的情况下,根据所述第二标识指示的预测模式,得到所述第二信息
可选地,所述第一获取模块包括:
第三获取子模块,用于对所述码流进行解码处理,获取目标变换层对应的第二目标标识,所述第二目标标识包括目标变换层对应的第一标识和第二标识中的至少一项,所述目标变换层对应的第一标识用于指示所述目标变换层的预测模式是否为以层为单位的预测模式,所述目标变换层对应的第二标识用于指示所述目标变换层的预测模式是帧间层的预测模式或帧内层的预测模式,所述目标变换层为N-K个变换层中的任意一个变换层;
第四获取子模块,用于根据所述目标变换层对应的第一标识和第二标识中的至少一项,得到所述第一信息。
可选地,所述第四获取子模块用于:
在所述第二目标标识包括所目标变换层对应的第一标识,且所述目标变换层对应的第一标识指示所述目标变换层的预测模式不是以层为单位的预测模式的情况下,根据所述目标变换层对应的第一标识指示的预测模式,得到所述第一信息;
在所述第二目标标识包括所目标变换层对应的第一标识,且所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,根据所述目标变换层在所述树形数据结构中的位置信息,得到所述第一信息;
或者,在所述第二目标标识包括所目标变换层对应的第一标识和第二标识,且所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,根据所述目标变换层对应的第二标识指示的预测模式,得到所述第一信息;
或者,在所述第二目标标识包括所目标变换层对应的第二标识的情况下,根据所述目标变换层对应的第二标识指示的预测模式,得到所述第一信息。
可选地,本申请实施例的装置,还包括:
第三获取模块,用于对所述码流进行解码,获取所述K;或者,根据协议约定,获取所述K。
可选地,所述K个预设变换层为所述树形数据结构中的前K个变换层。
本申请实施例中,由于K个预设变换层的预测模式是预先约定的或者对应同一种预测模式,因此,编码端可以无需对该K个预设变换层的预测模式进行编码或者对于该K个预设变换层仅编码上述一种预测模式,从而能够减少编码比特,节省编码资源,并提高编码效率。
本申请实施例提供的点云信息的编码方法,执行主体可以为点云信息的编码装置。本申请实施例中以点云信息的编码装置执行点云信息的编码方法为例,说明本申请实施例提供的点云信息的编码装置。
本申请实施例提供的点云信息的解码装置能够实现图4的方法实施例实现的各个过程,并达到相同的技术效果,为避免重复,这里不再赘述。
如图7所述,本申请实施例还提供了一种点云信息的编码装置700,包括:
构建模块701,用于构建目标点云的树形数据结构,所述树形数据结构包括N个变换层,N为正整数;
确定模块702,用于确定所述树形数据结构的N个变换层的预测模式,其中,所述树形数据结构的K个预设变换层的预测模式为预先约定的预测模式,或者,所述K个预设变换层的预测模式为同一种预测模式,0<K≤N,且K为整数;
第四获取模块703,用于对所述树形数据结构的变换层的预测模式进行编码,得到码流,所述码流包括第一信息,或者包括第一信息和第二信息;
其中,所述第一信息用于指示所述N个变换层中除所述K个预设变换层之外的N-K个变换层的预测模式;所述第二信息用于指示所述同一种预测模式。
可选地,所述第四获取模块用于:
对所述K个预设变换层对应的第一目标标识进行编码,得到第二信息,所述第一目标标识包括K个预设变换层对应的第一标识和第二标识中的至少一项,其中,所述K个预设变换层对应的第一标识用于指示所述K个预设变换层的预测模式是否为以层为单位的预测模式,所述K个预设变换层对应的第二标识用于指示所述K个预设变换层的预测模式是帧间层的预测模式或帧内层的预测模式。
可选地,所述第四获取模块用于:
在所述K个预设变换层对应的第一标识指示所述K个预设变换层的预测模式不是以层为单位的预测模式的情况下,根据所述第一标识的编码信息,得到所述第二信息;
或者,在所述K个预设变换层对应的第一标识指示所述K个预设变换层的预测模式是以层为单位的预测模式的情况下,根据所述第一标识的编码信息和所述第二标识的编码信息,得到所述第二信息,或者根据所述第二标识的编码信息,得到所述第二信息。
可选地,所述第四获取模块用于:
对所述目标变换层对应的第二目标标识进行编码,得到所述第一信息,所述第二目标标识包括目标变换层对应的第一标识和第二标识中的至少一项,所述目标变换层对应的第一标识用于指示所述目标变换层的预测模式是否为以层为单位的预测模式,所述目标变换层对应的第二标识用于指示所述目标变换层的预测模式是帧间层的预测模式或帧内层的预测模式,所述目标变换层为N-K个变换层中的任意一个变换层。
可选地,所述第四获取模块用于:
在所述目标变换层对应的第一标识指示所述目标变换层的预测模式不是以层为单位的预测模式的情况下,根据所述目标变换层对应的第一标识的编码信息,得到所述第一信息;
或者,在所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,根据所述目标变换层对应的第一标识和第二标识的编码信息,得到所述第一信息,或者,根据所述目标变换层对应的第二标识的编码信息,得到所述第一信息;
或者,在所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,若所述目标变换层处于所述树形数据结构的上层部分,或者,所述目标变换层处于所述树形数据结构的下层部分且所述下层部分不允许进行加权预测,则根据所述第一标识的编码信息,得到所述第一信息,若所述目标变换层处于所述树形数据结构的中层部分,则根据所述第一标识和第二标识的编码信息,得到所述第一信息。
可选地,本申请实施例的装置,还包括:
第五获取模块,用于获取至少两种预设预测模式中的每种预设预测模式的目标率失真优化代价,所述预设预测模式的目标率失真优化代价是基于K个预设变换层在所述预设预测模式下的率失真优化代价之和得到的;
第一选择模块,用于在至少两种预设预测模式中,选取目标率失真优化代价最小的预设预测模式作为所述K个预设变换层的预测模式。
可选地,本申请实施例的装置,还包括:
第六获取模块,用于获取所述N-K个变换层中的每个变换层在至少两种预设预测模式下的率失真优化代价;
第二选择模块,用于在至少两种预设预测模式中,选取率失真优化代价最小的预设预测模式作为每个所述变换层的预测模式。
可选地,所述码流中还包括所述K的编码信息。
本申请实施例中,由于K个预设变换层的预测模式是预先约定的或者对应同一种预测模式,因此,编码端可以无需对该K个预设变换层的预测模式进行编码或者对于该K个预设变换层仅编码上述一种预测模式,从而能够减少编码比特,节省编码资源,并提高编码效率。
本申请实施例提供的点云信息的编码装置能够实现图5的方法实施例实现的各个过程,并达到相同的技术效果,为避免重复,这里不再赘述。
如图8所示,本申请实施例还提供一种电子设备800,包括处理器801和存储器802,存储器802上存储有可在所述处理器801上运行的程序或指令,例如,该电子设备800为编码端设备时,该程序或指令被处理器801执行时实现上述点云信息的编码方法实施例的各个步骤,且能达到相同的技术效果。该电子设备800为解码端设备时,该程序或指令被处理器801执行时实现上述点云信息的解码码方法实施例的各个步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。可选的,存储器802可以是图1所示实施例中的存储器102或存储器113,处理器801可以实现图1、图2a、图2b、图3a以及图3b所示实施例中的编码器200或解码器300的功能。
本申请实施例还提供一种电子设备,包括:存储器,被配置为存储视频数据;以及处理电路,被配置为实现如上述点云信息的编码方法或解码方法实施例的各个步骤。可选的,存储器可以是图1所示实施例中的存储器102或存储器113,处理电路可以实现图1、图2a、图2b、图3a以及图3b所示实施例中的编码器200或解码器300的功能。
本申请实施例还提供一种电子设备,包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如图4或图5所示方法实施例中的步骤。该设备实施例与上述方法实施例对应,上述方法实施例的各个实施过程和实现方式均可适用于该终端实施例中,且能达到相同的技术效果。
上述电子设备可以是终端,也可以为除终端之外的其他设备,例如服务器、网络附属存储器(Network Attached Storage,NAS)等。
其中,终端可以是手机、平板电脑(Tablet Personal Computer)、膝上型电脑(Laptop Computer)、笔记本电脑、个人数字助理(Personal Digital Assistant,PDA)、掌上电脑、上网本、超级移动个人计算机(Ultra-mobile Personal Computer,UMPC)、移动上网装置(Mobile Internet Device,MID)、增强现实(Augmented Reality,AR)、虚拟现实(Virtual Reality,VR)设备、混合现实(mixed reality,MR)设备、机器人、可穿戴式设备(Wearable Device)、飞行器(flight vehicle)、车载设备(Vehicle User Equipment,VUE)、船载设备、行人终端(Pedestrian User Equipment,PUE)、智能家居(具有无线通信功能的家居设备,如冰箱、电视、洗衣机或者家具等)、游戏机、个人计算机(PersonalComputer,PC)、柜员机或者自助机等终端侧设备。可穿戴式设备包括:智能手表、智能手环、智能耳机、智能眼镜、智能首饰(智能手镯、智能手链、智能戒指、智能项链、智能脚镯、智能脚链等)、智能腕带、智能服装等。其中,车载设备也可以称为车载终端、车载控制器、车载模块、车载部件、车载芯片或车载单元等。需要说明的是,在本申请实施例并不限定终端的具体类型。
服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是云服务器,该云服务器可以提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(ContentDelivery Network,CDN)、或以大数据和人工智能平台为基础的云计算服务等。
示例性的,上述电子设备可以包括但不限于图1所示的源设备100或目的地设备110的类型。
以电子设备为终端为例,图9为实现本申请实施例的一种终端的硬件结构示意图。
该终端900包括但不限于:射频单元901、网络模块902、音频输出单元903、输入单元904、传感器905、显示单元906、用户输入单元907、接口单元908、存储器909以及处理器910等中的至少部分部件。
本领域技术人员可以理解,终端900还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器910逻辑相连,从而通过电源管理系统实现管理充电、放电以及功耗管理等功能。图9中示出的终端结构并不构成对终端的限定,终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
应理解的是,本申请实施例中,输入单元904可以包括图形处理单元(GraphicsProcessing Unit,GPU)9041和麦克风9042,图形处理器9041对在视频采集模式或图像采集模式中由图像采集装置(如摄像头)获得的静态图片或视频的图像数据进行处理,或者可以对获得的点云数据进行处理。显示单元906可包括显示面板9061,可以采用液晶显示器、有机发光二极管等形式来配置显示面板9061。用户输入单元907包括触控面板9071以及其他输入设备9072中的至少一种。触控面板9071,也称为触摸屏。触控面板9071可包括触摸检测装置和触摸控制器两个部分。其他输入设备9072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
本申请实施例中,射频单元901接收来自网络侧设备的下行数据后,可以传输给处理器910进行处理;另外,射频单元901可以向网络侧设备发送上行数据。通常,射频单元901包括但不限于天线、放大器、收发信机、耦合器、低噪声放大器、双工器等。
存储器909可用于存储软件程序或指令以及各种数据。存储器909可主要包括存储程序或指令的第一存储区和存储数据的第二存储区,其中,第一存储区可存储操作系统、至少一个功能所需的应用程序或指令(比如声音播放功能、图像播放功能等)等。此外,存储器909可以包括易失性存储器或非易失性存储器。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(EnhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本申请实施例中的存储器909包括但不限于这些和任意其它适合类型的存储器。
处理器910可包括一个或多个处理单元;可选的,处理器910集成应用处理器和调制解调处理器,其中,应用处理器主要处理涉及操作系统、用户界面和应用程序等的操作,调制解调处理器主要处理无线通信信号,如基带处理器。可以理解的是,上述调制解调处理器也可以不集成到处理器910中。
其中,处理器910,用于对码流进行解码处理,得到第一信息或者得到第一信息和第二信息;其中,所述第一信息用于指示目标点云的树形数据结构包括的N个变换层中除K个预设变换层之外的N-K个变换层的预测模式,所述第二信息用于指示K个预设变换层对应的同一种预测模式,N为正整数,0<K≤N,且K为整数,所述第二信息用于指示K个预设变换层对应的同一种预测模式,0<K≤N,且K为整数;根据所述第一信息以及所述K个预设变换层对应的预先约定的预测模式,或者,根据所述第一信息和所述第二信息,得到所述N个变换层的预测模式。或者,用于构建目标点云的树形数据结构,所述树形数据结构包括N个变换层,N为正整数;确定所述树形数据结构的N个变换层的预测模式,其中,所述树形数据结构的K个预设变换层的预测模式为预先约定的预测模式,或者,所述K个预设变换层的预测模式为同一种预测模式,0<K≤N,且K为整数;对所述树形数据结构的变换层的预测模式进行编码,得到码流,所述码流包括第一信息,或者包括第一信息和第二信息;
其中,所述第一信息用于指示所述N个变换层中除所述K个预设变换层之外的N-K个变换层的预测模式;所述第二信息用于指示所述同一种预测模式。
上述方案中,由于K个预设变换层的预测模式是预先约定的或者对应同一种预测模式,因此,编码端可以无需对该K个预设变换层的预测模式进行编码或者对于该K个预设变换层仅编码上述一种预测模式,从而能够减少编码比特,节省编码资源,并提高编码效率。
可以理解,本实施例中提及的各实现方式的实现过程可以参照方法实施例点云信息的编码方法或解码方法的相关描述,并达到相同或相应的技术效果,为避免重复,在此不再赘述。
本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述点云信息的编码方法或解码方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的终端中的处理器。所述可读存储介质,包括计算机可读存储介质,如ROM、RAM、磁碟或者光盘等。在一些示例中,可读存储介质可以是非瞬态的可读存储介质。
本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述点云信息的编码方法或解码方法方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片可以包括系统级芯片(也可称为系统芯片、芯片系统或片上系统芯片),也可以包括独立显示芯片等。
本申请实施例另提供了一种计算机程序/程序产品,所述计算机程序/程序产品被存储在存储介质中,所述计算机程序/程序产品被至少一个处理器执行以实现上述点云信息的编码方法或解码方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本申请实施例还提供了一种点云信息的编解码系统,包括:编码端设备及解码端设备,所述编码端设备可用于执行如上所述的点云信息的编码方法的步骤,所述解码端设备可用于执行如上所述的点云信息的解码方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助计算机软件产品加必需的通用硬件平台的方式来实现,当然也可以通过硬件。该计算机软件产品存储在存储介质(如ROM、RAM、磁碟、光盘等)中,包括若干指令,用以使得终端或者网络侧设备执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式的实施方式,这些实施方式均属于本申请的保护之内。
Claims (38)
1.一种点云信息的解码方法,其特征在于,包括:
解码端对码流进行解码处理,得到第一信息或者得到第一信息和第二信息;其中,所述第一信息用于指示目标点云的树形数据结构包括的N个变换层中除K个预设变换层之外的N-K个变换层的预测模式,所述第二信息用于指示K个预设变换层对应的同一种预测模式,N为正整数,0<K≤N,且K为整数;
所述解码端根据所述第一信息以及所述K个预设变换层对应的预先约定的预测模式,或者,根据所述第一信息和所述第二信息,得到所述N个变换层的预测模式。
2.根据权利要求1所述的方法,其特征在于,所述解码端对码流进行解码处理,得到第一信息或者得到第一信息和第二信息,包括:
在所述K个预设变换层对应的预测模式为预先约定的预测模式的情况下,对所述码流进行解码处理,得到第一信息;
或者,在所述K个预设变换层对应的预测模式不是预先约定的预测模式的情况下,对所述码流进行解码处理,得到第一信息和所述第二信息。
3.根据权利要求1或2所述的方法,其特征在于,对所述码流进行解码处理,得到第二信息,包括:
对所述码流进行解码处理,获取所述K个预设变换层对应的第一目标标识,所述第一目标标识包括K个预设变换层对应的第一标识和第二标识中的至少一项,其中,所述K个预设变换层对应的第一标识用于指示所述K个预设变换层的预测模式是否为以层为单位的预测模式,所述K个预设变换层对应的第二标识用于指示所述K个预设变换层的预测模式是帧间层的预测模式或帧内层的预测模式;
根据所述第一标识和所述第二标识中的至少一项指示的预测模式,得到所述第二信息。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第一标识和所述第二标识中的至少一项指示的预测模式,得到所述第二信息,包括:
在所述第一目标标识包括所述第一标识,且所述第一标识指示所述K个预设变换层的预测模式不是以层为单位的预测模式的情况下,根据所述第一标识指示的预测模式,得到所述第二信息;
或者,在所述第一目标标识包括所述第一标识和所述第二标识,且所述第一标识指示所述K个预设变换层的预测模式是以层为单位的预测模式的情况下,根据所述第二标识指示的预测模式,得到所述第二信息;
或者,在所述第一目标标识包括所述第二标识的情况下,根据所述第二标识指示的预测模式,得到所述第二信息。
5.根据权利要求1至4任一项所述的方法,其特征在于,对所述码流进行解码处理,得到第一信息,包括:
对所述码流进行解码处理,获取目标变换层对应的第二目标标识,所述第二目标标识包括目标变换层对应的第一标识和第二标识中的至少一项,所述目标变换层对应的第一标识用于指示所述目标变换层的预测模式是否为以层为单位的预测模式,所述目标变换层对应的第二标识用于指示所述目标变换层的预测模式是帧间层的预测模式或帧内层的预测模式,所述目标变换层为N-K个变换层中的任意一个变换层;
根据所述目标变换层对应的第一标识和第二标识中的至少一项,得到所述第一信息。
6.根据权利要求5所述的方法,其特征在于,根据所述目标变换层对应的第一标识和第二标识中的至少一项,得到所述第一信息,包括:
在所述第二目标标识包括所目标变换层对应的第一标识,且所述目标变换层对应的第一标识指示所述目标变换层的预测模式不是以层为单位的预测模式的情况下,根据所述目标变换层对应的第一标识指示的预测模式,得到所述第一信息;
在所述第二目标标识包括所目标变换层对应的第一标识,且所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,根据所述目标变换层在所述树形数据结构中的位置信息,得到所述第一信息;
或者,在所述第二目标标识包括所目标变换层对应的第一标识和第二标识,且所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,根据所述目标变换层对应的第二标识指示的预测模式,得到所述第一信息;
或者,在所述第二目标标识包括所目标变换层对应的第二标识的情况下,根据所述目标变换层对应的第二标识指示的预测模式,得到所述第一信息。
7.根据权利要求6所述的方法,其特征在于,根据所述目标变换层在所述树形数据结构中的位置信息,得到所述第一信息,包括:
在所述目标变换层处于所述树形数据结构的上层部分的情况下,确定所述目标变换层的预测模式为帧内层的预测模式;
在所述目标变换层处于所述树形数据结构的下层部分,且所述下层部分不允许进行加权预测的情况下,确定所述目标变换层的预测模式为帧间层的预测模式。
8.根据权利要求1至7任一项所述的方法,其特征在于,还包括:
对所述码流进行解码,获取所述K;
或者,根据协议约定,获取所述K。
9.根据权利要求1至8任一项所述的方法,其特征在于,所述K个预设变换层为所述树形数据结构中的前K个变换层。
10.一种点云信息的编码方法,其特征在于,包括:
编码端构建目标点云的树形数据结构,所述树形数据结构包括N个变换层,N为正整数;
所述编码端确定所述树形数据结构的N个变换层的预测模式,其中,所述树形数据结构的K个预设变换层的预测模式为预先约定的预测模式,或者,所述K个预设变换层的预测模式为同一种预测模式,0<K≤N,且K为整数;
所述编码端对所述树形数据结构的变换层的预测模式进行编码,得到码流,所述码流包括第一信息,或者包括第一信息和第二信息;
其中,所述第一信息用于指示所述N个变换层中除所述K个预设变换层之外的N-K个变换层的预测模式;所述第二信息用于指示所述同一种预测模式。
11.根据权利要求10所述的方法,其特征在于,所述编码端对所述树形数据结构的变换层的预测模式进行编码,包括:
所述编码端在所述K个预设变换层的预测模式为同一种预测模式的情况下,对所述同一种预测模式以及所述N-K个变换层中每个变换层的预测模式进行编码;
或者,所述编码端在所述K个预设变换层的预测模式为预先约定的预测模式的情况下,对所述N-K个变换层的每个变换层的预测模式进行编码。
12.根据权利要求10或11所述的方法,其特征在于,所述编码端对所述树形数据结构的变换层的预测模式进行编码,得到第二信息,包括:
所述编码端对所述K个预设变换层对应的第一目标标识进行编码,得到第二信息,所述第一目标标识包括K个预设变换层对应的第一标识和第二标识中的至少一项,其中,所述K个预设变换层对应的第一标识用于指示所述K个预设变换层的预测模式是否为以层为单位的预测模式,所述K个预设变换层对应的第二标识用于指示所述K个预设变换层的预测模式是帧间层的预测模式或帧内层的预测模式。
13.根据权利要求12所述的方法,其特征在于,所述编码端对所述K个预设变换层对应的第一目标标识进行编码,得到第二信息,包括:
在所述K个预设变换层对应的第一标识指示所述K个预设变换层的预测模式不是以层为单位的预测模式的情况下,根据所述第一标识的编码信息,得到所述第二信息;
或者,在所述K个预设变换层对应的第一标识指示所述K个预设变换层的预测模式是以层为单位的预测模式的情况下,根据所述第一标识的编码信息和所述第二标识的编码信息,得到所述第二信息,或者根据所述第二标识的编码信息,得到所述第二信息。
14.根据权利要求10至13任一项所述的方法,其特征在于,所述编码端对所述树形数据结构的变换层的预测模式进行编码,得到第一信息,包括:
对所述目标变换层对应的第二目标标识进行编码,得到所述第一信息,所述第二目标标识包括目标变换层对应的第一标识和第二标识中的至少一项,所述目标变换层对应的第一标识用于指示所述目标变换层的预测模式是否为以层为单位的预测模式,所述目标变换层对应的第二标识用于指示所述目标变换层的预测模式是帧间层的预测模式或帧内层的预测模式,所述目标变换层为N-K个变换层中的任意一个变换层。
15.根据权利要求14所述的方法,其特征在于,所述对所述目标变换层对应的第二目标标识进行编码,得到所述第一信息,包括:
在所述目标变换层对应的第一标识指示所述目标变换层的预测模式不是以层为单位的预测模式的情况下,根据所述目标变换层对应的第一标识的编码信息,得到所述第一信息;
或者,在所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,根据所述目标变换层对应的第一标识和第二标识的编码信息,得到所述第一信息,或者,根据所述目标变换层对应的第二标识的编码信息,得到所述第一信息;
或者,在所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,若所述目标变换层处于所述树形数据结构的上层部分,或者,所述目标变换层处于所述树形数据结构的下层部分且所述下层部分不允许进行加权预测,则根据所述第一标识的编码信息,得到所述第一信息,若所述目标变换层处于所述树形数据结构的中层部分,则根据所述第一标识和第二标识的编码信息,得到所述第一信息。
16.根据权利要求10至15任一项所述的方法,其特征在于,还包括:
获取至少两种预设预测模式中的每种预设预测模式的目标率失真优化代价,所述预设预测模式的目标率失真优化代价是基于K个预设变换层在所述预设预测模式下的率失真优化代价之和得到的;
在至少两种预设预测模式中,选取目标率失真优化代价最小的预设预测模式作为所述K个预设变换层的预测模式。
17.根据权利要求10至16任一项所述的方法,其特征在于,还包括:
获取所述N-K个变换层中的每个变换层在至少两种预设预测模式下的率失真优化代价;
在至少两种预设预测模式中,选取率失真优化代价最小的预设预测模式作为每个所述变换层的预测模式。
18.根据权利要求10至17任一项所述的方法,其特征在于,所述码流中还包括所述K的编码信息。
19.一种点云信息的解码装置,其特征在于,包括:
第一获取模块,用于对码流进行解码处理,得到第一信息或者得到第一信息和第二信息;其中,所述第一信息用于指示目标点云的树形数据结构包括的N个变换层中除K个预设变换层之外的N-K个变换层的预测模式,所述第二信息用于指示K个预设变换层对应的同一种预测模式,N为正整数,0<K≤N,且K为整数;
第二获取模块,用于根据所述第一信息以及所述K个预设变换层对应的预先约定的预测模式,或者,根据所述第一信息和所述第二信息,得到所述N个变换层的预测模式。
20.根据权利要求19所述的装置,其特征在于,所述第一获取模块用于:
在所述K个预设变换层对应的预测模式为预先约定的预测模式的情况下,对所述码流进行解码处理,得到第一信息;
或者,在所述K个预设变换层对应的预测模式不是预先约定的预测模式的情况下,对所述码流进行解码处理,得到第一信息和所述第二信息。
21.根据权利要求19或20所述的装置,其特征在于,所述第一获取模块包括:
第一获取子模块,用于对所述码流进行解码处理,获取所述K个预设变换层对应的第一目标标识,所述第一目标标识包括K个预设变换层对应的第一标识和第二标识中的至少一项,其中,所述K个预设变换层对应的第一标识用于指示所述K个预设变换层的预测模式是否为以层为单位的预测模式,所述K个预设变换层对应的第二标识用于指示所述K个预设变换层的预测模式是帧间层的预测模式或帧内层的预测模式;
第二获取子模块,用于根据所述第一标识和所述第二标识中的至少一项指示的预测模式,得到所述第二信息。
22.根据权利要求21所述的装置,其特征在于,所述第二获取子模块用于:
在所述第一目标标识包括所述第一标识,且所述第一标识指示所述K个预设变换层的预测模式不是以层为单位的预测模式的情况下,根据所述第一标识指示的预测模式,得到所述第二信息;
或者,在所述第一目标标识包括所述第一标识和所述第二标识,且所述第一标识指示所述K个预设变换层的预测模式是以层为单位的预测模式的情况下,根据所述第二标识指示的预测模式,得到所述第二信息;
或者,在所述第一目标标识包括所述第二标识的情况下,根据所述第二标识指示的预测模式,得到所述第二信息。
23.根据权利要求19至22任一项所述的装置,其特征在于,所述第一获取模块包括:
第三获取子模块,用于对所述码流进行解码处理,获取目标变换层对应的第二目标标识,所述第二目标标识包括目标变换层对应的第一标识和第二标识中的至少一项,所述目标变换层对应的第一标识用于指示所述目标变换层的预测模式是否为以层为单位的预测模式,所述目标变换层对应的第二标识用于指示所述目标变换层的预测模式是帧间层的预测模式或帧内层的预测模式,所述目标变换层为N-K个变换层中的任意一个变换层;
第四获取子模块,用于根据所述目标变换层对应的第一标识和第二标识中的至少一项,得到所述第一信息。
24.根据权利要求23所述的装置,其特征在于,所述第四获取子模块用于:
在所述第二目标标识包括所目标变换层对应的第一标识,且所述目标变换层对应的第一标识指示所述目标变换层的预测模式不是以层为单位的预测模式的情况下,根据所述目标变换层对应的第一标识指示的预测模式,得到所述第一信息;
在所述第二目标标识包括所目标变换层对应的第一标识,且所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,根据所述目标变换层在所述树形数据结构中的位置信息,得到所述第一信息;
或者,在所述第二目标标识包括所目标变换层对应的第一标识和第二标识,且所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,根据所述目标变换层对应的第二标识指示的预测模式,得到所述第一信息;
或者,在所述第二目标标识包括所目标变换层对应的第二标识的情况下,根据所述目标变换层对应的第二标识指示的预测模式,得到所述第一信息。
25.根据权利要求19至24任一项所述的装置,其特征在于,还包括:
第三获取模块,用于对所述码流进行解码,获取所述K;或者,根据协议约定,获取所述K。
26.一种点云信息的编码装置,其特征在于,包括:
构建模块,用于构建目标点云的树形数据结构,所述树形数据结构包括N个变换层,N为正整数;
确定模块,用于确定所述树形数据结构的N个变换层的预测模式,其中,所述树形数据结构的K个预设变换层的预测模式为预先约定的预测模式,或者,所述K个预设变换层的预测模式为同一种预测模式,0<K≤N,且K为整数;
第四获取模块,用于对所述树形数据结构的变换层的预测模式进行编码,得到码流,所述码流包括第一信息,或者包括第一信息和第二信息;
其中,所述第一信息用于指示所述N个变换层中除所述K个预设变换层之外的N-K个变换层的预测模式;所述第二信息用于指示所述同一种预测模式。
27.根据权利要求26所述的装置,其特征在于,所述第四获取模块用于:
在所述K个预设变换层的预测模式为同一种预测模式的情况下,对所述同一种预测模式以及所述N-K个变换层中每个变换层的预测模式进行编码;
或者,在所述K个预设变换层的预测模式为预先约定的预测模式的情况下,对所述N-K个变换层的每个变换层的预测模式进行编码。
28.根据权利要求26或27所述的装置,其特征在于,所述第四获取模块用于:
对所述K个预设变换层对应的第一目标标识进行编码,得到第二信息,所述第一目标标识包括K个预设变换层对应的第一标识和第二标识中的至少一项,其中,所述K个预设变换层对应的第一标识用于指示所述K个预设变换层的预测模式是否为以层为单位的预测模式,所述K个预设变换层对应的第二标识用于指示所述K个预设变换层的预测模式是帧间层的预测模式或帧内层的预测模式。
29.根据权利要求28所述的装置,其特征在于,所述第四获取模块用于:
在所述K个预设变换层对应的第一标识指示所述K个预设变换层的预测模式不是以层为单位的预测模式的情况下,根据所述第一标识的编码信息,得到所述第二信息;
或者,在所述K个预设变换层对应的第一标识指示所述K个预设变换层的预测模式是以层为单位的预测模式的情况下,根据所述第一标识的编码信息和所述第二标识的编码信息,得到所述第二信息,或者根据所述第二标识的编码信息,得到所述第二信息。
30.根据权利要求26至29任一项所述的装置,其特征在于,所述第四获取模块用于:
对所述目标变换层对应的第二目标标识进行编码,得到所述第一信息,所述第二目标标识包括目标变换层对应的第一标识和第二标识中的至少一项,所述目标变换层对应的第一标识用于指示所述目标变换层的预测模式是否为以层为单位的预测模式,所述目标变换层对应的第二标识用于指示所述目标变换层的预测模式是帧间层的预测模式或帧内层的预测模式,所述目标变换层为N-K个变换层中的任意一个变换层。
31.根据权利要求30所述的装置,其特征在于,所述第四获取模块用于:
在所述目标变换层对应的第一标识指示所述目标变换层的预测模式不是以层为单位的预测模式的情况下,根据所述目标变换层对应的第一标识的编码信息,得到所述第一信息;
或者,在所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,根据所述目标变换层对应的第一标识和第二标识的编码信息,得到所述第一信息,或者,根据所述目标变换层对应的第二标识的编码信息,得到所述第一信息;
或者,在所述目标变换层对应的第一标识指示所述目标变换层的预测模式是以层为单位的预测模式的情况下,若所述目标变换层处于所述树形数据结构的上层部分,或者,所述目标变换层处于所述树形数据结构的下层部分且所述下层部分不允许进行加权预测,则根据所述第一标识的编码信息,得到所述第一信息,若所述目标变换层处于所述树形数据结构的中层部分,则根据所述第一标识和第二标识的编码信息,得到所述第一信息。
32.根据权利要求26至31任一项所述的装置,其特征在于,还包括:
第五获取模块,用于获取至少两种预设预测模式中的每种预设预测模式的目标率失真优化代价,所述预设预测模式的目标率失真优化代价是基于K个预设变换层在所述预设预测模式下的率失真优化代价之和得到的;
第一选择模块,用于在至少两种预设预测模式中,选取目标率失真优化代价最小的预设预测模式作为所述K个预设变换层的预测模式。
33.根据权利要求26至32任一项所述的装置,其特征在于,还包括:
第六获取模块,用于获取所述N-K个变换层中的每个变换层在至少两种预设预测模式下的率失真优化代价;
第二选择模块,用于在至少两种预设预测模式中,选取率失真优化代价最小的预设预测模式作为每个所述变换层的预测模式。
34.根据权利要求26至33任一项所述的装置,其特征在于,所述码流中还包括所述K的编码信息。
35.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1至9任一项所述的点云信息的解码方法的步骤,或实现如权利要求10至18任一项所述的点云信息的编码方法的步骤。
36.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1至9任一项所述的点云信息的解码方法的步骤,或实现如权利要求10至18任一项所述的点云信息的编码方法的步骤。
37.一种芯片,其特征在于,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如权利要求1至9任一项所述的点云信息的解码方法的步骤,或实现如权利要求10至18任一项所述的点云信息的编码方法的步骤。
38.一种计算机程序产品,其特征在于,包括计算机指令,所述计算机指令被处理器执行时实现如权利要求1至9任一项所述的点云信息的解码方法的步骤,或实现如权利要求10至18任一项所述的点云信息的编码方法的步骤。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202410457542.5A CN120835147A (zh) | 2024-04-16 | 2024-04-16 | 点云信息的解码、编码方法、装置及相关设备 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202410457542.5A CN120835147A (zh) | 2024-04-16 | 2024-04-16 | 点云信息的解码、编码方法、装置及相关设备 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN120835147A true CN120835147A (zh) | 2025-10-24 |
Family
ID=97397313
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202410457542.5A Pending CN120835147A (zh) | 2024-04-16 | 2024-04-16 | 点云信息的解码、编码方法、装置及相关设备 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN120835147A (zh) |
-
2024
- 2024-04-16 CN CN202410457542.5A patent/CN120835147A/zh active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN115474041B (zh) | 点云属性的预测方法、装置及相关设备 | |
| CN114598883B (zh) | 点云属性的预测方法、编码器、解码器及存储介质 | |
| WO2023024840A1 (zh) | 点云编解码方法、编码器、解码器及存储介质 | |
| CN116636214A (zh) | 点云编解码方法与系统、及点云编码器与点云解码器 | |
| CN116233467A (zh) | 点云属性的编解码方法、装置、设备及存储介质 | |
| CN119815053B (zh) | 点云属性编码方法、点云属性解码方法、装置及电子设备 | |
| CN120835147A (zh) | 点云信息的解码、编码方法、装置及相关设备 | |
| CN119815052B (zh) | 编码方法、解码方法及相关设备 | |
| CN120835153A (zh) | 解码方法、编码方法、装置、解码端及编码端 | |
| CN120476590A (zh) | 点云编解码方法、装置、设备及存储介质 | |
| CN120343259A (zh) | 编解码方法及相关设备 | |
| CN115733990A (zh) | 点云编解码方法、设备及存储介质 | |
| CN119810219A (zh) | 点云属性信息的确定方法、装置和电子设备 | |
| CN119854515A (zh) | 编码、解码方法、装置及电子设备 | |
| CN119729017A (zh) | 点云编码处理方法、点云解码处理方法及相关设备 | |
| CN120343269A (zh) | 点云重建方法、装置及相关设备 | |
| US20260039871A1 (en) | Point cloud encoding and decoding method and apparatus, device and storage medium | |
| CN120835158A (zh) | Trisoup顶点优化方法、装置及设备 | |
| US20260039870A1 (en) | Point cloud encoding method and apparatus, point cloud decoding method and apparatus, device, and storage medium | |
| WO2025218557A1 (zh) | 几何重建方法、装置及设备 | |
| CN121309850A (zh) | 点云解码方法、点云编码方法及相关设备 | |
| CN120188479A (zh) | 点云编解码方法、装置、设备及存储介质 | |
| CN121368893A (zh) | 解码方法、编码方法、解码器和编码器 | |
| CN120435867A (zh) | 点云编解码方法、装置、设备及存储介质 | |
| WO2023024842A1 (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 |