WO2024145953A1 - 解码方法、编码方法、解码器以及编码器 - Google Patents
解码方法、编码方法、解码器以及编码器 Download PDFInfo
- Publication number
- WO2024145953A1 WO2024145953A1 PCT/CN2023/071274 CN2023071274W WO2024145953A1 WO 2024145953 A1 WO2024145953 A1 WO 2024145953A1 CN 2023071274 W CN2023071274 W CN 2023071274W WO 2024145953 A1 WO2024145953 A1 WO 2024145953A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- parameter
- value
- current point
- attribute
- context
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 190
- 230000003044 adaptive effect Effects 0.000 claims description 155
- 238000004422 calculation algorithm Methods 0.000 claims description 82
- 238000004590 computer program Methods 0.000 claims description 27
- 230000000875 corresponding effect Effects 0.000 description 60
- 230000009466 transformation Effects 0.000 description 32
- 230000006835 compression Effects 0.000 description 17
- 238000007906 compression Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 16
- 230000006870 function Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 12
- 238000013139 quantization Methods 0.000 description 10
- 230000003068 static effect Effects 0.000 description 7
- 238000012360 testing method Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 239000007787 solid Substances 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 230000002596 correlated effect Effects 0.000 description 4
- 238000012812 general test Methods 0.000 description 4
- 238000002310 reflectometry Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 101000827703 Homo sapiens Polyphosphoinositide phosphatase Proteins 0.000 description 3
- 102100023591 Polyphosphoinositide phosphatase Human genes 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 101150019148 Slc7a3 gene Proteins 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000002591 computed tomography Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 210000000056 organ Anatomy 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 101000638069 Homo sapiens Transmembrane channel-like protein 2 Proteins 0.000 description 1
- 241000023320 Luma <angiosperm> Species 0.000 description 1
- 101100233916 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) KAR5 gene Proteins 0.000 description 1
- 102100032054 Transmembrane channel-like protein 2 Human genes 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011960 computer-aided design Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000003814 drug Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000002595 magnetic resonance imaging Methods 0.000 description 1
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 235000014347 soups Nutrition 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000011426 transformation method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Abstract
本申请实施例提供了一种解码方法、编码方法、解码器以及编码器,能够提升编解码性能。该解码方法,包括:获取当前点的第一参数和第二参数;基于该第一参数和该第二参数,确定该当前点的属性系数。在本申请提供的解码方法中,解码器通过获取当前点的第一参数和第二参数,并基于该第一参数和该第二参数,确定该当前点的属性系数;能够减小编码码字,进而能够提升编解码性能。
Description
本申请实施例涉及编解码技术领域,并且更具体地,涉及解码方法、编码方法、解码器以及编码器。
点云已经开始普及到各个领域,例如,虚拟/增强现实、机器人、地理信息系统、医学领域等。随着扫描设备的基准度和速率的不断提升,可以准确地获取物体表面的大量点云,往往一个场景下就可以对应几十万个点。数量如此庞大的点也给计算机的存储和传输带来了挑战。因此,对点的压缩也就成为一个热点问题。
对于点云的压缩来说,主要需要压缩其几何信息和属性信息。具体而言,编码器先通过对点云的几何信息进行八叉树划分,然后利用熵编码算法对通过八叉树结构表达的几何信息进行熵编码得到几何码流。同时,编码器根据通过八叉树结构表达的几何信息对几何信息进行重建,并基于重建的几何信息对当前点的属性系数进行预测,并通过与属性信息的原始值进行做差的方式得到当前点的残差,然后对残差进行量化得到的量化残差,并利用熵编码算法对量化残差进行熵编码得到属性码流。
然而,如何提升熵编解码性能仍是本领域亟需解决的技术问题。
发明内容
本申请实施例提供了一种解码方法、编码方法、解码器以及编码器,能够提升编解码性能。
第一方面,本申请实施例提供了一种解码方法,包括:
获取当前点的第一参数和第二参数;
基于该第一参数和该第二参数,确定该当前点的属性系数。
第二方面,本申请实施例提供了一种编码方法,包括:
获取当前点的属性系数;
基于该当前点的属性系数,确定该当前点的第一参数和第二参数;
对该第一参数和该第二参数进行编码。
第三方面,本申请实施例提供了一种解码器,包括:
获取单元,用于获取当前点的第一参数和第二参数;
确定单元,用于基于该第一参数和该第二参数,确定该当前点的属性系数。
第四方面,本申请实施例提供了一种编码器,包括:
获取单元,用于获取当前点的属性系数;
确定单元,用于基于该当前点的属性系数,确定该当前点的第一参数和第二参数;
编码单元,用于对该第一参数和该第二参数进行编码。
第五方面,本申请实施例提供了一种解码器,包括:
处理器,适于实现计算机指令;以及,
计算机可读存储介质,计算机可读存储介质存储有计算机指令,计算机指令适于由处理器加载并执行上述第一方面或其各实现方式中的解码方法。
在一种实现方式中,该处理器为一个或多个,该存储器为一个或多个。
在一种实现方式中,该计算机可读存储介质可以与该处理器集成在一起,或者该计算机可读存储介质与处理器分离设置。
第六方面,本申请实施例提供了一种编码器,包括:
处理器,适于实现计算机指令;以及,
计算机可读存储介质,计算机可读存储介质存储有计算机指令,计算机指令适于由处理器加载并执行第二方面或其各实现方式中的编码方法。
在一种实现方式中,该处理器为一个或多个,该存储器为一个或多个。
在一种实现方式中,该计算机可读存储介质可以与该处理器集成在一起,或者该计算机可读存储介质与处理器分离设置。
第七方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,该计算机指令被计算机设备的处理器读取并执行时,使得计算机设备执行上述第一方面涉及的解码方法或第二方面涉及的编码方法。
第八方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述第一方面涉及的解码方法或第二方面涉及的编码方法。。
第九方面,本申请实施例提供了一种码流,该码流如上述第一方面所述的方法中涉及的码流或如第二方面所述的方法生成的码流。
基于以上技术方案,对于本申请实施例提供的解码方法,解码器通过获取当前点的第一参数和第二参数,并基于该第一参数和该第二参数,确定该当前点的属性系数;能够减小编码码字,进而能够提升编解码性能。
图1是本申请实施例提供的点云图像的示例。
图2是图1所示的点云图像的局部放大图。
图3是本申请实施例提供的具有的六个观看角度的点云图像的示例。
图4是本申请实施例提供的G-PCC编码框架的示意性框图。
图5是本申请实施例提供的G-PCC解码框架的示意性框图。
图6是本申请实施例提供的AVS PCC编码框架的示意性框图。
图7是本申请实施例提供的AVS PCC解码框架的示意性框图。
图8是本申请实施例提供的解码方法的示意性流程图。
图9是本申请实施例提供的编码方法的示意性流程图。
图10是本申请实施例提供的解码器的示意性流程图。
图11是本申请实施例提供的编码器的示意性流程图。
图12是本申请实施例提供的电子设备的示意性框图。
下面将结合附图,对本申请实施例中的技术方案进行描述。
点云(Point Cloud)是空间中一组无规则分布的、表达三维物体或三维场景的空间结构及表面属性的离散点集。图1和图2分别示出了三维点云图像和局部放大图,可以看到点云表面是由分布稠密的点所组成的。
二维图像在每一个像素点均有信息表达,因此不需要额外记录其位置信息;然而点云中的点在三维空间中的分布具有随机性和不规则性,因此需要记录每一个点在空间中的位置,才能完整地表达一幅点云。与二维图像类似,点云中的每一个点均有对应的属性信息,通常为RGB颜色值,颜色值反映物体的色彩;对于点云来说,每一个点所对应的属性信息除了颜色以外,还可以是反射率(reflectance)值,反射率值反映物体的表面材质。点云中每个点可以包括几何信息和属性信息,其中,点云中每个点的几何信息是指该点的笛卡尔三维坐标数据,点云中每个点的属性信息可以包括但不限于以下至少一种:颜色信息、材质信息、激光反射强度信息。颜色信息可以是任意一种色彩空间上的信息。例如,颜色信息可以是红绿蓝(Red Green Blue,RGB)信息。再如,颜色信息还可以是亮度色度(YCbCr,YUV)信息。其中,Y表示明亮度(Luma),Cb(U)表示蓝色色度分量,Cr(V)表示红色色度分量。点云中的每个点都具有相同数量的属性信息。例如,点云中的每个点都具有颜色信息和激光反射强度两种属性信息。再如,点云中的每个点都具有颜色信息、材质信息和激光反射强度信息三种属性信息。
点云图像可具有的多个观看角度,例如,如图3所示的点云图像可具有的六个观看角度,点云图像的数据存储格式由文件头信息部分和数据部分组成,头信息包含数据格式、数据表示类型、点云总点数、以及点云所表示的内容。
示例性地,点云图像的数据存储格式可实现为以下格式:
ply
format ascii 1.0
element vertex 207242
property float x
property float y
property float z
property uchar red
property uchar green
property uchar blue
75 318 0 0 142 0
75 319 0 0 143 0
75 319 1 1 9 9
75 315 0 1 9 9。
针对上述点云图像的数据存储格式,其数据格式为“.ply”格式,由ASCII码表示,总点数为207242,每个点具有三维位置信息xyz和三维颜色信息rgb。
点云可以灵活方便地表达三维物体或场景的空间结构及表面属性,并且由于点云通过直接对真实物体采样获得,在保证精度的前提下能提供极强的真实感,因而应用广泛,其范围包括虚拟现实游戏、计算机辅助设计、地理信息系统、自动导航系统、数字文化遗产、自由视点广播、三维沉浸远程呈现、生物组织器官三维重建等。
示例性地,可以基于应用场景可以将点云划分为两大类别,即机器感知点云和人眼感知点云。机器感知点云的应用场景包括但不限于:自主导航系统、实时巡检系统、地理信息系统、视觉分拣机器人、抢险救灾机器人等点云应用场景。人眼感知点云的应用场景包括但不限于:数字文化遗产、自由视点广播、三维沉浸通信、三维沉浸交互等点云应用场景。相应的,可以基于点云的获取方式,将点云划分为密集型点云和稀疏型点云;也可基于点云的获取途径将点云划分为静态点云和动态点云,更具体可划分为三种类型的点云,即第一静态点云、第二类动态点云以及第三类动态获取点云。针对第一静态点云,物体是静止的,且获取点云的设备也是静止的;针对第二类动态点云,物体是运动的,但获取点云的设备是静止的;针对第三类动态获取点云,获取点云的设备是运动的。
示例性地,点云的采集途径包括但不限于:计算机生成、3D激光扫描、3D摄影测量等。计算机可以生成虚拟三维物体及场景的点云;3D激光扫描可以获得静态现实世界三维物体或场景的点云,每秒可以获取百万级点云;3D摄影测量可以获得动态现实世界三维物体或场景的点云,每秒可以获取千万级点云。具体而言,可通过光电雷达、激光雷达、激光扫描仪、多视角相机等采集设备,可以采集得到物体表面的点云。根据激光测量原理得到的点云,其可以包括点的三维坐标信息和点的激光反射强度(reflectance)。根据摄影测量原理得到的点云,其可以可包括点的三维坐标信息和点的颜色信息。结合激光测量和摄影测量原理得到点云,其可以可包括点的三维坐标信息、点的激光反射强度(reflectance)和点的颜色信息。这些技术降低了点云数据获取成本和时间周期,提高了数据的精度。例如,在医学领域,由磁共振成像(magnetic resonance imaging,MRI)、计算机断层摄影(computed tomography,CT)、电磁定位信息,可以获得生物组织器官的点云。这些技术降低了点云的获取成本和时间周期,提高了数据的精度。点云数据获取方式的变革,使大量点云数据的获取成为可能,伴随着应用需求的增长,海量3D点云数据的处理遭遇存储空间和传输带宽限制的瓶颈。
以帧率(Frame Per Second,FPS)为30的点云视频为例,每帧点云的点数为70万,其中,每一帧点云中的每一个点具有坐标信息xyz(float)和颜色信息RGB(uchar),则10s长度的点云视频的数据量大约为0.7个百万(million)×(4Byte×3+1Byte×3)×30fps×10s=3.15GB,而YUV采样格式为4:2:0,帧率(Frame Per Second,FPS)为24的分辨率为1280×720的二维视频,其10秒(s)的数据量约为1280×720×12bit×24frames×10s≈0.33GB,10s的两视角3D视频的数据量约为0.33×2=0.66GB。由此可见,点云视频的数据量远超过相同时长的二维视频和三维视频的数据量。因此,为更好地实现数据管理,节省服务器存储空间,降低服务器与客户端之间的传输流量及传输时间,点云压缩成为促进点云产业发展的关键问题。
点云压缩一般采用点云几何信息和属性信息分别压缩的方式,在编码端,首先在几何编码器中编码点云几何信息,然后将重建几何信息作为附加信息输入到属性编码器中,以辅助点云的属性压缩;在解码端,首先在几何解码器中解码点云几何信息,然后将解码后的几何信息作为附加信息输入到属性解码器中,辅助点云的属性压缩。整个编解码器由预处理/后处理、几何编码/解码、属性编码/解码几部分组成。
示例性地,点云可通过各种类型的编码框架和解码框架分别进行编码和解码。作为示例,编解码框架可以是运动图像专家组(Moving Picture Experts Group,MPEG)提供的几何点云压缩(Geometry Point Cloud Compression,G-PCC)编解码框架或视频点云压缩(Video Point Cloud Compression,V-PCC)编解码框架,也可以是音视频编码标准(Audio Video Standard,AVS)专题组提供的AVS-PCC编解码框架或点云压缩参考平台(PCRM)框架。G-PCC编解码框架可用于针对第一静态点云和第三类动态获取点云进行压缩,V-PCC编解码框架可用于针对第二类动态点云进行压缩。G-PCC编解码框架也称为点云编解码器TMC13,V-PCC编解码框架也称为点云编解码器TMC2。G-PCC及AVS-PCC均可用于针对静态的稀疏型点云进行压缩,其编码框架大致相同。
下面以G-PCC框架和AVS PCC框架为例对本申请实施例可适用的编解码框架进行说明。
图4是本申请实施例提供的G-PCC编码框架的示意性框图。
如图4所示,在G-PCC编码框架中,先将输入点云进行切片(slice)划分后,然后对划分得到的切片进行独立编码。在切片中,点云的几何信息和点云中的点所对应的属性信息是分开进行编码的。
对于几何信息,G-PCC编码框架先对几何信息进行坐标转换,使点云全都包含在一个包围盒(bounding box)中;然后再进行量化,这一步量化主要起到缩放的作用,由于量化取整,使得一部分点的几何信息相同,根据参数来决定是否移除重复点,量化和移除重复点这一过程又被称为体素化。接下来,对包围盒进行基于八叉树(octree)的划分。其中根据八叉树划分层级深度的不同,几何信息的编码又分为基于八叉树的几何信息编码框架和基于三角面片集(triangle soup,trisoup)的几何信息编码框架。
在基于八叉树的几何信息编码框架中,先将包围盒划分为八等分,即8个子立方体,并记录子立方体的占位比特(1为非空,0为空),对非空的子立方体继续进行八等分,通常划分得到的叶子节点为1x1x1的单位立方体时停止划分。在这个过程中,利用节点与周围节点的空间相关性,对占位比特进行帧内(intra)预测,并基于预测结果选择相应的二进制算数编码器进行算数编码,以实现基于上下文模型的自适应二进制算术编码(Context-based Adaptive Binary Arithmetic Coding,CABAC)并生成二进制码流。
在基于三角面片集的几何信息编码框架中,同样也要先进行八叉树划分,但区别于基于八叉树的几何信息编码框架,基于三角面片集的几何信息编码框架不需要将点云逐级划分到边长为1x1x1的单位立方体,而是划分到块(block)边长为W时停止划分,基于每个块中点云的分布所形成的表面,得到该表面与块的十二条边所产生的至多十二个交点(vertex),然后依次编码每个块的交点的坐标并生成二进制码流。
G-PCC编码框架在完成几何信息编码后对几何信息进行重建,并使用重建的几何信息对点云的属性信息进行编码。点云的属性编码主要是对点云中点的颜色信息进行编码。首先,G-PCC编码框架可以对点的颜色信息进行颜色空间转换,例如,当输入点云中点的颜色信息使用RGB颜色空间表示时,G-PCC编码框架可以将颜色信息从RGB颜色空间转换到YUV颜色空间。然后,G-PCC编码框架利用重建的几何信息对点云进行重新着色,使得未编码的属性信息与重建的几何信息对应起来。在颜色信息编码中,主要有两种变换方法,一种方法是依赖于细节层(Level of Detail,LOD)划分的基于距离的提升变换,另一种方法是直接进行区域自适应分层变换(Region Adaptive Hierarchal Transform,RAHT),这两种方法都会将颜色信息从空间域变换到频域,得到高频系数和低频系数,最后对系数进行量化和编码,并生成二进制码流。
图5是本申请实施例提供的G-PCC解码框架的示意性框图。
如图5所示,G-PCC解码框架可以从G-PCC编码框架获取点云的码流,通过解析码得到点云中的点的位置信息和属性信息。其中点云的解码包括位置解码和属性解码。位置解码的过程包括:对几何码流进行算术解码;基于解码数据重构八叉树,进而对点的位置信息进行重建,以得到点的位置信息的重建信息;对点的位置信息的重建信息进行坐标变换,得到点的位置信息。点的位置信息也可称为点的几何信息。属性解码过程包括:通过解析属性码流,获取点云中点的属性信息的残差值;通过对点的属性信息的残差值进行反量化,得到反量化后的点的属性信息的残差值;基于位置解码过程中获取的点的位置信息的重建信息,选择三种预测模式的一种进行点云预测,得到点的属性重建值;对点的属性重建值进行颜色空间反变换,以得到解码点云。
G-PCC的通用测试条件可包括以下几个方面:
1)、测试条件,其包括以下4种:
条件1:几何位置无损、属性有损;
条件2:几何位置有损、属性有损;
条件3:几何位置无损、属性无损;
条件4:几何位置无损、属性有限度有损。
2)、通用测试序列,其包括Solid,Dense,Sparse,Scant,Am-fused,Am-frame共6类,其中Am-frame点云只包含反射率属性信息,Solid,Dense,Sparse,Scant点云只包含颜色属性信息,Am-fused点云可以同时包含颜色和反射率属性信息。
3)、技术路线:MPEG G-PCC的属性编码框架以属性压缩所采用的算法进行区分,其可以分为以下3种:
技术路线1:预测(Predicting,Pred)分支,仅针对条件3,条件4。
在编码端,利用预测分支的预测方法得到属性残差系数,对属性残差系数进行熵编码。
在解码端,熵解码得到属性残差系数,利用预测分支的预测方法还原原始值。
技术路线2:预测提升变换(Predicting lifting transform,PredLift)分支,仅针对条件1,条件2。
在编码端,利用预测提升变换分支的方法得到属性变换系数,对属性变换系数进行熵编码。
在解码端,熵解码得到属性变换系数,利用预测提升变换分支的方法还原原始值。
技术路线3:区域自适应分层变换(Region Adaptive Hierarchal Transform,RAHT)分支,仅针对条件1,条件2。
在编码端,利用RAHT分支的方法得到属性变换系数,对属性变换系数进行熵编码。
在解码端,熵解码得到属性变换系数,利用RAHT分支的方法还原原始值。
对于上述技术路线产生的属性残差系数(利用预测分支编码产生的属性残差系数)或者属性变换系数(利用预测提升变换分支或RAHT分支编码产生的属性变换系数),进行属性熵编解码。
图6是本申请实施例提供的AVS PCC编码框架的示意性框图。
如图6所示,在点云AVS PCC编码器框架中,点云的几何信息和每点所对应的属性信息是分开进行编码的。
在编码端的几何编码部分,首先,对原始几何信息进行预处理,即通过坐标平移将几何原点归一化到点云空间中的最小值位置,并通过坐标量化将几何信息从浮点数转化为整形,便于后续的规则化处理,由于量化取整使得一部分点的几何信息相同,此时需要决定是否移除重复点,移除重复点也属于预处理过程;然后,对规则化的几何信息进行几何编码,即采用八叉树结构对点云空间进行递归划分,每次将当前块划分成八个相同大小的子块,并判断每个子块的占有码字情况,当子块内不包含点时记为空,否则记为非空,在递归划分的最后一层记录所有块的占有码字信息,并进行编码;即通过八叉树结构表达的几何信息一方面输入到几何熵编码器中形成几何码流,另一方面用于对几何信息进行重建,并基于重建的几何信息来对属性信息进行编码。
在属性编码部分,首先,判断是否进行颜色空间的转换,如果处理的属性信息为颜色信息,还需要将原始颜色进行颜色空间变换,将其转变成更符合人眼视觉特性的YUV色彩空间;然后,在几何有损编码的情况下,由于几何信息在几何编码之后有所异动,因此需要为几何编码后的每一个点重新分配属性值,使得重建点云和原始点云的属性误差最小,这个过程叫做属性插值或属性重上色;接着,对预处理后属性信息进行属性编码,在属性编码过程中,首先需要将点云进行重排序,重排序的方式是莫顿码,因此属性编码的遍历顺序为莫顿顺序,然后基于莫顿顺序的单点预测,即按照莫顿顺序从当前待编码点向前回溯一个点,找到的点为当前待编码点的预测参考点,然后将预测参考点的属性重建值作为属性预测值,属性残差为当前待编码点的属性值与属性预测值之间的差值;最后对残差进行量化,将量化残差输入到属性熵编码器中形成属性码流。
图7是本申请实施例提供的AVS PCC解码框架的示意性框图。
如图7所示,在解码端,同样采用几何和属性分别解码的方式。在几何解码部分,首先对几何码流进行熵解码,得到每个点的几何信息,然后按照和几何编码相同的方式重构八叉树结构,结合解码几何重建出坐标变换后的、通过八叉树结构表达的几何信息,一方面将该信息进行坐标反量化和反平移,得到解码几何信息,另一方面将其作为附加信息输入到属性解码器中。在属性解码部分,按照与编码端相同的方式构建莫顿顺序,先对属性码流进行熵解码,得到量化后的残差信息;然后进行反量化,得到点云残差;类似的,按照与属性编码相同的方式,获得当前待解码点的属性预测值,然后将属性预测值与残差值相加,可以恢复出当前待解码点的YUV属性值;最后,经过颜色空间反变换得到解码后的属性信息。
AVS PCC的通用测试条件可包括以下几个方面:
1)、测试条件,其包括以下4种:
条件1:几何位置有限度有损、属性有损。
条件2:几何位置无损、属性有损。
条件3:几何位置无损、属性有限度有损。
条件4:几何位置无损、属性无损。
2)、通用测试序列,其包括Cat1A,Cat1B,Cat1C,Cat2-frame和Cat3共五类,其中Cat1A、Cat2-frame点云只包含反射率属性信息,Cat1B、Cat3点云只包含颜色属性信息,Cat1B点云包含颜色和反射率属性信息。
3)、技术路线:AVS PCC编码框架在对点云的属性信息进行压缩时,基于采用的算法进行区分可分为可以分为以下3种技术路线:
技术路线1:预测(Pred)分支。
对于技术路线1,其属性压缩采用基于帧内(intra)预测的方法。
在编码端,按照一定的顺序(点云原始采集顺序、莫顿顺序、希尔伯特顺序等)处理点云中的点,先采用预测算法得到属性预测值,根据属性值和属性预测值得到属性残差,然后对属性残差进行量化,生成量化残差,最后对量化残差进行编码;
在解码端,按照一定的顺序(点云原始采集顺序、莫顿顺序、希尔伯特顺序等)处理点云中的点,先采用预测算法得到属性预测值,然后解码获取量化残差,再对量化残差进行反量化,最后根据属性预测值和反量化后的残差,获得属性重建值。
技术路线2:预测变换(Predicting and transform,Predtrans)分支且资源受限。
对于技术路线2,其属性压缩采用基于帧内(intra)预测和DCT变换的方法,在编码或解码量化后的变换系数时,有最大点数X(如4096)的限制,即最多每X点为一组进行编码。
在编码端,按照一定的顺序(点云原始采集顺序、莫顿顺序、希尔伯特顺序等)处理点云中的点,先将整个点云分成长度最大为Y(如2)的若干小组,然后将这若干个小组组合成若干个大组(每个大组中的点数不超过X,如4096),然后采用预测算法得到属性预测值,根据属性值和属性预测值得到属性残差,以小组为单位对属性残差进行DCT变换, 生成变换系数,再对变换系数进行量化,生成量化后的变换系数,最后以大组为单位对量化后的变换系数进行编码。
在解码端,按照一定的顺序(点云原始采集顺序、莫顿顺序、希尔伯特顺序等)处理点云中的点,先将整个点云分成长度最大为Y(如2)的若干小组,然后将这若干个小组组合成若干个大组(每个大组中的点数不超过X,如4096),以大组为单位解码获取量化后的变换系数,然后采用预测算法得到属性预测值,再以小组为单位对量化后的变换系数进行反量化、反变换,最后根据属性预测值和反量化、反变换后的系数,获得属性重建值。
技术路线3:预测变换(Predicting and transform,Predtrans)分支且资源不受限。
对于技术路线3,其属性压缩采用基于帧内(intra)预测和DCT变换的方法,在编码或解码量化后的变换系数时,没有最大点数X的限制,即所有系数一起进行编码。
在编码端,按照一定的顺序(点云原始采集顺序、莫顿顺序、希尔伯特顺序等)处理点云中的点,先将整个点云分成长度最大为Y(如2)的若干小组,然后采用预测算法得到属性预测值,根据属性值和属性预测值得到属性残差,以小组为单位对属性残差进行DCT变换,生成变换系数,再对变换系数进行量化,生成量化后的变换系数,最后对整个点云的量化后的变换系数进行编码。
在解码端,按照一定的顺序(点云原始采集顺序、莫顿顺序、希尔伯特顺序等)处理点云中的点,先将整个点云分成长度最大为Y(如2)的若干小组,解码获取整个点云的量化后的变换系数,然后采用预测算法得到属性预测值,再以小组为单位对量化后的变换系数进行反量化、反变换,最后根据属性预测值和反量化、反变换后的系数,获得属性重建值。
技术路线4:多层变换(Trans)分支。
对于技术路线4,其属性压缩采用基于多层小波变换的方法。
在编码端,对整个点云进行多层小波变换,生成变换系数,然后对变换系数进行量化,生成量化后的变换系数,最后对整个点云的量化后的变换系数进行编码。
在解码端,解码获取整个点云的量化后的变换系数,然后对量化后的变换系数进行反量化、反变换,获得属性重建值。
基于上文内容可知,不管针对G-PCC框架还是AVS-PCC框架,对于点云的压缩来说,编码器需要压缩其位置信息和属性信息;具体而言,编码器先通过对点云的位置信息进行基于八叉树的编码;同时,编码器根据编码后的当前点的位置信息在已编码的点中选择出用于预测当前点的属性值的邻居点,并参考选择出的邻居点对当前点进行预测以得到当前点的属性预测值,接着基于当前点的属性预测值与当前点的属性原始值计算得到当前点的残差值,然后编码器对当前点的残差值进行量化等过程得到量化残差值,最终编码器将当前点的量化残差值以码流的形式传输到解码端;解码端通过接收并解析码流可得到当前点的量化残差值,并将量化残差值经过反变换与反量化等步骤得到当前点的残差值,解码端以相同过程预测得到属性预测值,与解析码流得到的残差值叠加后得到当前点的属性重建值。其中,当前待编码点的属性预测值(predictedvalue)也可称为属性信息的预测值或颜色预测值(predictedColor);当前待编码点的属性值也可称为当前点的属性系数的真实值或颜色原始值。当前待编码点的残差值也可称为当前待编码点的属性值与当前点的属性预测值的差值或,其也可称为当前点的颜色残差值(residualColor);当前待编码点的属性重建值(reconstructedvalue)也可称为当前待编码点的属性的重建值或颜色重建值(reconstructedColor)。
为便于理解本申请的技术方案,下面对编码器和解码器进行算数编码的相关内容进行说明。
对于G-PCC框架,编码器在获取量化残差值(或量化后变换系数)后,可通过以下方式对量化残差值(或量化后变换系数)进行算术编码,并得到属性码流:
对于输入编码器的量化残差值(或量化后变换系数)的绝对值或者绝对值减1的数值,记作value,进行编码,具体编码为:
首先编码第一个标志位代表value是否大于0,如果否,结束编码,如果是,则继续;
取value=value-1;
继续编码第二个标志位代表value是否大于0,如果否,结束编码,如果是,则继续;
取value=value-1;
采用K阶指数哥伦布编码value。
K阶指数哥伦布编码主要的编码格式为[前缀0][1][bit信息]的结构。编码步骤如下:
(1)、将待编码的数据以二进制的形式表示,去掉最低位的k个比特,然后加1,得到新的值T1;
(2)、将第一步中去掉最低k个比特位后剩余的比特位数减1,得到T2,即前缀0的个数;
(3)、在T1前增加前缀0并在T1后补上第一步中去掉的最低k个比特位,以完成编码。
举例来说,假设对7进行1阶指数哥伦布编码,则k=1。首先,计算前缀0的个数:7的二进制表示为111,去掉最低位的1个比特为11,然后加1,得T1=100;T1包含3个比特,T2=3-1=2,所以前缀0的个数为2;在T1=100前增加两个前缀0,并补上去掉的1个比特位,得到001001,即,最终的编码结果为001001。
相应的,解码端可以按照以下方式对属性码流进行解码,得到量化残差值(或量化后变换系数):
首先,解码第一个标志位代表value是否大于0,如果否,结束解码,如果是,则继续;
继续解码第二个标志位代表value-1是否大于0,如果否,结束编码,如果是,则继续;
采用K阶指数哥伦布解码value;
最终,value=value+2。
值得注意的是,对于AVS-PCC框架,编码器在获取量化残差值(或量化后变换系数)后,类似G-PCC框架编码value的方式,可以对量化残差值(或量化后变换系数)进行算术编码,并得到属性比特流:区别在于编码器可以对value引入除以2的操作,即对value/2(包括商和余数)进行编码。但是,不管针对G-PCC框架还是AVS-PCC框架,如何提升其属性信息的解码性能仍是本领域亟需解决的技术问题。有鉴于此,本申请实施例提供了一种解码方法、编码方法、解码器以及编码器,能够提升编解码性能。
图8是本申请实施例提供的解码方法100的示意性流程图。应理解,该解码方法100可由解码器或解码框架执行。 例如应用于图5或图7所示的解码框架。为便于描述,下面以解码器为例对该解码方法100进行示例性说明。
如图8所示,该解码方法100可包括:
S110,解码器获取当前点的第一参数和第二参数。
示例性地,该第一参数和该第二参数可以是解码器基于码流得到数值,例如该第一参数和该第二参数可以是解码器基于对码流进行解码得到数值。该码流可以是当前点云的码流,该当前点云中的点包括该当前点。
示例性地,该第一参数可以是十进制数。
当然,在其他可替代实施例中,该第一参数也可以是多位二进制数,本申请实施例对此不作具体限定。
示例性地,该第二参数可以是P位二进制数。P位二进制数指长度为P的二进制串。
举例来说,假设P为2,则该第二参数可以是:00、10、01、11。
示例性地,该第二参数可以是P个二进制数。P个二进制数指P个长度为1的二进制数。
举例来说,假设P为2,则该第二参数可以是:(0,0)、(1,0)、(0,1)、(1,1)。
当然,在其他可替代实施例中,该第二参数也可以等同替换为十进制数值,本申请实施例对此不作具体限定。
S120,该解码器基于该第一参数和该第二参数,确定该当前点的属性系数。
示例性地,该第一参数小于该当前点的属性系数。
示例性地,该第二参数小于该当前点的属性系数。
示例性地,编码器可以基于当前点的属性系数确定第一参数和第二参数,并对该第一参数和第二参数进行编码并得到码流。相应的,解码器可以基于该码流获取该第一参数和该第二参数,并基于该第一参数和该第二参数,确定该当前点的属性系数。例如,解码器可按照预定义的计算方式基于该第一参数和该第二参数确定该当前点的属性系数。
示例性地,该当前点的属性系数可以是该当前点的属性残差系数或属性残差系数的绝对值,也可以是该当前点的属性变换系数或当前点的属性变换系数的绝对值。换言之,解码器可基于该第一参数和该第二参数得到该当前点的属性残差系数或属性残差系数的绝对值或该当前点的属性变换系数或当前点的属性变换系数的绝对值。
示例性地,该当前点的属性系数可以是基于上文的G-PCC描述的任意一种技术路线中涉及的属性残差系数或属性残差系数的绝对值或属性变换系数或属性残差系数的绝对值,也可以是基于上文的AVS PCC描述的任意一种技术路线中涉及的属性残差系数或属性残差系数的绝对值或属性变换系数或属性残差系数的绝对值。
本实施例中,解码器通过获取当前点的第一参数和第二参数,并基于该第一参数和该第二参数,确定该当前点的属性系数;能够减小编码码字,进而能够提升编解码性能。
下面结合表2对本申请提供的方案进行测试得到的结果进行说明。
其中,端到端属性率失真(End-to-End Bit distortion,End-to-End BD-rate)为衡量算法性能或编码性能的指标,表示本申请提供的编码算法相对于原来的编码算法在码率和PSNR上的变化情况,整体为负值说明性能变好。比特率是指点云编码后的码流的大小与输入点云中点的数量之间的比值,比特率变小说明码字(或者码流)的长度变小,即能够提升点云的压缩性能。端到端属性Hausdorff率失真是在属性有限度有损条件下独有的评判性能的标准,其表示属性值之间的最大差异,也是整体数值为负数时表示新算法性能变好。进一步的,L、Cb和Cr(也叫称为Y,U,V)表示点云颜色属性信息的亮度分量和色度分量。
表1
如表1所示,在几何位置无损且属性有损的测试条件下,Solid序列,Dense序列,Sparse序列,Scant序列以及Am-fused序列的端到端属性率失真在各个分量上均有性能提升;各个序列的端到端属性率失真的平均值在L、Cb和Cr上的性能提升了0.2,此外,还能够降低解码时间;即,本申请提供的方案能够提升编码性能和解码性能。
表2
如表2所示,在几何位置有损且属性有损的测试条件下,Solid序列,Dense序列,Sparse序列,Scant序列以及Am-fused序列的端到端属性率失真在各个分量上均有性能提升;各个序列的端到端属性率失真的平均值在L、Cb和Cr上的性能提升了0.1,此外,还能够降低编码时间;即,本申请提供的方案能够提升编码性能和解码性能。
表3
如表3所示,在几何位置无损且属性无损的测试条件下,Solid序列,Dense序列,Sparse序列,Scant序列、Am-fused序列以及Am-frame序列的比特率在颜色属性、反射率属性以及全部属性信息上均有性能提升;各个序列的比特率的平均值在颜色属性、反射率属性以及全部属性信息上的性能分别提升了0.9、0.4、0.4,此外,还能够降低编码时间和解码时间;即,本申请提供的方案能够提升编码性能和解码性能。
表4
如表4所示,在几何位置无损且属性有限度有损的测试条件下,Solid序列,Dense序列,Sparse序列,Scant序列以及Am-fused序列的端到端属性Hausdorff率失真在各个分量上均有性能提升;各个序列的端到端属性Hausdorff率失真的平均值在L、Cb和Cr上的性能提升了0.1,此外,还能够降低编码时间和解码时间;即,本申请提供的方案能够提升编码性能和解码性能。
在一些实施例中,该S120可包括:
将该第一参数比特左移P位得到第一中间值;P为正整数;
基于该第一中间值和该第二参数,确定第二中间值;
基于该第二中间值,确定该当前点的属性系数。
示例性地,该第一参数可以是多位二进制数,也可以是十进制数值。若该第一参数为十进制,则解码器可以先将该第一参数转换为多位二进制数,然后对转换得到的多位二进制数进行比特左移P位以得到第一中间值,若该第一参数为多位二进制数,则解码器可以直接对该第一参数进行比特左移P位以得到第一中间值。
示例性地,P的取值可以是预定义的数值,也可以是通过对码流解码得到的数值,还可以是解码器和编码器协商确定的数值,本申请对此不作具体限定。
值得注意的是,本申请涉及的术语预定义可以通过在设备(例如,包括解码器)中预先保存相应的代码、表格或其他可用于指示相关信息的方式来实现,本申请对于其具体的实现方式不做限定。比如预定义可以是指协议中定义的。还应理解,本申请实施例中,所述"协议"可以指编解码领域的标准协议,例如可以包括图像编解码领域、视频编解码领域、硬件视频编解码领域、专用电路视频编解码领域以及实时视频编解码领域以及应用于未来的编解码系统中的相关协议,本申请对此不做限定。
在一些实施例中,该第二参数为P位二进制数。
示例性地,解码器可以默认该第二参数为P位二进制数,即解码器默认该第二参数为长度为P的二进制串。
在一些实施例中,解码器将该第一中间值和该P位二进制数相加,得到该第二中间值。
示例性地,解码器默认该第二参数为P位二进制数时,将该第一中间值和该P位二进制数相加,得到该第二中间值。
在一些实施例中,该第二参数为P个二进制数。
示例性地,解码器可以默认该第二参数为P个二进制数,即解码器默认该第二参数为P个长度为1的二进制数。
在一些实施例中,解码器基于该P个二进制数的解码顺序,确定该P个二进制数中各个二进制数的移位位数;然后基于该各个二进制的移位位数对该各个二进制数进行左移,得到P个第三参数;接着对该第一中间值和该P个第三参数求和,得到该第二中间值。
示例性地,该各个二进制数的移位位数和该各个二进制数的在该解码顺序中的序号正相关。例如,按照该解码顺序 该P个二进制数中的第i个二进制数的移位位数与i的取值正相关;即,i的取值越小时,该第i个二进制数的移位位数越小;或者说,i的取值越大时,该第i个二进制数的移位位数也越大。
示例性地,该各个二进制数的移位位数和该各个二进制数的在该解码顺序中的序号负相关。例如,按照该解码顺序该P个二进制数中的第i个二进制数的移位位数与i的取值负相关;即,i的取值越小时,该第i个二进制数的移位位数越大;或者说,i的取值越大时,该第i个二进制数的移位位数也越小。
在一些实施例中,解码器将i-1,确定为该P个二进制数中的第i个二进制数的移位位数;i为正整数。
示例性地,解码器将i-1,确定为该P个二进制数中按照该P个二进制数的解码顺序位于第i个位置的二进制数的移位位数。换言之,解码器按照该P个二进制数的解码顺序,将该P个二进制数中的第i个二进制数的移位位数赋值为i-1。或者说,对于该P个二进制数,解码器先解码的二进制数,其移位位数越小;反之,解码器后解码的二进制数,其移位位数越大。
示例性地,解码器可按照以下方式基于该第一中间值和该第二参数确定该第二中间值:
将该P个二进制数中的第i个二进制数比特左移i-1,得到该P个第三参数;然后对该第一中间值和该P个第三参数求和,得到该第二中间值。换言之,解码器可按照以下公式,基于该第一参数和该第二参数确定该第二中间值:
mid
2=(V
1<<P)+(W
1<<0)+(W
2<<1)+…+(W
P<<P-1)。
其中,mid
2表示该第二中间值,V
1表示该第一参数,V
1<<P表示该第一中间值,W
1表示按照该P个二进制数的解码顺序位于第1个位置、且移位位数为0的二进制数,W
2表示按照该P个二进制数的解码顺序位于第2个位置、且移位位数为1的二进制数,以此类推,W
P表示按照该P个二进制数的解码顺序位于第P个位置、且移位位数为P-1的二进制数。
示例性地,如果该第一参数为4,则解码器可以先将4转换为二进制串,即100;进一步的,假设该第二参数为(0,0)(即P=2),则解码器先对100比特左移两位得到10000,解码器将该第二参数(0,0)中的第1个二进制数比特左移0位,得到0;解码器将该第二参数(0,0)中的第2个二进制数比特左移1位,得到00;然后计算10000+0+00=10000=16,得到该第二中间值,即该第二中间值转换为十进制数为16。
当然,在其他可替代实施例中,i的初始值也可以为0,此时解码器可以将i确定为该P个二进制数中的第i个二进制数的移位位数。
在一些实施例中,解码器将P-i,确定为该P个二进制数中的第i个二进制数的移位位数;i为正整数。
示例性地,解码器将P-i,确定为该P个二进制数中按照该P个二进制数的解码顺序位于第i个位置的二进制数的移位位数。换言之,解码器按照该P个二进制数的解码顺序,将该P个二进制数中的第i个二进制数的移位位数赋值为P-i。或者说,对于该P个二进制数,解码器先解码的二进制数,其移位位数越大;反之,解码器后解码的二进制数,其移位位数越小。
示例性地,解码器可按照以下方式基于该第一中间值和该第二参数确定该第二中间值:
将该P个二进制数中的第i个二进制数比特左移P-i,得到该P个第三参数;然后对该第一中间值和该P个第三参数求和,得到该第二中间值。换言之,解码器可按照以下公式,基于该第一参数和该第二参数确定该第二中间值:
mid
2=(V
1<<P)+(W
1<<P-1)+(W
2<<P-2)+…+(W
P<<0)。
其中,mid
2表示该第二中间值,V
1表示该第一参数,V
1<<P表示该第一中间值,W
1表示按照该P个二进制数的解码顺序位于第1个位置、且移位位数为P-1的二进制数,W
2表示按照该P个二进制数的解码顺序位于第2个位置、且移位位数为P-2的二进制数,以此类推,W
P表示按照该P个二进制数的解码顺序位于第P个位置、且移位位数为0的二进制数。
示例性地,如果该第一参数为4,则解码器可以先将4转换为二进制串,即100;进一步的,假设该第二参数为(0,0)(即P=2),则解码器先对100比特左移两位得到10000,解码器将该第二参数(0,0)中的第1个二进制数比特左移1位,得到00;解码器将该第二参数(0,0)中的第2个二进制数比特左移0位,得到0;然后计算10000+00+0=10000=16,得到该第二中间值,即该第二中间值转换为十进制数为16。
当然,在其他可替代实施例中,i的初始值也可以为0,此时解码器可以将P-i-1确定为该P个二进制数中的第i个二进制数的移位位数。
在一些实施例中,解码器将该第二中间值与O进行相加,得到该当前点的属性系数;O为正整数。
示例性地,解码器将该第一参数比特左移P位得到第一中间值;然后基于该第一中间值和该第二参数,确定第二中间值;并将该第二中间值与O进行相加,得到该当前点的属性系数。例如,解码器默认将该第二中间值与O进行相加,得到该当前点的属性系数。
示例性地,O的取值可以是预定义的取值,也可以是通过码流指示的取值,还可以是编码器和解码器通过协商确定的取值,本申请对此不作具体限定。
示例性地,该当前点的属性系数为大于或等于O的数值。
在一些实施例中,解码器将该第二中间值,确定为该当前点的属性系数。
示例性地,解码器将该第一参数比特左移P位得到第一中间值;然后基于该第一中间值和该第二参数,确定第二中间值;并将该第二中间值,确定为该当前点的属性系数。例如,解码器默认将该第二中间值,确定为该当前点的属性系数。
当然,在其他可替代实施例中,若该第二参数等同替换为十进制数值,则解码端可以对该第一中间值和该十进制数值直接进行求和,得到该第二中间值。
在一些实施例中,该S110可包括:
利用第一熵解码算法确定该第一参数。
在一些实施例中,该第一熵解码算法为哥伦布解码算法。
当然,在其他可替代实施例中,该第一熵解码算法也可以为其他任意一种能够对二进制串进行解码的熵解码算法,本申请对此不作具体限定。例如,该第一熵解码算法还可以是一元解码算法、截断一元解码算法、定长解码算法、变长 解码算法、基于查表的方式进行熵解码的解码算法、或多种熵解码算法联合解码的熵解码算法等。
其中,该一元解码算法为用于对一元编码算法的编码结果进行解码的熵解码算法。其中,一元编码算法的编码规则是:对于待编码的符号“x”>=0,一元编码将其编码为x个“1”再加一个“0”。举例来说,假设x=5,则经由一元编码后,编码为“111110”。截断一元解码算法是用于对截断一元编码算法的编码解码进行解码的熵解码算法。其中,截断一元编码算法属于一元编码算法的变体,用在已知待编码的语法元素的最大值Max的情况下。假设待编码符号为x:如果0<x<Max,x二值化采用一元码的方式;如果x=Max,x二值化的二进制串全部由1组成,长度为Max。举例来说,假设Max=6,则对符号“6”进行编码时,结果为“111111”,对符号“3”进行编码时,按一元码的编码方式,结果为“1110”。
在一些实施例中,该S110可包括:
利用固定的上下文确定该第二参数。
示例性地,解码器对该第二参数中的各个二进制数进行解码时,选择的上下文索引值(用于标识上下文模型)为固定的上下文索引值;或者说,解码器对该第二参数中的各个二进制数进行解码时,选择的上下文模型为固定的上下文模型。例如,该第二参数中各个二进制数的熵解码算法为CABAC解码算法,此时,CABAC解码算法采用的上下文为固定的上下文。该固定的上下文可以是预定义的上下文,也可以是通过码流指示的上下文,还可以是编码器和解码器通过协商确定的上下文,甚至于,该固定的上下文还可以是用户设置的上下文,本申请对此不作具体限定。
在一些实施例中,该S110可包括:
不使用上下文确定该第二参数。
示例性地,解码器对该第二参数中的各个二进制数进行解码时,不需要确定上下文索引值(用于标识上下文模型),也不需要选择上下文模型。例如,该第二参数中各个二进制数的熵解码算法为二进制算术解码算法。
在一些实施例中,该S110可包括:
利用自适应上下文确定该第二参数。
示例性地,解码器对该第二参数中的各个二进制数进行解码时,选择的上下文索引值(用于标识上下文模型)为与该当前二进制数的先验信息适应的上下文索引值;或者说,解码器对该第二参数中的各个二进制数进行解码时,选择的上下文模型为与该当前二进制数的先验信息适应的上下文模型。例如,该第二参数中各个二进制数的熵解码算法为CABAC解码算法,此时,CABAC解码算法采用的上下文模型为与该当前二进制数的先验信息适应的上下文。
其中,该当前二进制数先验信息可以包括与该当前二进制数相关的任意一种解码器已经解码或已经确定的信息。
在一些实施例中,解码器可按照以下方式利用自适应上下文确定该第二参数:
确定第一索引值;
基于该第一索引值指示的上下文,确定该第二参数中当前二进制数。
示例性地,该第一索引值可以为固定的索引值。该固定的索引值可以是预定义的索引值,也可以是通过码流指示的索引值,还可以是编码器和解码器通过协商确定的索引值,甚至于,该固定的索引值还可以是用户设置的索引值,本申请对此不作具体限定。
示例性地,该第一索引值为解码器确定的与该当前二进制数的先验信息适应的上下文索引值(用于标识上下文模型)。
示例性地,解码器基于该第一索引值指示的上下文,利用CABAC解码算法确定该当前二进制数。
在一些实施例中,解码器可将固定的索引值,确定为该第一索引值。
示例性地,在解码器无法获取当前二进制数的先验信息的情况下,解码器可将固定的索引值,确定为该第一索引值。
在一些实施例中,若该当前二进制数为该第二参数中的第一个二进制数,则将该固定的索引值确定为该第一索引值。
示例性地,若该当前二进制数的先验信息为当前分量的已确定的二进制数,在该当前二进制数为该第二参数中的第一个二进制数时,说明解码器无法获取当前二进制数的先验信息,此时,解码器可将固定的索引值,确定为该第一索引值。
当然,在其他可替代实施例中,若该当前二进制数所属的分量为当前点的第一个分量,则将该固定的索引值确定为该第一索引值。
示例性地,若该当前二进制数的先验信息为已解码属性分量,在该当前二进制数所属的分量为当前点的第一个分量时,说明解码器无法获取当前二进制数的先验信息,此时,解码器可将固定的索引值,确定为该第一索引值。
在一些实施例中,解码器可基于该当前二进制数的先验信息,确定第一索引值。
示例性地,在解码器能够获取当前二进制数的先验信息的情况下,解码器可基于该当前二进制数的先验信息,确定第一索引值。
在一些实施例中,该先验信息包括以下中的至少一项:
已解码点的属性系数、已解码点采用的上下文索引值、该当前点的已解码属性分量的取值、该已解码属性分量采用的上下文索引值、该第二参数中已确定的二进制数。
示例性地,该第一索引值可以为解码器确定的与该已解码点的属性系数适应的、用于对该当前二进制数进行解码的上下文索引值;和/或,该第一索引值可以为解码器确定的与已解码点采用的上下文索引值适应的、用于对该当前二进制数进行解码的上下文索引值;和/或,该第一索引值可以为解码器确定的与该当前点的已解码属性分量的取值适用的、用于对该当前二进制数进行解码的上下文索引值;和/或,该第一索引值可以为解码器确定的与已解码属性分量采用的上下文索引值适用的、用于对该当前二进制数进行解码的上下文索引值;和/或,该第一索引值可以为解码器确定的与该第二参数中已确定的二进制数适用的、用于对该当前二进制数进行解码的上下文索引值。
换言之,该先验信息可以是与已解码点相关的信息,还可以是与已解码属性分量相关的信息,还可以是与已确定二进制数相关的信息。
以该先验信息包括该第二参数中已确定的二进制数为例,如果该当前二进制数为该第二参数中的第一个二进制数,则说明对于当前分量而言,其不存在已确定的二进制数,因此,解码器无法确定出与已确定的二进制数适应的上下文索 引值,此时,解码器可以将该固定的索引值确定为该第一索引值;如果该当前二进制数不为该第二参数中的第一个二进制数,则说明对于当前分量而言,其存在已确定的二进制数,此时,解码器可以将与该第二参数中已确定的二进制数适用的上下文索引值,确定为该第一索引值,进而基于该第一索引值对该当前二进制数进行解码。
在一些实施例中,若该当前点的属性系数为该当前点的第一个属性分量,则该先验信息包括以下中的至少一项:已解码点的属性系数、已解码点采用的上下文索引值、该第二参数中已确定的二进制数。
示例性地,若该当前点的属性系数为该当前点的第一个属性分量,且该当前二进制数为该第二参数中的第一个二进制数,则解码器可以基于以下中的至少一项确定该第一索引值:已解码点的属性系数、已解码点采用的上下文索引值。
示例性地,若该当前点的属性系数为该当前点的第一个属性分量,且该当前二进制数不是该第二参数中的第一个二进制数,则解码器可以基于以下中的至少一项确定该第一索引值:已解码点的属性系数、已解码点采用的上下文索引值、该第二参数中已确定的二进制数。
在一些实施例中,若该当前点的属性系数不是该当前点的第一个属性分量,则该先验信息包括以下中的至少一项:该当前点的已解码属性分量的取值、该已解码属性分量采用的上下文索引值、该第二参数中已确定的二进制数。
示例性地,若该当前点的属性系数不是该当前点的第一个属性分量,且该当前二进制数为该第二参数中的第一个二进制数,则解码器可以基于以下中的至少一项确定该第一索引值:该当前点的已解码属性分量的取值、该已解码属性分量采用的上下文索引值。
示例性地,若该当前点的属性系数不是该当前点的第一个属性分量,且该当前二进制数不是该第二参数中的第一个二进制数,则解码器可以基于以下中的至少一项确定该第一索引值:该当前点的已解码属性分量的取值、该已解码属性分量采用的上下文索引值、该第二参数中已确定的二进制数。
当然,在其他可替代实施例中,即便该当前点的属性系数不是该当前点的第一个属性分量,则该先验信息也可以包括以下中的至少一项:已解码点的属性系数、已解码点采用的上下文索引值,本申请对此不作具体限定。
例如,若该当前点的属性系数不是该当前点的第一个属性分量,则解码器可基于以下中的至少一项确定该第一索引值:该当前点的已解码属性分量的取值、该已解码属性分量采用的上下文索引值、该第二参数中已确定的二进制数。若该当前点的属性系数不是该当前点的第一个属性分量,解码器可基于以下中的至少一项确定该第一索引值:已解码点的属性系数、已解码点采用的上下文索引值、该当前点的已解码属性分量的取值、该已解码属性分量采用的上下文索引值、该第二参数中已确定的二进制数。
在一些实施例中,该先验信息包括该第二参数中已确定的至少一个二进制数。
示例性地,该解码器可以基于至少一个二进制数,确定该第一索引值。
示例性地,该至少一个二进制数可以是该第二参数中已确定的全部二进制数,也可以是该第二参数中已确定的部分二进制数。该部分二进制数可以是该第二参数中已确定的第一个二进制数或最后一个二进制数,当然,也可以是其他位置上的一个或多个二进制数,本申请对此不作具体限定。
在一些实施例中,该第一索引值为基于该至少一个二进制数确定的一维索引值。
例如,该至少一个二进制数为单个二进制数时,该解码器可以将单个二进制数作为该第一索引值。再如,该至少一个二进制数为多个二进制数时,该解码器可以以该多个二进制数为输入,利用固定的计算函数输出该第一索引值。
举例来说,若该第二参数中的第一个二进制数采用的上下文索引值为固定的上下文索引值,且该第二参数中的第二个二进制数采用的上下文索引值为基于该第一个二进制数确定上下文索引值,此时,该第一个二进制数采用的上下文索引值和第二个二进制数采用的上下文索引值通过以下语法元素实现:
其中,对于该第二参数中的第一个二进制数,其第一索引值(即paritymodel1)为固定的索引值(即为1),对于该第二参数中的第二个二进制数,其第一索引值(即paritymodel2[a1])为基于第一个二进制数确定的上下文索引值(即a1)。
当然,上述语法元素仅为本申请的示例,不应理解为对本申请的限制。
在一些实施例中,该先验信息除了包括该至少一个二进制数之外,还可以包括该当前点的已解码属性分量的取值。
示例性地,该解码器可以基于至少一个二进制数和已解码属性分量的取值,确定该当前二进制数采用的第一索引值。
在一些实施例中,该第一索引值为二维索引值,该已解码属性分量的取值用于:确定该第一索引值在一个维度上的取值,该至少一个二进制数用于:确定该第一索引值在另一个维度上的取值。
示例性地,解码器可基于该已解码属性分量的取值,确定该第一索引值在一个维度上的取值,并基于该至少一个二进制数确定该第一索引值在另一个维度上的取值。例如,该解码器可以将该已解码属性分量的取值确定为该第一索引值在一个维度上的取值,或者,该解码器可以基于预设规则基于该已解码属性分量的取值将该第一索引值在一个维度上的取值确定为0或者1。例如,该至少一个二进制数为单个二进制数时,该解码器可以将单个二进制数作为该另一个维度上的取值。再如,该至少一个二进制数为多个二进制数时,该解码器可以以该多个二进制数为输入,利用固定的计算函数输出该另一个维度上的取值。
举例来说,若该第二参数中的第一个二进制数采用的上下文索引值为基于第一个属性分量的取值确定的一维索引值,且该第二参数中的第二个二进制数采用的上下文索引值为基于第一个属性分量的取值和该第一个二进制数确定上下文索引值确定的二维索引值;例如,该第一个属性分量的取值用于:确定该第二个二进制数采用的上下文索引值在一个维度上的取值,该至少一个二进制数用于:确定该第二个二进制数采用的上下文索引值在另一个维度上的取值。这种情况下,该第一个二进制数采用的上下文索引值和第二个二进制数采用的上下文索引值通过以下语法元素实现:
其中,对于该第二参数中的第一个二进制数,其第一索引值(即paritymodel1[k1]))为基于该已解码属性分量的取值确定的数值(即为k1),对于该第二参数中的第二个二进制数,其第一索引值(即paritymodel2[k1][a1])为基于该已解码属性分量的取值和该至少一个二进制数确定的二维索引值,其中,k1为基于该已解码属性分量的取值在一个维度上确定的取值,a1为基于该至少一个二进制数在另一个维度上确定的取值。
进一步的,基于该已解码属性分量的取值在一个维度上确定的取值(即k1)可通过以下语法元素实现:
value[1]=decodeSymbol(0,0,k3);
int b0=value[1]==0;
int b1=value[1]<=1;
value[2]=decodeSymbol(1+b0,1+b1,k3);
int b2=value[2]==0;
int b3=value[2]<=1;
value[0]=decodeSymbol(3+(b0<<1)+b2,3+(b1<<1)+b3,k3)。
其中,value[1]采用的上下文索引值为(0,0),value[2]采用的上下文索引值为(1+b0,1+b1),value[0]采用的上下文索引值为(3+(b0<<1)+b2,3+(b1<<1)+b3)。由此可见,当前点的第一个属性分量采用固定的上下文索引值,当前点的第二个属性分量采用的上下文索引值为与当前点的第一个属性分量自适应的上下文索引值,当前点的第三个属性分量采用的上下文索引值为与当前点的第一个属性分量和当前点的第二个属性分量适应的上下文索引值。进一步的,k1和k2均为基于该已解码的第一个属性分量的取值确定的上下文索引值。例如,k1=1+b0,k2=1+b1。由此可见,第二个属性分量的第二参数采用的上下文索引值可以是与第一个属性分量的取值适应的上下文索引值。
当然,上述语法元素仅为本申请的示例,不应理解为对本申请的限制。
例如,在其他可替代实施例中,对于第二个属性分量来说,解码器基于第一个属性分量的取值确定的数值也可以是k2,即对于第二个属性分量的第二参数中的第二个二进制数,其采用的上下文索引值也可以表示为paritymodel2[k2][a1]));甚至于,解码器基于该已解码属性分量的取值在一个维度上确定的取值也可以是:基于k1和k2确定的数值,本申请对此不作具体限定。
在一些实施例中,该S110可包括:
确定该当前点的属性系数是否为0~M中的数值;M为正整数;
若该当前点的属性系数不为0~M中的数值,则获取该第一参数和该第二参数。
示例性地,若该当前点的属性系数为0~M中的数值,则解码器可以将0~M中的数值确定为该当前点的属性系数;解码器可以直接将0~M中的数值确定为该当前点的属性系数,也可以根据M+1个标志位的指示将0~M中的数值确定为该当前点的属性系数,本公开对此不做限制。若该当前点的属性系数不为0~M中的数值,则解码器需要进一步获取该第一参数和该第二参数,并基于该第一参数和该第二参数确定该当前点的属性系数。
示例性地,M的取值可以是1,2.3或4等数值,也可以是大于4的其他数值,本申请实施例对此不作具体限定。
在一些实施例中,解码器确定M+1个标志位中的第i个标志位;该第i个标志位的取值指示该当前点的属性系数是否等于i-1,该M+1个标志位中的前i-1个标志位的取值指示该当前点的属性系数不等于0至i-2中的数值。
在一些实施例中,M+1个标志位中的第i个标志位为第一值指示当前点的属性系数不等于i-1,M+1个标志位中的第i个标志位为第二值指示当前点的属性系数等于i-1,当标志位不存在时可以推断标志位的值为第一值。第一值可以为0,第二值可以为1;或者,第一值可以为1,第二值可以为0。
示例性地,解码器依次解码该M+1个标志位,若该M+1个标志位中的第i个标志位的取值指示该当前点的属性系数等于i-1,则解码器将i-1确定为该当前点的属性系数并结束对剩余标志位的解码;若该M+1个标志位中的第i个标志位的取值指示该当前点的属性系数不等于i-1,则解码器继续解码该第i+1个标志位,若该第i+1个标志位的取值指示该当前点的属性系数等于i,则解码器将i确定为该当前点的属性系数并结束对剩余标志位的解码;若该第i个标志位的取值指示该当前点的属性系数不等于i-1,则解码器继续解码i+2,以此类推,直至解码的标志位指示该当前点的属性系数为0~M中的数值时,确定该当前点的属性系数并结束对剩余标志位的解码,或者,直至解码完该M+1个标志位中的最后一个标志位,且最后一个标志位指示该当前点的属性系数不等于M时,解码器需要进一步获取该第一参数和该第二参数,并基于该第一参数和该第二参数确定该当前点的属性系数。
在一些实施例中,解码器可利用固定的上下文、不使用上下文或自适应的上下文,确定第i个标志位。
示例性地,解码器对该第i个标志位进行解码时,选择的上下文索引值(用于标识上下文模型)为固定的上下文索引值;或者说,解码器对第i个标志位进行解码时,选择的上下文模型为固定的上下文模型。例如,该第i个标志位的熵解码算法为CABAC解码算法,此时,CABAC解码算法采用的上下文为固定的上下文。该固定的上下文可以是预定义的上下文,也可以是通过码流指示的上下文,还可以是编码器和解码器通过协商确定的上下文,甚至于,该固定的上下文还可以是用户设置的上下文,本申请对此不作具体限定。
示例性地,解码器对该第i个标志位进行解码时,不需要确定上下文索引值(用于标识上下文模型),也不需要选择上下文模型。例如,该第i个标志位的熵解码算法为二进制算术解码算法。
示例性地,解码器对该第i个标志位进行解码时,选择的上下文索引值(用于标识上下文模型)为与该第i个标志位的先验信息适应的上下文索引值;或者说,解码器对该第i个标志位进行解码时,选择的上下文模型为与该第i个标 志位的先验信息适应的上下文模型。例如,该第i个标志位的熵解码算法为CABAC解码算法,此时,CABAC解码算法采用的上下文模型为与该第i个标志位的先验信息适应的上下文。其中,该第i个标志位的先验信息可以包括与该第i个标志位相关的任意一种解码器已经解码或已经确定的信息。例如,该第i个标志位的先验信息包括但不限于:已解码点的属性系数、已解码点采用的上下文索引值、该当前点的已解码属性分量的取值、该已解码属性分量采用的上下文索引值。
示例性地,若该当前点的属性系数为该当前点的第一个属性分量,则该第i个标志位的先验信息包括以下中的至少一项:已解码点的属性系数、已解码点采用的上下文索引值。若该当前点的属性系数不是该当前点的第一个属性分量,则该第i个标志位的先验信息包括以下中的至少一项:该当前点的已解码属性分量的取值、该已解码属性分量采用的上下文索引值。
举例来说,假设M=3,若当前点的第二个属性分量对应的4个标志位所采用的上下文索引值为基于当前点的第一个属性分量的取值确定的上下文索引值,则该4个标志位所采用的上下文索引值可通过以下语法元素实现:
其中,该4个标志位中的第一个标志位采用的上下文索引值为:由0和基于第一个属性分量的取值确定的数值(即k1)形成的二维索引值(即ctxCoeffGtN[0][k1]),该4个标志位中的第二个标志位采用的上下文索引值为:由1和基于第一个属性分量的取值确定的数值(即k2)形成的二维索引值(即ctxCoeffGtN[1][k2]),该4个标志位中的第三个标志位采用的上下文索引值为:由2和基于第一个属性分量的取值确定的数值(即k1)形成的二维索引值(即ctxCoeffGtN[2][k1]),该4个标志位中的第四个标志位采用的上下文索引值为:由3和基于第一个属性分量的取值确定的数值(即k2)形成的二维索引值(即ctxCoeffGtN[3][k2])。
进一步的,基于该已解码属性分量的取值在一个维度上确定的取值(即k1或k2)可通过以下各个示例的语法元素实现:
示例1:
value[1]=decodeSymbol(0,0,k3);
int b0=value[1]==0;
int b1=value[1]<=1;
value[2]=decodeSymbol(1+b0,1+b1,k3);
int b2=value[2]==0;
int b3=value[2]<=1;
value[0]=decodeSymbol(3+(b0<<1)+b2,3+(b1<<1)+b3,k3)。
其中,value[1]采用的上下文索引值为(0,0),value[2]采用的上下文索引值为(1+b0,1+b1),value[0]采用的上下文索引值为(3+(b0<<1)+b2,3+(b1<<1)+b3)。由此可见,当前点的第一个属性分量采用固定的上下文索引值,当前点的第二个属性分量采用的上下文索引值为与当前点的第一个属性分量自适应的上下文索引值,当前点的第三个属性分量采用的上下文索引值为与当前点的第一个属性分量和当前点的第二个属性分量适应的上下文索引值。例如,针对当前点的第二个属性分量来说,k1和k2均为基于该已解码的第一个属性分量的取值确定的上下文索引值。例如,k1=1+b0,k2=1+b1。由此可见,第二个属性分量的第二参数采用的上下文索引值可以是与第一个属性分量的取值适应的上下文索引值。其中,本申请对当前点的第一个属性分量、第二个属性分量以及第三个属性分量的具体类型不作限定。例如,当前点的第一个属性分量、第二个属性分量以及第三个属性分量可以是U、V、Y或其他顺序(或类型)的分量。
实例2:
value[1]=decodeSymbol(0,0,1)+1;
int b2=(value[1]==1);
int b3=(value[1]>=2);
value[2]=decodeSymbol(5+b2,5+b3,1);
int b4=(value[2]==0);
int b5=(value[2]>=1);
value[0]=decodeSymbol(7+(b2<<1)+b4,7+(b3<<1)+b5,0)。
其中,value[1]采用的上下文索引值为(0,0),value[2]采用的上下文索引值为(5+b2,5+b3),value[0]采用的上下文索引值为(7+(b2<<1)+b4,7+(b3<<1)+b5)。由此可见,当前点的第一个属性分量采用固定的上下文索引值,当前点的第二个属性分量采用的上下文索引值为与当前点的第一个属性分量自适应的上下文索引值,当前点的第三个属性分量采用的上下文索引值为与当前点的第一个属性分量和当前点的第二个属性分量适应的上下文索引值。例如,针对当前点的第二个属性分量来说,k1和k2均为基于该已解码的第一个属性分量的取值确定的上下文索引值。例如,k1=5+b2,k2=5+b3。由此可见,第二个属性分量的第二参数采用的上下文索引值可以是与第一个属性分量的取值适应的上下文索引值。其中,本申请对当前点的第一个属性分量、第二个属性分量以及第三个属性分量的具体类型不作限定。例如,当前点的第一个属性分量、第二个属性分量以及第三个属性分量可以是U、V、Y或其他顺序(或类型)的分量。
示例3:
value[1]=0;
value[2]=decodeSymbol(2,2,1)+1;
int b0=(value[2]==1);
int b1=(value[2]>=2);
value[0]=decodeSymbol(3+b0,3+b1,0)。
其中,value[1]=0时,value[2]采用的上下文索引值为(2,2),value[0]采用的上下文索引值为(3+b0,3+b1)。由此可见,value[1]=0时,当前点的第二个属性分量采用的上下文索引值为固定的上下文索引值,当前点的第三个属性分量采用的上下文索引值为与当前点的第二个属性分量适应的上下文索引值。进一步的,针对当前点的第三个属性分量来说,k1和k2均为基于该已解码的第二个属性分量的取值确定的上下文索引值。例如,k1=3+b0,k2=3+b1。由此可见,第三个属性分量的第二参数采用的上下文索引值可以是与第一个属性分量的取值适应的上下文索引值。其中,本申请对当前点的第一个属性分量、第二个属性分量以及第三个属性分量的具体类型不作限定。例如,当前点的第一个属性分量、第二个属性分量以及第三个属性分量可以是U、V、Y或其他顺序(或类型)的分量。
当然,上述语法元素仅为本申请的示例,不应理解为对本申请的限制。
例如,在其他可替代实施例中,对于第二个属性分量来说,解码器基于第一个属性分量的取值确定的数值也可以仅包括k1或仅包括k2;以仅包括k1为例,该4个标志位中的第一个标志位采用的上下文索引值可以表示为:ctxCoeffGtN[0][k1],第二个标志位采用的上下文索引值可以表示为:ctxCoeffGtN[1][k1],第三个标志位采用的上下文索引值可以表示为:ctxCoeffGtN[2][k1],第四个标志位采用的上下文索引值可以表示为:ctxCoeffGtN[3][k1]。甚至于,解码器基于该已解码属性分量的取值在一个维度上确定的取值也可以是:基于k1和k2确定的数值,本申请对此不作具体限定。
在一些实施例中,若该M+1个标志位的取值均指示该当前点的属性系数不等于i-1,则确定该当前点的属性系数不为0~M中的数值。
示例性地,若该M+1个标志位的取值均为0或均为1,则解码器确定该当前点的属性系数不为0~M中的数值。
当然,在其他可替代实施例中,也可以通过一个标志位指示该当前点的属性系数是否为0~M中的数值,本申请对此不作具体限定。
示例性地,解码器可利用固定的上下文、不使用上下文或自适应的上下文,确定该M+1个标志位;若该M+1个标志位的取值指示该当前点的属性系数不为0~M中的数值,则解码器需要进一步获取该第一参数和该第二参数,并基于该第一参数和该第二参数,确定该当前点的属性系数。
在一些实施例中,解码器可以根据M+1个标志位的指示将0~M中的数值确定为该当前点的属性系数。具体而言,解码器可以将当前点的属性系数确定为M+1个标志位的值的和。
举例来说,假设M=3,则存在4个标志位用于指示当前点的属性系数是否为0~3,具体而言,
存在一个标志位为0时指示当前点的属性系数为0,为1时指示当前点的属性系数不为0;
存在一个标志位为0时指示当前点的属性系数为1,为1时指示当前点的属性系数不为1;
存在一个标志位为0时指示当前点的属性系数为2,为1时指示当前点的属性系数不为2;
存在一个标志位为0时指示当前点的属性系数为3,为1时指示当前点的属性系数不为3;
以上标志位不存在时,可以推断该标志位为默认值0。
解码器可按照以下方式确定该当前点的属性系数:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为0,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为0,或者将当前点的属性系数确定为4个标志位取值的和0+0+0+0=0,其中不存在的标志位被推断为0;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为1,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为1,或者将当前点的属性系数确定为4个标志位取值的和1+0+0+0=1,其中不存在的标志位被推断为0;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为2,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为2,或者将当前点的属性系数确定为4个标志位取值的和1+1+0+0=2,其中不存在的标志位被推断为0;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为3,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为3,或者将当前点的属性系数确定为4个标志位取值的和1+1+1+0=3,其中不存在的标志位被推断为0;如果否,则解码器基于该第一参数和该第二参数确定该当前点的属性系数。
通过累加,使标志位在指示信息的同时用于解码,进一步提高了压缩比和解码效率。
在一些实施例中,解码器可以基于该第一参数和该第二参数,以及M+1个标志位的指示确定该当前点的属性系数。具体而言,解码器可以将基于第一参数和第二参数得到的中间值,与M+1个标志位的值的和相加,得到当前点的属性系数。
在一些实施例中,该方法100还可包括:
确定第一标志位;该第一标志位的取值指示是否基于该第一参数和该第二参数确定该当前点的属性系数。
示例性地,该第一标志位可以是点云级别的标志位。也即是说,该第一标志位的取值指示当前点云中的各个点是否基于各个点的解码值和各个点的第二参数确定该各个点的属性系数。例如,若该第一标志位的取值指示该各个点基于各个点的解码值和各个点的第二参数确定该各个点的属性系数,则对于当前点云中的所有点,解码器均基于各个点的解码值和该各个点的第二参数确定该各个点的属性系数;否则,解码器基于其他方式确定该各个点的属性系数。
示例性地,该第一标志位可以是片级别的标志位。也即是说,该第一标志位的取值指示当前点云中当前片中的各个点是否基于各个点的解码值和各个点的第二参数确定该各个点的属性系数。例如,若该第一标志位的取值指示当前片中的各个点基于各个点的解码值和各个点的第二参数确定该各个点的属性系数,则对于当前片中的所有点,解码器均基于各个点的解码值和该各个点的第二参数确定该各个点的属性系数;否则,解码器基于其他方式确定该各个点的属性系数。
示例性地,该第一标志位可以是点级别的标志位。也即是说,该第一标志位的取值指示当前点是否基于该第一参数和该第二参数确定该当前点的属性系数。例如,若该第一标志位的取值指示当前点是否基于该第一参数和该第二参数确 定该当前点的属性系数,则当前点,解码器基于该第一参数和该第二参数确定该当前点的属性系数;否则,解码器基于其他方式确定该当前点的属性系数。
值得注意的是,本申请实施例中,即便该第一标志位的取值指示基于该第一参数和该第二参数确定该当前点的属性系数。若解码器解码该M+1个标志位的第i个标志位指示该当前点的属性系数为i-1,此时解码器会直接(或基于该M+1个标志位)将i-1确定为该当前点的属性系数并结束对剩余标志位的解码,此外也不需要基于该第一参数和该第二参数确定该当前点的属性系数。换言之,若该第一标志位的取值指示基于该第一参数和该第二参数确定该当前点的属性系数,则在该M+1个标志位指示该当前点的属性系数不为0~M中的数值的情况下,解码器需要获取第一参数和第二参数,并基于该第一参数和该第二参数确定该当前点的属性系数。
本实施例中,通过该第一标志位来表示开启与否,该第一标志位被放在高层语法元素的属性头信息(attribute header)中,该第一标志位在一些特定的条件(例如特定类型的点云)下可以不出现在码流中。进一步的,如果该第一标志位不出现在码流中,其该第一标志位的取值可以为一个固定的值(即默认值)。换言之,解码器需要解码该第一标志位,如果该第一标志位不出现在码流中,则不解码,即默认其为一个固定的值。
下面对本申请提供的优选实施例进行说明。
实施例1:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为0,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为0;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为1,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为1;以此类推,直至解码的标志位指示该当前点的属性系数等于i-1时,将i-1确定为该当前点的属性系数并结束对剩余标志位的解码,或者,直至解码完该M+1个标志位中的最后一个标志位,且最后一个标志位指示该当前点的属性系数不等于M时,解码器需要进一步获取该第一参数和该第二参数,并基于该第一参数和该第二参数确定该当前点的属性系数。
具体地,该第二参数为P个二进制数,解码器可以利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数中的第一个二进制数,记为W
1,其移位位数为P-1;然后利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数中的第二个二进制数,记为W
2,其移位位数为P-2;以此类推,直至利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数中的最后一个二进制数,记为W
P,其移位位数为P-P=0,由此得到该第二参数。例如,解码器对该第二参数进行解码时,作为一种可实现的方案,可以先利用输入的对应参数选取上下文索引来解码W
1,再利用已经解码的W
1和/或输入的对应参数共同选取适应的上下文索引来解码W
2,接着再利用已经解码的W
1、已经解码的W
2以及输入的对应参数中的至少一项选取适应的上下文索引来解码W
3,依次类推,直至完成对W
P的解码。
此外,解码器还需要利用指数哥伦布解码算法得到第一参数。
值得注意的是,本申请实施例对该第一参数和该第二参数的解码顺序不做限定。
解码器得到该第一参数和该第二参数(即W
1~W
P)后,将该第一参数左移P位得到第一中间值,并将该第一中间值和该第二参数(即W
1~W
P)进行组合得到第二中间值;例如,该第二中间值可按照以下公式确定:
mid
2=(V
1<<P)+(W
1<<P-1)+(W
2<<P-2)+…+(W
P<<0)。
其中,mid
2表示该第二中间值,V
1表示该第一参数,V
1<<P表示该第一中间值,W
1表示按照该P个二进制数的解码顺序位于第1个位置、且移位位数为P-1的二进制数,W
2表示按照该P个二进制数的解码顺序位于第2个位置、且移位位数为P-2的二进制数,以此类推,W
P表示按照该P个二进制数的解码顺序位于第P个位置、且移位位数为0的二进制数。
换言之,由于W
P<<0仍然为W
P,因此,上述公式也可描述为:
mid
2=(V
1<<P)+(W
1<<P-1)+(W
2<<P-2)+…+W
P。
其中,mid
2表示该第二中间值,V
1表示该第一参数,V
1<<P表示该第一中间值,W
1表示按照该P个二进制数的解码顺序位于第1个位置、且移位位数为P-1的二进制数,W
2表示按照该P个二进制数的解码顺序位于第2个位置、且移位位数为P-2的二进制数,以此类推,W
P表示按照该P个二进制数的解码顺序位于第P个位置、且移位位数为0的二进制数。
解码器得到第二中间值后,可以将该第二中间值与M+1相加,得到当前点的属性系数;即当前点的属性系数等于该第二中间值与M+1的和。也可以将第二中间值与M+1个标志位的值的和相加,得到当前点的属性系数。
下面以M=3,P=2为例对该解码方法进行说明:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为0,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为0;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为1,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为1;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为2,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为2;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为3,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为3;如果否,则:
利用固定的上下文、不使用上下文或自适应的上下文解码第二参数。
假设P=2,解码器可以利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数中的第一个二进制数,记为W
1,其移位位数为1;然后利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数中的第二个二进制数,记为W
2,其移位位数为0。解码器对该第二参数进行解码时,作为一种可实现的方案,可以先利用输入的对应参数选取上下文索引来解码W
1,再利用已经解码的W
1和/或输入的对应参数共同选取适应的上下文索引来解码W
2。例如, 解码器可利用已经解码的W
1以及输入的对应参数共同选取适应的上下文索引来解码W
2。再如,解码器可利用已经解码的W
1选取适应的上下文索引来解码W
2。再如,解码器可利用输入的对应参数选取适应的上下文索引来解码W
2。
此外,解码器还需要利用指数哥伦布解码算法得到第一参数。
值得注意的是,本申请实施例对该第一参数和该第二参数的解码顺序不做限定。
解码器得到该第一参数和该第二参数(即W
1,W
2)后,将该第一参数左移P=2位得到第一中间值,并将该第一中间值和该第二参数(即W
1,W
2)进行组合得到第二中间值;例如,该第二中间值可按照以下公式确定:
mid
2=(V
1<<2)+(W
1<<1)+W
2。
其中,mid
2表示该第二中间值,V
1表示该第一参数,V
1<<P表示该第一中间值,W
1表示按照该P个二进制数的解码顺序位于第1个位置、且移位位数为1的二进制数,W
0表示按照该P个二进制数的解码顺序位于第2个位置、且移位位数为0的二进制数。
解码器得到第二中间值后,可以将该第二中间值与M+1(即4)相加,得到当前点的属性系数;即当前点的属性系数等于该第二中间值与4的和。也可以将第二中间值与4个标志位的值的和相加,得到当前点的属性系数,即当前点的属性系数等于该第二中间值与四个1相加的和。
下面以M=1,P=2为例对该解码方法进行说明:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为0,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为0;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为1,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为1;如果否,则:
利用固定的上下文、不使用上下文或自适应的上下文解码第二参数。
假设P=2,解码器可以利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数中的第一个二进制数,记为W
1,其移位位数为1;然后利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数中的第二个二进制数,记为W
2,其移位位数为0。解码器对该第二参数进行解码时,作为一种可实现的方案,可以先利用输入的对应参数选取上下文索引来解码W
1,再利用已经解码的W
1和/或输入的对应参数共同选取适应的上下文索引来解码W
2。例如,解码器可利用已经解码的W
1以及输入的对应参数共同选取适应的上下文索引来解码W
2。再如,解码器可利用已经解码的W
1选取适应的上下文索引来解码W
2。再如,解码器可利用输入的对应参数选取适应的上下文索引来解码W
2。
此外,解码器还需要利用指数哥伦布解码算法得到第一参数。
值得注意的是,本申请实施例对该第一参数和该第二参数的解码顺序不做限定。
解码器得到该第一参数和该第二参数(即W
1,W
2)后,将该第一参数左移P=2位得到第一中间值,并将该第一中间值和该第二参数(即W
1,W
2)进行组合得到第二中间值;例如,该第二中间值可按照以下公式确定:
mid
2=(V
1<<2)+(W
1<<1)+W
2。
其中,mid
2表示该第二中间值,V
1表示该第一参数,V
1<<P表示该第一中间值,W
1表示按照该P个二进制数的解码顺序位于第1个位置、且移位位数为1的二进制数,W
2表示按照该P个二进制数的解码顺序位于第2个位置、且移位位数为0的二进制数。
解码器得到第二中间值后,可以将该第二中间值与M+1(即2)相加,得到当前点的属性系数;即当前点的属性系数等于该第二中间值与2的和。
下面以M=1,P=1为例对该解码方法进行说明:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为0,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为0;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为1,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为1;如果否,则:
利用固定的上下文、不使用上下文或自适应的上下文解码第二参数。
假设P=1,解码器可以利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数中的第一个二进制数,记为W
1;
此外,解码器还需要利用指数哥伦布解码算法得到第一参数。
值得注意的是,本申请实施例对该第一参数和该第二参数的解码顺序不做限定。
mid
2=(V
1<<1)+W
1。
其中,mid
2表示该第二中间值,V
1表示该第一参数,W
1表示按照该P个二进制数的解码顺序位于第1个位置的二进制数。
解码器得到第二中间值后,可以将该第二中间值与M+1(即2)相加,得到当前点的属性系数;即当前点的属性系数等于该第二中间值与2的和。也可以将第二中间值与2个标志位的值的和相加,得到当前点的属性系数,即当前点的属性系数等于该第二中间值与两个1相加的和。
下面以M=3,P=1为例对该解码方法进行说明:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为0,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为0;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为1,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为1;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为2,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为2;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为3,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为3;如果否,则:
利用固定的上下文、不使用上下文或自适应的上下文解码第二参数。
假设P=1,解码器可以利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数中的第一个二进制数,记为W
1;
此外,解码器还需要利用指数哥伦布解码算法得到第一参数。
值得注意的是,本申请实施例对该第一参数和该第二参数的解码顺序不做限定。
mid
2=(V
1<<1)+W
1。
其中,mid
2表示该第二中间值,V
1表示该第一参数,W
1表示按照该P个二进制数的解码顺序位于第1个位置的二进制数。
解码器得到第二中间值后,可以将该第二中间值与M+1(即4)相加,得到当前点的属性系数;即当前点的属性系数等于该第二中间值与4的和。也可以将第二中间值与4个标志位的值的和相加,得到当前点的属性系数,即当前点的属性系数等于该第二中间值与四个1相加的和。
实施例2:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为0,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为0;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为1,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为1;以此类推,直至解码的标志位指示该当前点的属性系数等于i-1时,将i-1确定为该当前点的属性系数并结束对剩余标志位的解码,或者,直至解码完该M+1个标志位中的最后一个标志位,且最后一个标志位指示该当前点的属性系数不等于M时,解码器需要进一步获取该第一参数和该第二参数,并基于该第一参数和该第二参数确定该当前点的属性系数。
具体地,该第二参数为P个二进制数,解码器可以利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数中的第一个二进制数,记为W
1,其移位位数为P-1;然后利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数中的第二个二进制数,记为W
2,其移位位数为P-2;以此类推,直至利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数中的最后一个二进制数,记为W
P,其移位位数为P-P=0,由此得到该第二参数。例如,解码器对该第二参数进行解码时,作为一种可实现的方案,可以先利用输入的对应参数选取上下文索引来解码W
1,再利用已经解码的W
1以及输入的对应参数共同选取适应的上下文索引来解码W
2,接着再利用已经解码的W
1、已经解码的W
2以及输入的对应参数共同选取适应的上下文索引来解码W
3,依次类推,直至完成对W
P的解码。
此外,解码器还需要利用指数哥伦布解码算法得到第一参数。
值得注意的是,本申请实施例对该第一参数和该第二参数的解码顺序不做限定。
解码器得到该第一参数和该第二参数(即W
1~W
P)后,将该第一参数左移P位得到第一中间值,并将该第一中间值和该第二参数(即W
1~W
P)进行组合得到第二中间值;例如,该第二中间值可按照以下公式确定:
mid
2=(V
1<<P)+(W
1<<P-1)+(W
2<<P-2)+…+(W
P<<0)。
其中,mid
2表示该第二中间值,V
1表示该第一参数,V
1<<P表示该第一中间值,W
1表示按照该P个二进制数的解码顺序位于第1个位置、且移位位数为P-1的二进制数,W
2表示按照该P个二进制数的解码顺序位于第2个位置、且移位位数为P-2的二进制数,以此类推,W
P表示按照该P个二进制数的解码顺序位于第P个位置、且移位位数为0的二进制数。
换言之,由于W
P<<0仍然为W
P,因此,上述公式也可描述为:
mid
2=(V
1<<P)+(W
1<<P-1)+(W
2<<P-2)+…+W
P。
其中,mid
2表示该第二中间值,V
1表示该第一参数,V
1<<P表示该第一中间值,W
1表示按照该P个二进制数的解码顺序位于第1个位置、且移位位数为P-1的二进制数,W
2表示按照该P个二进制数的解码顺序位于第2个位置、且移位位数为P-2的二进制数,以此类推,W
P表示按照该P个二进制数的解码顺序位于第P个位置、且移位位数为0的二进制数。
解码器得到第二中间值后,可以将该第二中间值直接确定为该当前的的属性系数。
下面以M=3,P=2为例对该解码方法进行说明:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为0,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为0;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为1,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为1;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为2,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为2;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为3,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为3;如果否,则:
利用固定的上下文、不使用上下文或自适应的上下文解码第二参数。
假设P=2,解码器可以利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数中的第一个二进制数,记为W
1,其移位位数为1;然后利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数中的第二个二进制数,记为W
2,其移位位数为0。解码器对该第二参数进行解码时,作为一种可实现的方案,可以先利用输入的对应参数选取上下文索引来解码W
1,再利用已经解码的W
1和/或输入的对应参数共同选取适应的上下文索引来解码W
2。例如,解码器可利用已经解码的W
1以及输入的对应参数共同选取适应的上下文索引来解码W
2。再如,解码器可利用已经解码 的W
1选取适应的上下文索引来解码W
2。再如,解码器可利用输入的对应参数选取适应的上下文索引来解码W
2。
此外,解码器还需要利用指数哥伦布解码算法得到第一参数。
值得注意的是,本申请实施例对该第一参数和该第二参数的解码顺序不做限定。
解码器得到该第一参数和该第二参数(即W
1,W
2)后,将该第一参数左移P=2位得到第一中间值,并将该第一中间值和该第二参数(即W
1,W
2)进行组合得到第二中间值;例如,该第二中间值可按照以下公式确定:
mid
2=(V
1<<2)+(W
1<<1)+W
2。
其中,mid
2表示该第二中间值,V
1表示该第一参数,V
1<<P表示该第一中间值,W
1表示按照该P个二进制数的解码顺序位于第1个位置、且移位位数为1的二进制数,W
0表示按照该P个二进制数的解码顺序位于第2个位置、且移位位数为0的二进制数。
解码器得到第二中间值后,可以将该第二中间值直接作为当前的的属性系数。
下面以M=1,P=2为例对该解码方法进行说明:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为0,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为0;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为1,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为1;如果否,则:
利用固定的上下文、不使用上下文或自适应的上下文解码第二参数。
假设P=2,解码器可以利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数中的第一个二进制数,记为W
1,其移位位数为1;然后利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数中的第二个二进制数,记为W
2,其移位位数为0。解码器对该第二参数进行解码时,作为一种可实现的方案,可以先利用输入的对应参数选取上下文索引来解码W
1,再利用已经解码的W
1和/或输入的对应参数共同选取适应的上下文索引来解码W
2。例如,解码器可利用已经解码的W
1以及输入的对应参数共同选取适应的上下文索引来解码W
2。再如,解码器可利用已经解码的W
1选取适应的上下文索引来解码W
2。再如,解码器可利用输入的对应参数选取适应的上下文索引来解码W
2。
此外,解码器还需要利用指数哥伦布解码算法得到第一参数。
值得注意的是,本申请实施例对该第一参数和该第二参数的解码顺序不做限定。
解码器得到该第一参数和该第二参数(即W
1,W
2)后,将该第一参数左移P=2位得到第一中间值,并将该第一中间值和该第二参数(即W
1,W
2)进行组合得到第二中间值;例如,该第二中间值可按照以下公式确定:
mid
2=(V
1<<2)+(W
1<<1)+W
2。
其中,mid
2表示该第二中间值,V
1表示该第一参数,V
1<<P表示该第一中间值,W
1表示按照该P个二进制数的解码顺序位于第1个位置、且移位位数为1的二进制数,W
2表示按照该P个二进制数的解码顺序位于第2个位置、且移位位数为0的二进制数。
解码器得到第二中间值后,可以将该第二中间值直接作为当前的的属性系数。
下面以M=1,P=1为例对该解码方法进行说明:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为0,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为0;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为1,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为1;如果否,则:
利用固定的上下文、不使用上下文或自适应的上下文解码第二参数。
假设P=1,解码器可以利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数中的第一个二进制数,记为W
1;
此外,解码器还需要利用指数哥伦布解码算法得到第一参数。
值得注意的是,本申请实施例对该第一参数和该第二参数的解码顺序不做限定。
mid
2=(V
1<<1)+W
1。
其中,mid
2表示该第二中间值,V
1表示该第一参数,W
1表示按照该P个二进制数的解码顺序位于第1个位置的二进制数。
解码器得到第二中间值后,可以将该第二中间值直接作为当前的的属性系数。
下面以M=3,P=1为例对该解码方法进行说明:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为0,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为0;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为1,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为1;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为2,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为2;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为3,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为3;如果否,则:
利用固定的上下文、不使用上下文或自适应的上下文解码第二参数。
假设P=1,解码器可以利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数中的第一个二进制数,记为W
1;
此外,解码器还需要利用指数哥伦布解码算法得到第一参数。
值得注意的是,本申请实施例对该第一参数和该第二参数的解码顺序不做限定。
mid
2=(V
1<<1)+W
1。
其中,mid
2表示该第二中间值,V
1表示该第一参数,W
1表示按照该P个二进制数的解码顺序位于第1个位置的二进制数。
解码器得到第二中间值后,可以将该第二中间值直接作为当前的的属性系数。
下面以不使用M+1个标志位且P=1为例对该解码方法进行说明:
假设P=1,解码器可以利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数中的第一个二进制数,记为W
1;
此外,解码器还需要利用指数哥伦布解码算法得到第一参数。
值得注意的是,本申请实施例对该第一参数和该第二参数的解码顺序不做限定。
mid
2=(V
1<<1)+W
1。
其中,mid
2表示该第二中间值,V
1表示该第一参数,W
1表示按照该P个二进制数的解码顺序位于第1个位置的二进制数。
解码器得到第二中间值后,可以将该第二中间值直接作为当前的的属性系数。
下面以不使用M+1个标志位且P=2为例对该解码方法进行说明:
利用固定的上下文、不使用上下文或自适应的上下文解码第二参数。
假设P=2,解码器可以利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数中的第一个二进制数,记为W
1,其移位位数为1;然后利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数中的第二个二进制数,记为W
2,其移位位数为0。解码器对该第二参数进行解码时,作为一种可实现的方案,可以先利用输入的对应参数选取上下文索引来解码W
1,再利用已经解码的W
1和/或输入的对应参数共同选取适应的上下文索引来解码W
2。例如,解码器可利用已经解码的W
1以及输入的对应参数共同选取适应的上下文索引来解码W
2。再如,解码器可利用已经解码的W
1选取适应的上下文索引来解码W
2。再如,解码器可利用输入的对应参数选取适应的上下文索引来解码W
2。
此外,解码器还需要利用指数哥伦布解码算法得到第一参数。
值得注意的是,本申请实施例对该第一参数和该第二参数的解码顺序不做限定。
解码器得到该第一参数和该第二参数(即W
1,W
2)后,将该第一参数左移P=2位得到第一中间值,并将该第一中间值和该第二参数(即W
1,W
2)进行组合得到第二中间值;例如,该第二中间值可按照以下公式确定:
mid
2=(V
1<<2)+(W
1<<1)+W
2。
其中,mid
2表示该第二中间值,V
1表示该第一参数,V
1<<P表示该第一中间值,W
1表示按照该P个二进制数的解码顺序位于第1个位置、且移位位数为1的二进制数,W
2表示按照该P个二进制数的解码顺序位于第2个位置、且移位位数为0的二进制数。
解码器得到第二中间值后,可以将该第二中间值直接作为当前的的属性系数。
实施例3:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为0,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为0;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为1,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为1;以此类推,直至解码的标志位指示该当前点的属性系数等于i-1时,将i-1确定为该当前点的属性系数并结束对剩余标志位的解码,或者,直至解码完该M+1个标志位中的最后一个标志位,且最后一个标志位指示该当前点的属性系数不等于M时,解码器需要进一步获取该第一参数和该第二参数,并基于该第一参数和该第二参数确定该当前点的属性系数。
具体地,该第二参数为P位二进制数,解码器可以利用固定的上下文、不使用上下文或自适应的上下文,得到该P位二进制数。
值得注意的是,本申请实施例对该第一参数和该第二参数的解码顺序不做限定。
解码器得到该第一参数和该第二参数(即P位二进制数)后,将该第一参数左移P位得到第一中间值,并将该第一中间值和该第二参数(即P位二进制数)进行组合得到第二中间值;例如,该第二中间值可按照以下公式确定:
mid
2=(V
1<<P)+P位二进制数。
其中,mid
2表示该第二中间值,V
1表示该第一参数,V
1<<P表示该第一中间值。
解码器得到第二中间值后,可以将该第二中间值与M+1相加,得到当前点的属性系数;即当前点的属性系数等于该第二中间值与M+1的和。
下面以M=3,P=2为例对该解码方法进行说明:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为0,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为0;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为1,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为1;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为2,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为2;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为3,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为3;如果否,则:
利用固定的上下文、不使用上下文或自适应的上下文解码第二参数。
假设P=2,解码器可以利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数,记为W
1W
2。
此外,解码器还需要利用指数哥伦布解码算法得到第一参数。
值得注意的是,本申请实施例对该第一参数和该第二参数的解码顺序不做限定。
解码器得到该第一参数和该第二参数(即W
1W
2)后,将该第一参数左移P=2位得到第一中间值,并将该第一中间值和该第二参数(即W
1W
2)进行组合得到第二中间值;例如,该第二中间值可按照以下公式确定:
mid
2=(V
1<<2)+W
1W
2。
其中,mid
2表示该第二中间值,V
1表示该第一参数,V
1<<P表示该第一中间值,W
1W
2表示该第二参数。
解码器得到第二中间值后,可以将该第二中间值与M+1(即4)相加,得到当前点的属性系数;即当前点的属性系数等于该第二中间值与4的和。也可以将第二中间值与4个标志位的值的和相加,得到当前点的属性系数,即当前点的属性系数等于该第二中间值与两个1相加的和。
实施例4:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为0,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为0;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为1,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为1;以此类推,直至解码的标志位指示该当前点的属性系数等于i-1时,将i-1确定为该当前点的属性系数并结束对剩余标志位的解码,或者,直至解码完该M+1个标志位中的最后一个标志位,且最后一个标志位指示该当前点的属性系数不等于M时,解码器需要进一步获取该第一参数和该第二参数,并基于该第一参数和该第二参数确定该当前点的属性系数。
具体地,该第二参数为P位二进制数,解码器可以利用固定的上下文、不使用上下文或自适应的上下文,得到该P位二进制数。
值得注意的是,本申请实施例对该第一参数和该第二参数的解码顺序不做限定。
解码器得到该第一参数和该第二参数(即P位二进制数)后,将该第一参数左移P位得到第一中间值,并将该第一中间值和该第二参数(即P位二进制数)进行组合得到第二中间值;例如,该第二中间值可按照以下公式确定:
mid
2=(V
1<<P)+P位二进制数。
其中,mid
2表示该第二中间值,V
1表示该第一参数,V
1<<P表示该第一中间值。
解码器得到第二中间值后,可以将该第二中间值直接作为当前点的属性系数。
下面以M=3,P=2为例对该解码方法进行说明:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为0,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为0;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为1,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为1;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为2,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为2;如果否,则:
利用自适应上下文解码一个标志位代表该当前点的属性系数是否为3,如果是,则:结束对后续标志位的解码并将当前点的属性系数确定为3;如果否,则:
利用固定的上下文、不使用上下文或自适应的上下文解码第二参数。
假设P=2,解码器可以利用固定的上下文、不使用上下文或自适应的上下文,得到该第二参数,记为W
1W
2。
此外,解码器还需要利用指数哥伦布解码算法得到第一参数。
值得注意的是,本申请实施例对该第一参数和该第二参数的解码顺序不做限定。
解码器得到该第一参数和该第二参数(即W
1W
2)后,将该第一参数左移P=2位得到第一中间值,并将该第一中间值和该第二参数(即W
1W
2)进行组合得到第二中间值;例如,该第二中间值可按照以下公式确定:
mid
2=(V
1<<2)+W
1W
2。
其中,mid
2表示该第二中间值,V
1表示该第一参数,V
1<<P表示该第一中间值,W
1W
2表示该第二参数。
解码器得到第二中间值后,可以将该第二中间值直接作为当前点的属性系数。
上文中从解码器的角度详细描述了根据本申请实施例的解码方法,下面将结合图9从编码器的角度描述根据本申请实施例的编码方法。
图9是本申请实施例提供的编码方法200的示意性流程图。应理解,该编码方法200可由编码器执行。例如应用于图4或图6所示的编码框架。为便于描述,下面以编码器为例对该编码方法200进行示例性说明。
如图9所示,该编码方法200可包括:
S210,获取当前点的属性系数;
S220,基于该当前点的属性系数,确定该当前点的第一参数和第二参数;
S230,对该第一参数和该第二参数进行编码。
在一些实施例中,该S220可包括:
将该当前点的属性系数减去O,得到第三中间值;O为正整数;
基于该第三中间值,确定该第一参数和该第二参数。
在一些实施例中,可按照以下方式基于该第三中间值,确定该第一参数和该第二参数:
将该第三中间值比特右移P位,得到该第一参数和该第二参数;该第一参数为该第三中间值比特右移P位后得到的数值;该第二参数包括该第三中间值比特右移P位时移出的P位二进制数;P为正整数。
在一些实施例中,可按照以下方式基于该第三中间值,确定该第一参数和该第二参数:
将该第三中间值比特右移P次,得到该第一参数和该第二参数;该第三中间值每次比特右移的移位位数为1,该第一参数为该第三中间值比特右移P次后得到的数值;该第二参数包括该第三中间值比特右移P次时移出的P个二进制数;P为正整数。
在一些实施例中,该S220可包括:
将该当前点的属性系数比特右移P位,得到该第一参数和该第二参数;该第一参数为该当前点的属性系数比特右移P位后得到的数值,该第二参数包括该当前点的属性系数比特右移P位时移出的P位二进制数;P为正整数。
在一些实施例中,该S220可包括:
将该当前点的属性系数比特右移P次,得到该第一参数和该第二参数;该当前点的属性系数每次比特右移的移位位数为1,该第一参数为该当前点的属性系数比特右移P次后得到的数值;该第二参数包括该当前点的属性系数比特右移P次时移出的P个二进制数;P为正整数。
在一些实施例中,该S230可包括:
利用第一熵编码算法对该第一参数进行编码。
在一些实施例中,该第一熵编码算法为哥伦布编码算法。
在一些实施例中,该S230可包括:
利用固定的上下文对该第二参数进行编码。
在一些实施例中,该S230可包括:
不使用上下文对该第二参数进行编码。
在一些实施例中,该S230可包括:
利用自适应上下文对该第二参数进行编码。
在一些实施例中,编码器可利用自适应上下文对该第二参数进行编码:
确定第一索引值;
基于该第一索引值指示的上下文,对该第二参数中当前二进制数进行编码。
在一些实施例中,编码器可将固定的索引值,确定为该第一索引值。
在一些实施例中,若该当前二进制数为该第二参数中的第一个二进制数,则将该固定的索引值确定为该第一索引值。
在一些实施例中,编码器可基于该当前二进制数的先验信息,确定第一索引值。
在一些实施例中,该先验信息包括以下中的至少一项:
已编码点的属性系数、已编码点采用的上下文索引值、该当前点的已编码属性分量的取值、该已编码属性分量采用的上下文索引值、该第二参数中已确定的二进制数。
在一些实施例中,若该当前点的属性系数为该当前点的第一个属性分量,则该先验信息包括以下中的至少一项:已编码点的属性系数、已编码点采用的上下文索引值、该第二参数中已确定的二进制数。
在一些实施例中,若该当前点的属性系数不是该当前点的第一个属性分量,则该先验信息包括以下中的至少一项:该当前点的已编码属性分量的取值、该已编码属性分量采用的上下文索引值、该第二参数中已确定的二进制数。
在一些实施例中,该先验信息包括该第二参数中已确定的至少一个二进制数。
在一些实施例中,该第一索引值为基于该至少一个二进制数确定的一维索引值。
在一些实施例中,该先验信息还包括该当前点的已编码属性分量的取值。
在一些实施例中,该第一索引值为二维索引值,该已编码属性分量的取值用于:确定该第一索引值在一个维度上的取值,该至少一个二进制数用于:确定该第一索引值在另一个维度上的取值。
在一些实施例中,该S220可包括:
确定该当前点的属性系数是否为0~M中的数值;M为正整数;
若该当前点的属性系数不为0~M中的数值,则确定该第一参数和该第二参数。
在一些实施例中,该方法200还可包括:
确定M+1个标志位中的第i个标志位;该第i个标志位的取值指示该当前点的属性系数是否等于i-1,该M+1个标志位中的前i-1个标志位的取值指示该当前点的属性系数不等于0至i-2中的数值;
对该M+1个标志位进行编码。
在一些实施例中,编码器可利用固定的上下文、不使用上下文或自适应的上下文,对该第i个标志位进行编码。
在一些实施例中,该方法200还包括:
确定第一标志位;该第一标志位的取值指示是否对该第一参数和该第二参数进行编码;
对该第一标志位进行编码。
应理解,解码方法100为编码方法200的逆过程或反操作,因此编码方法200中的步骤可以参考解码方法100中的相应步骤,为了简洁,在此不再赘述。
下面对本申请提供的优选实施例进行说明。
实施例5:
利用自适应上下文编码一个标志位代表该当前点的属性系数是否为0,如果是,则:结束对后续标志位的编码并将当前点的属性系数确定为0;如果否,则:
利用自适应上下文编码一个标志位代表该当前点的属性系数是否为1,如果是,则:结束对后续标志位的编码并将当前点的属性系数确定为1;以此类推,直至编码的第i个标志位指示该当前点的属性系数等于i-1时,结束对剩余标志位的编码,或者,直至编码完M+1个标志位中的最后一个标志位,且最后一个标志位指示该当前点的属性系数不等于M时,编码器需要进一步基于该当前点的属性系数确定该第一参数和该第二参数,并对该第一参数和该第二参数进行编码。
具体地,解码器将当前点的属性系数减去M+1得到第三中间值,然后将第三中间值右移P位得到的数值确定为该第一参数,并将移出的二进制数确定为该第二参数;基于此,可利用指数哥伦布编码该第一参数,以及利用固定的上下 文、不使用上下文或自适应的上下文,对该第二参数中的各个二进制数进行熵编码。
值得注意的是,本申请实施例对该第一参数和该第二参数的编码顺序不做限定。
此外,编码器在确定该第二参数时,可以先对该第三中间值右移一位,得到该第二参数中的第一个二进制数,记为W
1;然后再次右移一位,得到该第二参数中的第二个二进制数,记为W
2;以此类推,直至得到该第二参数中的最后一个二进制数,记为W
P,由此得到该第二参数。当然,也可以一次性右移P位,即可以一次性得到该第二参数,本申请对此不作具体限定。编码器对该第二参数进行编码时,作为一种可实现的方案,可以先利用输入的对应参数选取上下文索引来编码W
1,再利用已经编码的W
1和/或输入的对应参数选取适应的上下文索引来编码W
2,接着再利用已经编码的W
1、已经编码的W
2以及输入的对应参数中的至少一项选取适应的上下文索引来编码W
3,依次类推,直至完成对W
P的编码。
下面以M=3,P=2为例对该编码方法进行说明:
利用自适应上下文编码一个标志位代表该当前点的属性系数是否为0,如果是,则:结束对后续标志位的编码并将当前点的属性系数确定为0;如果否,则:
利用自适应上下文编码一个标志位代表该当前点的属性系数是否为1,如果是,则:结束对后续标志位的编码并将当前点的属性系数确定为1;如果否,则:
利用自适应上下文编码一个标志位代表该当前点的属性系数是否为2,如果是,则:结束对后续标志位的编码并将当前点的属性系数确定为2;如果否,则:
利用自适应上下文编码一个标志位代表该当前点的属性系数是否为3,如果是,则:结束对后续标志位的编码并将当前点的属性系数确定为3;如果否,则编码器需要进一步基于该当前点的属性系数确定该第一参数和该第二参数,并对该第一参数和该第二参数进行编码。
具体地,解码器将当前点的属性系数减去4得到第三中间值,然后将第三中间值右移2位得到的数值确定为该第一参数,并将移出的二进制数确定为该2位二进制数;基于此,可利用指数哥伦布编码该第一参数,以及利用固定的上下文、不使用上下文或自适应的上下文,对该第二参数中的各个二进制数进行熵编码。
值得注意的是,本申请实施例对该第一参数和该第二参数的编码顺序不做限定。
此外,编码器在确定该第二参数时,可以先对该第三中间值右移一位,得到该第二参数中的第一个二进制数,记为W
1;然后再次右移一位,得到该第二参数中的第二个二进制数,记为W
2。当然,也可以一次性右移2位,即可以一次性得到该第二参数,本申请对此不作具体限定。编码器对该第二参数进行编码时,作为一种可实现的方案,可以先利用输入的对应参数选取上下文索引来编码W
1,再利用已经编码的W
1和/或输入的对应参数共同选取适应的上下文索引来编码W
2。例如,编码器可利用已经编码的W
1以及输入的对应参数共同选取适应的上下文索引来编码W
2。再如,解码器可利用已经编码的W
1选取适应的上下文索引来编码W
2。再如,解码器可利用输入的对应参数选取适应的上下文索引来编码W
2。
实施例6:
利用自适应上下文编码一个标志位代表该当前点的属性系数是否为0,如果是,则:结束对后续标志位的编码并将当前点的属性系数确定为0;如果否,则:
利用自适应上下文编码一个标志位代表该当前点的属性系数是否为1,如果是,则:结束对后续标志位的编码并将当前点的属性系数确定为1;以此类推,直至编码的第i个标志位指示该当前点的属性系数等于i-1时,结束对剩余标志位的编码,或者,直至编码完M+1个标志位中的最后一个标志位,且最后一个标志位指示该当前点的属性系数不等于M时,编码器需要进一步基于该当前点的属性系数确定该第一参数和该第二参数,并对该第一参数和该第二参数进行编码。
具体地,解码器将当前点的属性系数直接右移P位得到的数值确定为该第一参数,并将移出的二进制数确定为该第二参数;基于此,可利用指数哥伦布编码该第一参数,以及利用固定的上下文、不使用上下文或自适应的上下文,对该第二参数中的各个二进制数进行熵编码。
值得注意的是,本申请实施例对该第一参数和该第二参数的编码顺序不做限定。
此外,编码器在确定该第二参数时,可以先对当前点的属性系数右移一位,得到该第二参数中的第一个二进制数,记为W
1;然后再次右移一位,得到该第二参数中的第二个二进制数,记为W
2;以此类推,直至得到该第二参数中的最后一个二进制数,记为W
P,由此得到该第二参数。当然,也可以一次性右移P位,即可以一次性得到该第二参数,本申请对此不作具体限定。编码器对该第二参数进行编码时,作为一种可实现的方案,可以先利用输入的对应参数选取上下文索引来编码W
1,再利用已经编码的W
1和/或输入的对应参数选取适应的上下文索引来编码W
2,接着再利用已经编码的W
1、已经编码的W
2以及输入的对应参数中的至少一项选取适应的上下文索引来编码W
3,依次类推,直至完成对W
P的编码。
下面以M=3,P=2为例对该编码方法进行说明:
利用自适应上下文编码一个标志位代表该当前点的属性系数是否为0,如果是,则:结束对后续标志位的编码并将当前点的属性系数确定为0;如果否,则:
利用自适应上下文编码一个标志位代表该当前点的属性系数是否为1,如果是,则:结束对后续标志位的编码并将当前点的属性系数确定为1;如果否,则:
利用自适应上下文编码一个标志位代表该当前点的属性系数是否为2,如果是,则:结束对后续标志位的编码并将当前点的属性系数确定为2;如果否,则:
利用自适应上下文编码一个标志位代表该当前点的属性系数是否为3,如果是,则:结束对后续标志位的编码并将当前点的属性系数确定为3;如果否,则编码器需要进一步基于该当前点的属性系数确定该第一参数和该第二参数,并对该第一参数和该第二参数进行编码。
具体地,解码器将当前点的属性系数直接右移2位得到的数值确定为该第一参数,并将移出的二进制数确定为该2位二进制数;基于此,可利用指数哥伦布编码该第一参数,以及利用固定的上下文、不使用上下文或自适应的上下文, 对该第二参数中的各个二进制数进行熵编码。
值得注意的是,本申请实施例对该第一参数和该第二参数的编码顺序不做限定。
此外,编码器在确定该第二参数时,可以先对该第三中间值右移一位,得到该第二参数中的第一个二进制数,记为W
1;然后再次右移一位,得到该第二参数中的第二个二进制数,记为W
2。当然,也可以一次性右移2位,即可以一次性得到该第二参数,本申请对此不作具体限定。编码器对该第二参数进行编码时,作为一种可实现的方案,可以先利用输入的对应参数选取上下文索引来编码W
1,再利用已经编码的W
1和/或输入的对应参数共同选取适应的上下文索引来编码W
2。例如,编码器可利用已经编码的W
1以及输入的对应参数共同选取适应的上下文索引来编码W
2。再如,解码器可利用已经编码的W
1选取适应的上下文索引来编码W
2。再如,解码器可利用输入的对应参数选取适应的上下文索引来编码W
2。
以上结合附图详细描述了本申请的优选实施方式,但是,本申请并不限于上述实施方式中的具体细节,在本申请的技术构思范围内,可以对本申请的技术方案进行多种简单变型,这些简单变型均属于本申请的保护范围。例如,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本申请对各种可能的组合方式不再另行说明。又例如,本申请的各种不同的实施方式之间也可以进行任意组合,只要其不违背本申请的思想,其同样应当视为本申请所公开的内容。还应理解,在本申请的各种方法实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
上文详细描述了本申请的方法实施例,下文结合图10至图11,详细描述本申请的装置实施例。
图10是本申请实施例的解码器300的示意性框图。
如图10所示,该解码器300可包括:
获取单元310,用于获取当前点的第一参数和第二参数;
确定单元320,用于基于该第一参数和该第二参数,确定该当前点的属性系数。
在一些实施例中,该确定单元320具体用于:
将该第一参数比特左移P位得到第一中间值;P为正整数;
基于该第一中间值和该第二参数,确定第二中间值;
基于该第二中间值,确定该当前点的属性系数。
在一些实施例中,该第二参数为P位二进制数。
在一些实施例中,该确定单元320具体用于:
将该第一中间值和该P位二进制数相加,得到该第二中间值。
在一些实施例中,该第二参数为P个二进制数。
在一些实施例中,该确定单元320具体用于:
基于该P个二进制数的解码顺序,确定该P个二进制数中各个二进制数的移位位数;
基于该各个二进制的移位位数对该各个二进制数进行左移,得到P个第三参数;
对该第一中间值和该P个第三参数求和,得到该第二中间值。
在一些实施例中,该确定单元320具体用于:
将i-1,确定为该P个二进制数中的第i个二进制数的移位位数;i为正整数。
在一些实施例中,该确定单元320具体用于:
将P-i,确定为该P个二进制数中的第i个二进制数的移位位数;i为正整数。
在一些实施例中,该确定单元320具体用于:
将该第二中间值与O进行相加,得到该当前点的属性系数;O为正整数。
在一些实施例中,该确定单元320具体用于:
将该第二中间值,确定为该当前点的属性系数。
在一些实施例中,该获取单元310具体用于:
利用第一熵解码算法确定该第一参数。
在一些实施例中,该第一熵解码算法为哥伦布解码算法。
在一些实施例中,该获取单元310具体用于:
利用固定的上下文确定该第二参数。
在一些实施例中,该获取单元310具体用于:
不使用上下文确定该第二参数。
在一些实施例中,该获取单元310具体用于:
利用自适应上下文确定该第二参数。
在一些实施例中,该获取单元310具体用于:
确定第一索引值;
基于该第一索引值指示的上下文,确定该第二参数中当前二进制数。
在一些实施例中,该获取单元310具体用于:
将固定的索引值,确定为该第一索引值。
在一些实施例中,该获取单元310具体用于:
若该当前二进制数为该第二参数中的第一个二进制数,则将该固定的索引值确定为该第一索引值。
在一些实施例中,该获取单元310具体用于:
基于该当前二进制数的先验信息,确定第一索引值。
在一些实施例中,该先验信息包括以下中的至少一项:
已解码点的属性系数、已解码点采用的上下文索引值、该当前点的已解码属性分量的取值、该已解码属性分量采用的上下文索引值、该第二参数中已确定的二进制数。
在一些实施例中,若该当前点的属性系数为该当前点的第一个属性分量,则该先验信息包括以下中的至少一项:已解码点的属性系数、已解码点采用的上下文索引值、该第二参数中已确定的二进制数。
在一些实施例中,若该当前点的属性系数不是该当前点的第一个属性分量,则该先验信息包括以下中的至少一项:该当前点的已解码属性分量的取值、该已解码属性分量采用的上下文索引值、该第二参数中已确定的二进制数。
在一些实施例中,该先验信息包括该第二参数中已确定的至少一个二进制数。
在一些实施例中,该第一索引值为基于该至少一个二进制数确定的一维索引值。
在一些实施例中,该先验信息还包括该当前点的已解码属性分量的取值。
在一些实施例中,该第一索引值为二维索引值,该已解码属性分量的取值用于:确定该第一索引值在一个维度上的取值,该至少一个二进制数用于:确定该第一索引值在另一个维度上的取值。
在一些实施例中,该获取单元310具体用于:
确定该当前点的属性系数是否为0~M中的数值;M为正整数;
若该当前点的属性系数不为0~M中的数值,则获取该第一参数和该第二参数。
在一些实施例中,该获取单元310具体用于:
确定M+1个标志位中的第i个标志位;该第i个标志位的取值指示该当前点的属性系数是否等于i-1,该M+1个标志位中的前i-1个标志位的取值指示该当前点的属性系数不等于0至i-2中的数值。
在一些实施例中,该获取单元310具体用于:
利用固定的上下文、不使用上下文或自适应的上下文,确定该M+1个标志位。
在一些实施例中,该确定单元320还用于:
确定第一标志位;该第一标志位的取值指示是否基于该第一参数和该第二参数确定该当前点的属性系数。
图11是本申请实施例的编码器400的示意性框图。
如图11所示,该编码器400可包括:
获取单元410,用于获取当前点的属性系数;
确定单元420,用于基于该当前点的属性系数,确定该当前点的第一参数和第二参数;
编码单元430,用于对该第一参数和该第二参数进行编码。
在一些实施例中,该确定单元420具体用于:
将该当前点的属性系数减去O,得到第三中间值;O为正整数;
基于该第三中间值,确定该第一参数和该第二参数。
在一些实施例中,该确定单元420具体用于:
将该第三中间值比特右移P位,得到该第一参数和该第二参数;该第一参数为该第三中间值比特右移P位后得到的数值;该第二参数包括该第三中间值比特右移P位时移出的P位二进制数;P为正整数。
在一些实施例中,该确定单元420具体用于:
将该第三中间值比特右移P次,得到该第一参数和该第二参数;该第三中间值每次比特右移的移位位数为1,该第一参数为该第三中间值比特右移P次后得到的数值;该第二参数包括该第三中间值比特右移P次时移出的P个二进制数;P为正整数。
在一些实施例中,该确定单元420具体用于:
将该当前点的属性系数比特右移P位,得到该第一参数和该第二参数;该第一参数为该当前点的属性系数比特右移P位后得到的数值,该第二参数包括该当前点的属性系数比特右移P位时移出的P位二进制数;P为正整数。
在一些实施例中,该确定单元420具体用于:
将该当前点的属性系数比特右移P次,得到该第一参数和该第二参数;该当前点的属性系数每次比特右移的移位位数为1,该第一参数为该当前点的属性系数比特右移P次后得到的数值;该第二参数包括该当前点的属性系数比特右移P次时移出的P个二进制数;P为正整数。
在一些实施例中,该编码单元430具体用于:
利用第一熵编码算法对该第一参数进行编码。
在一些实施例中,该第一熵编码算法为哥伦布编码算法。
在一些实施例中,该编码单元430具体用于:
利用固定的上下文对该第二参数进行编码。
在一些实施例中,该编码单元430具体用于:
不使用上下文对该第二参数进行编码。
在一些实施例中,该编码单元430具体用于:
利用自适应上下文对该第二参数进行编码。
在一些实施例中,该编码单元430具体用于:
确定第一索引值;
基于该第一索引值指示的上下文,对该第二参数中当前二进制数进行编码。
在一些实施例中,该编码单元430具体用于:
将固定的索引值,确定为该第一索引值。
在一些实施例中,该编码单元430具体用于:
若该当前二进制数为该第二参数中的第一个二进制数,则将该固定的索引值确定为该第一索引值。
在一些实施例中,该编码单元430具体用于:
基于该当前二进制数的先验信息,确定第一索引值。
在一些实施例中,该先验信息包括以下中的至少一项:
已编码点的属性系数、已编码点采用的上下文索引值、该当前点的已编码属性分量的取值、该已编码属性分量采用的上下文索引值、该第二参数中已确定的二进制数。
在一些实施例中,若该当前点的属性系数为该当前点的第一个属性分量,则该先验信息包括以下中的至少一项:已编码点的属性系数、已编码点采用的上下文索引值、该第二参数中已确定的二进制数。
在一些实施例中,若该当前点的属性系数不是该当前点的第一个属性分量,则该先验信息包括以下中的至少一项:该当前点的已编码属性分量的取值、该已编码属性分量采用的上下文索引值、该第二参数中已确定的二进制数。
在一些实施例中,该先验信息包括该第二参数中已确定的至少一个二进制数。
在一些实施例中,该第一索引值为基于该至少一个二进制数确定的一维索引值。
在一些实施例中,该先验信息还包括该当前点的已编码属性分量的取值。
在一些实施例中,该第一索引值为二维索引值,该已编码属性分量的取值:确定该第一索引值在一个维度上的取值,该至少一个二进制数用于:确定该第一索引值在另一个维度上的取值。
在一些实施例中,该确定单元420具体用于:
确定该当前点的属性系数是否为0~M中的数值;M为正整数;
若该当前点的属性系数不为0~M中的数值,则确定该第一参数和该第二参数。
在一些实施例中,该编码单元430还用于:
确定M+1个标志位中的第i个标志位;该第i个标志位的取值指示该当前点的属性系数是否等于i-1,该M+1个标志位中的前i-1个标志位的取值指示该当前点的属性系数不等于0至i-2中的数值;
对该第i个标志位进行编码。
在一些实施例中,该编码单元430具体用于:
利用固定的上下文、不使用上下文或自适应的上下文,对该第i个标志位进行编码。
在一些实施例中,该编码单元430还用于:
确定第一标志位;该第一标志位的取值指示是否对该第一参数和该第二参数进行编码;
对该第一标志位进行编码。
应理解,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图10所示的解码器300可以对应于执行本申请实施例的方法100中的相应主体,并且解码器300中的各个单元的前述和其它操作和/或功能分别为了实现方法100等各个方法中的相应流程。类似的,图11所示的编码器400可以对应于执行本申请实施例的方法200中的相应主体,即编码器400中的各个单元的前述和其它操作和/或功能分别为了实现方法200等各个方法中的相应流程。
还应当理解,本申请实施例涉及的解码器300或编码器400中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,该解码器300或编码器400也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。根据本申请的另一个实施例,可以通过在包括例如中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的通用计算机的通用计算设备上运行能够执行相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造本申请实施例涉及的解码器300或编码器400,以及来实现本申请实施例的编码方法或解码方法。计算机程序可以记载于例如计算机可读存储介质上,并通过计算机可读存储介质装载于电子设备中,并在其中运行,来实现本申请实施例的相应方法。
换言之,上文涉及的单元可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过软硬件结合的形式实现。具体地,本申请实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本申请实施例公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件组合执行完成。可选地,软件可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法实施例中的步骤。
图12是本申请实施例提供的电子设备500的示意结构图。
如图12所示,该电子设备500至少包括处理器510以及计算机可读存储介质520。其中,处理器510以及计算机可读存储介质520可通过总线或者其它方式连接。计算机可读存储介质520用于存储计算机程序521,计算机程序521包括计算机指令,处理器510用于执行计算机可读存储介质520存储的计算机指令。处理器510是电子设备500的计算核心以及控制核心,其适于实现一条或多条计算机指令,具体适于加载并执行一条或多条计算机指令从而实现相应方法流程或相应功能。
作为示例,处理器510也可称为中央处理器(Central Processing Unit,CPU)。处理器510可以包括但不限于:通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立元件门或者晶体管逻辑器件、分立硬件组件等等。
作为示例,计算机可读存储介质520可以是高速RAM存储器,也可以是非不稳定的存储器(Non-VolatileMemory),例如至少一个磁盘存储器;可选的,还可以是至少一个位于远离前述处理器510的计算机可读存储介质。具体而言,计算机可读存储介质520包括但不限于:易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(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 Data Rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
在一种实现方式中,该电子设备500可以是本申请实施例涉及的编码器或编码框架;该计算机可读存储介质520中存储有第一计算机指令;由处理器510加载并执行计算机可读存储介质520中存放的第一计算机指令,以实现本申请实施例提供的编码方法中的相应步骤;换言之,计算机可读存储介质520中的第一计算机指令由处理器510加载并执行相应步骤,为避免重复,此处不再赘述。
在一种实现方式中,该电子设备500可以是本申请实施例涉及的解码器或解码框架;该计算机可读存储介质520中存储有第二计算机指令;由处理器510加载并执行计算机可读存储介质520中存放的第二计算机指令,以实现本申请实施例提供的解码方法中的相应步骤;换言之,计算机可读存储介质520中的第二计算机指令由处理器510加载并执行相应步骤,为避免重复,此处不再赘述。
根据本申请的另一方面,本申请实施例还提供了一种编解码系统,包括上文涉及的编码器和解码器。
根据本申请的另一方面,本申请实施例还提供了一种计算机可读存储介质(Memory),计算机可读存储介质是电子设备500中的记忆设备,用于存放程序和数据。例如,计算机可读存储介质520。可以理解的是,此处的计算机可读存储介质520既可以包括电子设备500中的内置存储介质,当然也可以包括电子设备500所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了电子设备500的操作系统。并且,在该存储空间中还存放了适于被处理器510加载并执行的一条或多条的计算机指令,这些计算机指令可以是一个或多个的计算机程序521(包括程序代码)。
根据本申请的另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。例如,计算机程序521。此时,数据处理设备500可以是计算机,处理器510从计算机可读存储介质520读取该计算机指令,处理器510执行该计算机指令,使得该计算机执行上述各种可选方式中提供的编码方法或解码方法。
换言之,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地运行本申请实施例的流程或实现本申请实施例的功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质进行传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元以及流程步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
最后需要说明的是,以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (63)
- 一种解码方法,其特征在于,包括:获取当前点的第一参数和第二参数;基于所述第一参数和所述第二参数,确定所述当前点的属性系数。
- 根据权利要求1所述的方法,其特征在于,所述基于所述第一参数和所述第二参数,确定所述当前点的属性系数,包括:将所述第一参数比特左移P位得到第一中间值;P为正整数;基于所述第一中间值和所述第二参数,确定第二中间值;基于所述第二中间值,确定所述当前点的属性系数。
- 根据权利要求2所述的方法,其特征在于,所述第二参数为P位二进制数。
- 根据权利要求3所述的方法,其特征在于,所述基于所述第一中间值和所述第二参数,确定第二中间值,包括:将所述第一中间值和所述P位二进制数相加,得到所述第二中间值。
- 根据权利要求2所述的方法,其特征在于,所述第二参数为P个二进制数。
- 根据权利要求5所述的方法,其特征在于,所述基于所述第一中间值和所述第二参数,确定第二中间值,包括:基于所述P个二进制数的解码顺序,确定所述P个二进制数中各个二进制数的移位位数;基于所述各个二进制的移位位数对所述各个二进制数进行左移,得到P个第三参数;对所述第一中间值和所述P个第三参数求和,得到所述第二中间值。
- 根据权利要求6所述的方法,其特征在于,所述基于所述P个二进制数的解码顺序,确定所述P个二进制数中各个二进制数的移位位数,包括:将i-1,确定为所述P个二进制数中的第i个二进制数的移位位数;i为正整数。
- 根据权利要求6所述的方法,其特征在于,所述基于所述P个二进制数的解码顺序,确定所述P个二进制数中各个二进制数的移位位数,包括:将P-i,确定为所述P个二进制数中的第i个二进制数的移位位数;i为正整数。
- 根据权利要求2至8中任一项所述的方法,其特征在于,所述基于所述第二中间值,确定所述当前点的属性系数,包括:将所述第二中间值与O进行相加,得到所述当前点的属性系数;O为正整数。
- 根据权利要求2至8中任一项所述的方法,其特征在于,所述基于所述第二中间值,确定所述当前点的属性系数,包括:将所述第二中间值,确定为所述当前点的属性系数。
- 根据权利要求1至10中任一项所述的方法,其特征在于,所述获取当前点的第一参数和第二参数,包括:利用第一熵解码算法确定所述第一参数。
- 根据权利要求11所述的方法,其特征在于,所述第一熵解码算法为哥伦布解码算法。
- 根据权利要求1至10中任一项所述的方法,其特征在于,所述获取当前点的第一参数和第二参数,包括:利用固定的上下文确定所述第二参数。
- 根据权利要求1至10中任一项所述的方法,其特征在于,所述获取当前点的第一参数和第二参数,包括:不使用上下文确定所述第二参数。
- 根据权利要求1至10中任一项所述的方法,其特征在于,所述获取当前点的第一参数和第二参数,包括:利用自适应上下文确定所述第二参数。
- 根据权利要求15所述的方法,其特征在于,所述利用自适应上下文确定所述第二参数,包括:确定第一索引值;基于所述第一索引值指示的上下文,确定所述第二参数中当前二进制数。
- 根据权利要求16所述的方法,其特征在于,所述确定第一索引值,包括:将固定的索引值,确定为所述第一索引值。
- 根据权利要求17所述的方法,其特征在于,所述将固定的索引值,确定为所述第一索引值,包括:若所述当前二进制数为所述第二参数中的第一个二进制数,则将所述固定的索引值确定为所述第一索引值。
- 根据权利要求16所述的方法,其特征在于,所述确定第一索引值,包括:基于所述当前二进制数的先验信息,确定第一索引值。
- 根据权利要求19所述的方法,其特征在于,所述先验信息包括以下中的至少一项:已解码点的属性系数、已解码点采用的上下文索引值、所述当前点的已解码属性分量的取值、所述已解码属性分量采用的上下文索引值、所述第二参数中已确定的二进制数。
- 根据权利要求20所述的方法,其特征在于,若所述当前点的属性系数为所述当前点的第一个属性分量,则所述先验信息包括以下中的至少一项:已解码点的属性系数、已解码点采用的上下文索引值、所述第二参数中已确定的二进制数。
- 根据权利要求20所述的方法,其特征在于,若所述当前点的属性系数不是所述当前点的第一个属性分量,则所述先验信息包括以下中的至少一项:所述当前点的已解码属性分量的取值、所述已解码属性分量采用的上下文索引值、所述第二参数中已确定的二进制数。
- 根据权利要求19至22中任一项所述的方法,其特征在于,所述先验信息包括所述第二参数中已确定的至少一个二进制数。
- 根据权利要求23所述的方法,其特征在于,所述第一索引值为基于所述至少一个二进制数确定的一维索引值。
- 根据权利要求23所述的方法,其特征在于,所述先验信息还包括所述当前点的已解码属性分量的取值。
- 根据权利要求25所述的方法,其特征在于,所述第一索引值为二维索引值,所述已解码属性分量的取值用于:确定所述第一索引值在一个维度上的取值,所述至少一个二进制数用于:确定所述第一索引值在另一个维度上的取值。
- 根据权利要求1至26中任一项所述的方法,其特征在于,所述获取当前点的第一参数和第二参数,包括:确定所述当前点的属性系数是否为0~M中的数值;M为正整数;若所述当前点的属性系数不为0~M中的数值,则获取所述第一参数和所述第二参数。
- 根据权利要求27所述的方法,其特征在于,所述确定所述当前点的属性系数是否为0~M中的数值,包括:确定M+1个标志位中的第i个标志位;所述第i个标志位的取值指示所述当前点的属性系数是否等于i-1,所述M+1个标志位中的前i-1个标志位的取值指示所述当前点的属性系数不等于0至i-2中的数值。
- 根据权利要求28所述的方法,其特征在于,所述确定M+1个标志位中的第i个标志位,包括:利用固定的上下文、不使用上下文或自适应的上下文,确定所述第i个标志位。
- 根据权利要求1至29中任一项所述的方法,其特征在于,所述方法还包括:确定第一标志位;所述第一标志位的取值指示是否基于所述第一参数和所述第二参数确定所述当前点的属性系数。
- 一种编码方法,其特征在于,包括:获取当前点的属性系数;基于所述当前点的属性系数,确定所述当前点的第一参数和第二参数;对所述第一参数和所述第二参数进行编码。
- 根据权利要求31所述的方法,其特征在于,所述基于所述当前点的属性系数,确定所述当前点的第一参数和第二参数,包括:将所述当前点的属性系数减去O,得到第三中间值;O为正整数;基于所述第三中间值,确定所述第一参数和所述第二参数。
- 根据权利要求32所述的方法,其特征在于,所述基于所述第三中间值,确定所述第一参数和所述第二参数,包括:将所述第三中间值比特右移P位,得到所述第一参数和所述第二参数;所述第一参数为所述第三中间值比特右移P位后得到的数值;所述第二参数包括所述第三中间值比特右移P位时移出的P位二进制数;P为正整数。
- 根据权利要求32所述的方法,其特征在于,所述基于所述第三中间值,确定所述第一参数和所述第二参数,包括:将所述第三中间值比特右移P次,得到所述第一参数和所述第二参数;所述第三中间值每次比特右移的移位位数为1,所述第一参数为所述第三中间值比特右移P次后得到的数值;所述第二参数包括所述第三中间值比特右移P次时移出的P个二进制数;P为正整数。
- 根据权利要求31所述的方法,其特征在于,所述基于所述当前点的属性系数,确定所述当前点的第一参数和第二参数,包括:将所述当前点的属性系数比特右移P位,得到所述第一参数和所述第二参数;所述第一参数为所述当前点的属性系数比特右移P位后得到的数值,所述第二参数包括所述当前点的属性系数比特右移P位时移出的P位二进制数;P为正整数。
- 根据权利要求31所述的方法,其特征在于,所述基于所述当前点的属性系数,确定所述当前点的第一参数和第二参数,包括:将所述当前点的属性系数比特右移P次,得到所述第一参数和所述第二参数;所述当前点的属性系数每次比特右移的移位位数为1,所述第一参数为所述当前点的属性系数比特右移P次后得到的数值;所述第二参数包括所述当前点的属性系数比特右移P次时移出的P个二进制数;P为正整数。
- 根据权利要求31至36中任一项所述的方法,其特征在于,所述对所述第一参数和所述第二参数进行编码,包括:利用第一熵编码算法对所述第一参数进行编码。
- 根据权利要求37所述的方法,其特征在于,所述第一熵编码算法为哥伦布编码算法。
- 根据权利要求31至36中任一项所述的方法,其特征在于,所述对所述第一参数和所述第二参数进行编码,包括:利用固定的上下文对所述第二参数进行编码。
- 根据权利要求31至36中任一项所述的方法,其特征在于,所述对所述第一参数和所述第二参数进行编码,包括:不使用上下文对所述第二参数进行编码。
- 根据权利要求31至36中任一项所述的方法,其特征在于,所述对所述第一参数和所述第二参数进行编码,包括:利用自适应上下文对所述第二参数进行编码。
- 根据权利要求41所述的方法,其特征在于,所述利用自适应上下文对所述第二参数进行编码,包括:确定第一索引值;基于所述第一索引值指示的上下文,对所述第二参数中当前二进制数进行编码。
- 根据权利要求42所述的方法,其特征在于,所述确定第一索引值,包括:将固定的索引值,确定为所述第一索引值。
- 根据权利要求43所述的方法,其特征在于,所述将固定的索引值,确定为所述第一索引值,包括:若所述当前二进制数为所述第二参数中的第一个二进制数,则将所述固定的索引值确定为所述第一索引值。
- 根据权利要求42所述的方法,其特征在于,所述确定第一索引值,包括:基于所述当前二进制数的先验信息,确定第一索引值。
- 根据权利要求45所述的方法,其特征在于,所述先验信息包括以下中的至少一项:已编码点的属性系数、已编码点采用的上下文索引值、所述当前点的已编码属性分量的取值、所述已编码属性分量采用的上下文索引值、所述第二参数中已确定的二进制数。
- 根据权利要求45所述的方法,其特征在于,若所述当前点的属性系数为所述当前点的第一个属性分量,则所述先验信息包括以下中的至少一项:已编码点的属性系数、已编码点采用的上下文索引值、所述第二参数中已确定的二进制数。
- 根据权利要求45所述的方法,其特征在于,若所述当前点的属性系数不是所述当前点的第一个属性分量,则所述先验信息包括以下中的至少一项:所述当前点的已编码属性分量的取值、所述已编码属性分量采用的上下文索引值、所述第二参数中已确定的二进制数。
- 根据权利要求45至48中任一项所述的方法,其特征在于,所述先验信息包括所述第二参数中已确定的至少一个二进制数。
- 根据权利要求49所述的方法,其特征在于,所述第一索引值为基于所述至少一个二进制数确定的一维索引值。
- 根据权利要求49所述的方法,其特征在于,所述先验信息还包括所述当前点的已编码属性分量的取值。
- 根据权利要求51所述的方法,其特征在于,所述第一索引值为二维索引值,所述已编码属性分量的取值用于:确定所述第一索引值在一个维度上的取值,所述至少一个二进制数用于:确定所述第一索引值在另一个维度上的取值。
- 根据权利要求31至52中任一项所述的方法,其特征在于,所述确定所述当前点的第一参数和第二参数,包括:确定所述当前点的属性系数是否为0~M中的数值;M为正整数;若所述当前点的属性系数不为0~M中的数值,则确定所述第一参数和所述第二参数。
- 根据权利要求53所述的方法,其特征在于,所述方法还包括:确定M+1个标志位中的第i个标志位;所述第i个标志位的取值指示所述当前点的属性系数是否等于i-1,所述M+1个标志位中的前i-1个标志位的取值指示所述当前点的属性系数不等于0至i-2中的数值;对所述第i个标志位进行编码。
- 根据权利要求54所述的方法,其特征在于,所述对所述第i个标志位进行编码,包括:利用固定的上下文、不使用上下文或自适应的上下文,对所述第i个标志位进行编码。
- 根据权利要求31至55中任一项所述的方法,其特征在于,所述方法还包括:确定第一标志位;所述第一标志位的取值指示是否对所述第一参数和所述第二参数进行编码;对所述第一标志位进行编码。
- 一种解码器,其特征在于,包括:获取单元,用于获取当前点的第一参数和第二参数;确定单元,用于基于所述第一参数和所述第二参数,确定所述当前点的属性系数。
- 一种编码方法,其特征在于,包括:获取单元,用于获取当前点的属性系数;确定单元,用于基于所述当前点的属性系数,确定所述当前点的第一参数和第二参数;编码单元,用于对所述第一参数和所述第二参数进行编码。
- 一种解码器,其特征在于,包括:处理器,适于执行计算机程序;计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被所述处理器执行时,实现根据权利要求1至30中任一项所述的方法。
- 一种编码器,其特征在于,包括:处理器,适于执行计算机程序;计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被所述处理器执行时,实现根据权利要求31至56中任一项所述的方法。
- 一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序使得计算机执行根据权利要求1至30中任一项所述的方法或根据权利要求31至56中任一项所述的方法。
- 一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现根据权利要求1至30中任一项所述的方法或根据权利要求31至56中任一项所述的方法。
- 一种码流,其特征在于,所述码流为权利要求1至30中任一项所述的方法解码的码流或根据权利要求31至56中任一项所述的方法生成的码流。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNPCT/CN2023/070260 | 2023-01-04 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2024145953A1 true WO2024145953A1 (zh) | 2024-07-11 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022133753A1 (zh) | 点云编解码方法与系统、及点云编码器与点云解码器 | |
JP2023543752A (ja) | 点群コーデック方法及びシステム、並びに点群エンコーダ及び点群デコーダ | |
CN114598883A (zh) | 点云属性的预测方法、编码器、解码器及存储介质 | |
WO2024145953A1 (zh) | 解码方法、编码方法、解码器以及编码器 | |
WO2023015530A1 (zh) | 点云编解码方法、编码器、解码器及计算机可读存储介质 | |
WO2023240660A1 (zh) | 解码方法、编码方法、解码器以及编码器 | |
WO2024077548A1 (zh) | 点云解码方法、点云编码方法、解码器和编码器 | |
WO2024103304A1 (zh) | 点云编解码方法、编码器、解码器、码流及存储介质 | |
WO2023197337A1 (zh) | 索引确定方法、装置、解码器以及编码器 | |
WO2023240662A1 (zh) | 编解码方法、编码器、解码器以及存储介质 | |
WO2023197338A1 (zh) | 索引确定方法、装置、解码器以及编码器 | |
WO2023097694A1 (zh) | 解码方法、编码方法、解码器以及编码器 | |
WO2024082152A1 (zh) | 编解码方法及装置、编解码器、码流、设备、存储介质 | |
WO2023023918A1 (zh) | 解码方法、编码方法、解码器以及编码器 | |
WO2022217472A1 (zh) | 点云编解码方法、编码器、解码器及计算机可读存储介质 | |
WO2024065272A1 (zh) | 点云编解码方法、装置、设备及存储介质 | |
WO2024065406A1 (zh) | 编解码方法、码流、编码器、解码器以及存储介质 | |
WO2023173237A1 (zh) | 编解码方法、码流、编码器、解码器以及存储介质 | |
WO2022140937A1 (zh) | 点云编解码方法与系统、及点云编码器与点云解码器 | |
WO2022257155A1 (zh) | 解码方法、编码方法、解码器、编码器以及编解码设备 | |
WO2023173238A1 (zh) | 编解码方法、码流、编码器、解码器以及存储介质 | |
WO2024065270A1 (zh) | 点云编解码方法、装置、设备及存储介质 | |
WO2024119420A1 (zh) | 编解码方法、码流、编码器、解码器以及存储介质 | |
WO2024065269A1 (zh) | 点云编解码方法、装置、设备及存储介质 | |
WO2023240455A1 (zh) | 点云编码方法、编码装置、编码设备以及存储介质 |