WO2024140684A1 - 端云协同系统、编解码方法及电子设备 - Google Patents
端云协同系统、编解码方法及电子设备 Download PDFInfo
- Publication number
- WO2024140684A1 WO2024140684A1 PCT/CN2023/141965 CN2023141965W WO2024140684A1 WO 2024140684 A1 WO2024140684 A1 WO 2024140684A1 CN 2023141965 W CN2023141965 W CN 2023141965W WO 2024140684 A1 WO2024140684 A1 WO 2024140684A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- rendering
- block
- intermediate result
- prediction
- current frame
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 480
- 238000009877 rendering Methods 0.000 claims abstract description 1329
- 230000008569 process Effects 0.000 claims abstract description 292
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 claims abstract description 246
- 238000001914 filtration Methods 0.000 claims abstract description 106
- 238000012545 processing Methods 0.000 claims abstract description 83
- 239000013598 vector Substances 0.000 claims description 29
- 238000004891 communication Methods 0.000 claims description 24
- 230000000903 blocking effect Effects 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 14
- 238000006073 displacement reaction Methods 0.000 claims description 7
- 230000003993 interaction Effects 0.000 abstract description 10
- 230000000875 corresponding effect Effects 0.000 description 250
- 238000010586 diagram Methods 0.000 description 70
- 230000000694 effects Effects 0.000 description 42
- 238000013139 quantization Methods 0.000 description 39
- 239000000463 material Substances 0.000 description 29
- 230000006870 function Effects 0.000 description 26
- 230000003068 static effect Effects 0.000 description 26
- 230000009466 transformation Effects 0.000 description 17
- 239000011159 matrix material Substances 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 8
- 238000013459 approach Methods 0.000 description 7
- 230000002596 correlated effect Effects 0.000 description 7
- 239000011521 glass Substances 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- -1 AR helmet Substances 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 239000003086 colorant Substances 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 101000827703 Homo sapiens Polyphosphoinositide phosphatase Proteins 0.000 description 2
- 102100023591 Polyphosphoinositide phosphatase Human genes 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 101100012902 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) FIG2 gene Proteins 0.000 description 1
- 101100233916 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) KAR5 gene Proteins 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Abstract
本申请实施例提供了一种端云协同系统、编解码方法及电子设备。该编码方法包括:基于渲染参数对三维场景进行渲染处理,以得到经渲染的图像;基于渲染处理过程中产生的渲染中间结果,选取第一渲染中间结果;基于第一渲染中间结果对经渲染的图像进行编码,以得到残差块的编码数据并将残差块的编码数据写入码流;第一渲染中间结果作用于编码过程中的至少一项处理:分块、预测或滤波;码流不包括第一渲染中间结果的编码数据,第二渲染中间结果为第一渲染中间结果的部分。这样,服务器可以不发送渲染中间结果至终端设备,能够在保证有效降低服务器传输至终端设备数据流的开销的情况下,降低交互延迟。
Description
本申请要求于2022年12月29日提交中国国家知识产权局、申请号为202211708155.1、申请名称为“端云协同系统、编解码方法及电子设备”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
本申请实施例涉及编解码领域,尤其涉及一种端云协同系统、编解码方法及电子设备。
很多场景(如游戏、虚拟现实(Virtual Reality,VR)/增强现实(Augmented Reality,AR)等)需要使用渲染生成画面,以使得到的画面更真实,提高用户使用体验。其中,渲染需要比较强的算力,而端侧设备受限于设备尺寸、功耗等客观物理条件的限制,往往算力远远弱于云侧服务器;因此,通常会把渲染部署在云侧服务器上,由云侧服务器进行渲染,然后将渲染后的图像/视频压缩发送端侧设备,由端侧设备进行显示。
随着人们对渲染质量的要求不断提高以及显示设备清晰度的不断提升,渲染后的图像/视频的图像质量以及分辨率也随之不断提高,这会导致渲染后的图像/视频压缩后的码率开销增大,进而增加网络带宽占用,导致较大的交互延迟。现有技术中,云侧服务器通常会编码以及传输渲染得的低分辨率的图像/视频,以及传输渲染高分辨率图像/视频过程中产生的渲染中间结果至端侧设备。端侧设备利用云侧服务器下发的渲染中间结果,对云侧下发的渲染所得到的低分辨率图像/视频进行上采样,生成高分辨率待显示图像/视频并显示。这样,虽然能够一定程度的降低码率开销,但编码效率仍然较为低下。
发明内容
有鉴于此,本申请提供一种端云协同系统、编解码方法及电子设备。该编解码方法基于该端云协同系统实现,能够在保证有效降低服务器传输至终端设备数据流的码率开销的情况下,降低交互延迟。
第一方面,本申请实施例提供一种端云协同系统,该端云协同系统包括服务器和终端设备,服务器包括第一渲染模块、编码器和第一通信模块,终端设备包括第二通信模块、第二渲染模块和解码器;其中:
第一渲染模块,用于基于渲染参数对三维场景进行渲染处理,以得到经渲染的图像;其中,渲染参数包括从终端设备获取的第一渲染参数;基于渲染处理过程中产生的渲染中间结果,选取第一渲染中间结果;
编码器,用于基于第一渲染中间结果对经渲染的图像进行编码,以得到残差块的编码数据并将残差块的编码数据写入码流;其中,残差块是通过经渲染的图像中待编码块与对应预测块进行残差得到,预测块是通过对待编码块进行预测得到;第一渲染中间结果作用于编码过程中的至少一项处理:分块、预测或滤波;码流不包括第一渲染中间结果的编码数据;
第一通信模块,用于发送码流;
第二通信模块,用于接收码流;
解码器,用于对码流进行解析,以得到解析结果,解析结果包括当前帧对应的残差块;
第二渲染模块,用于基于当前帧对应的渲染参数对三维场景进行渲染处理,并在渲染处理过程中生成第一渲染中间结果;其中,当前帧对应的渲染参数包括终端设备生成的第一渲染参数;
解码器,还用于基于第二渲染模块生成的第一渲染中间结果和当前帧对应的残差块进行重建,以得到当前帧的重建图像;其中,第二渲染模块生成的第一渲染中间结果作用于重建过程中的至少一项处理:预测或滤波。
这样,将全部的渲染放在终端设备执行,进而服务器可以不发送渲染中间结果至终端设备;因此本申请能够在保证有效降低服务器传输至终端设备数据流的码率开销的情况下,降低交互延迟。此外,由于渲染中间结果与经渲染的图像的相关性较强,本申请基于渲染中间结果对经渲染的图像进行编码,能够保证图像重建质量。
此外,本申请涉及的编码器是对现有编码器进行修改后(或者优化后)的编码器,能够基于第一渲染中间结果对经渲染的图像进行编码。或者说,本申请涉及的编码器能够基于第一渲染中间结果对经渲染的图像进行编码,且包含现有编码器的全部或部分功能。本申请涉及的解码器是对现有解码器进行修改后(或者优化后)的解码器,能够基于第一渲染中间结果进行解码。或者说,本申请涉及的解码器能够基于第一渲染中间结果进行解码,且包含现有解码器的全部或部分功能。这样,能够充分利用渲染中间结果,进一步提高编码效率。
示例性的,服务器可以是游戏服务器,服务器可以是单个服务器,也可以是服务器集群,本申请对此不作限制。
示例性的,终端设备包括但不限于:个人计算机、计算机工作站、智能手机、平板电脑、服务器、智能摄像头、智能汽车或其他类型蜂窝电话、媒体消费设备、可穿戴设备(如VR/AR头盔、VR眼镜)、机顶盒、游戏机等。
示例性的,渲染参数可以是指输入至图形渲染引擎且是图形渲染引擎进行渲染处理所需的全部参数,可以包括各类用于渲染的参数、所有光源的位置和颜色向量、玩家或者观察者的位置向量、每个纹理的采样方式以及每个场景对象的位置坐标等信息、运动物体的运动轨迹、骨骼动画参数等等,本申请对此不作限制。
示例性的,渲染中间结果可以是指图形渲染引擎在生成待显示图像(即经渲染的图像)/视频(即经渲染的视频)过程中,所产生的用于生成待显示图像/视频的中间数据。示例性的,渲染中间结果可以包括但不限于:计算机图形运动矢量(Computer Graphics Motion Vector,CGMV),渲染中间图像(渲染中间图像是指在生成最终的渲染图像(也就是上述的经渲染的图像)之前生成的图像,渲染中间图像的计算复杂度低于经渲染的图像的计算复杂度;其中,渲染中间图像可以如未进行间接光照渲染的渲染中间图像、未进行镜面反射处理的渲染中间图像、未进行高光处理的渲染中间图像等),位置图(position map),法线图(normal map),反照率图(albedo map),镜面强度图(specular intensity map),网格标识(Mesh ID),材质ID(Material ID)(其中,每个材质贴图对应一个Material ID),渲染ID(Render ID)(每一个对象(或者一个三维物体模型)对应一个Render ID),深度信息等等,本申请对此不作限制。其中,第一渲染中间结果是渲染处理过程中所产生的所有渲染中间结果的部分。需要说明的是,终端设备生成的第一渲染中间结果所包含中间结果的类型,与服务器生成的第一渲染中间结果所包括中间结果的类型相同,终端设备生成的第一渲染中间结果所包含中间结果的精度,小于或等于服务器生成的第一渲染中间结果所包括中间结果的精度。
应该理解的是,当服务器对残差块是有损编码时,则终端设备解析得到的残差块与服务器编码的残差块存在差异。当服务器对残差块是无损编码时,则终端设备解析得到的残差块与服务器编码的残差块相同。
应该理解的是,本申请的服务器可以包括比上述涉及的更多或更少的模块,本申请对此不作限制。本申请的终端设备可以包括比上述涉及的更多或更少的模块,本申请对此不作限制。
应该理解的是,本申请对编码器和解码器使用的视频编码标准不作限制,例如可以包括但不限于:H.264/AVC(Advanced Video Coding,高级视频编码),H.265/HEVC(High Efficiency Video Coding,高效率视频编码),H.266/VVC(Versatile Video Coding,多功能视频编码),AV1(AOMedia Video 1,“AOMedia”指的是开放媒体视频联盟开发的一种视频编码)等,以及这些视频编码标准的扩展标准;此外,还可以包括随着视频编解码技术的发展所产生的新的视频编码标准及扩展标准。
第二方面,本申请实施例提供一种编码方法,应用于服务器,该方法包括:首先,基于渲染参数对三维场景进行渲染处理,以得到经渲染的图像;其中,渲染参数包括从终端设备获取的第一渲染参数;接着,基于渲染处理过程中产生的渲染中间结果,选取第一渲染中间结果;之后,基于第一渲染中间结果对经渲染的图像进行编码,以得到残差块的编码数据并将残差块的编码数据写入码流;其中,残差块是通过经渲染的图像中待编码块与对应预测块进行残差得到,预测块是通过对待编码块进行预测得到;第一渲染中间结果作用于编码过程中的至少一项处理:分块、预测或滤波;码流不包括第一渲染中间结果的编码数据。
这样,将全部的渲染放在终端设备执行,进而服务器可以不发送渲染中间结果至终端设备;因此本申请能够在保证有效降低服务器传输至终端设备数据流的码率开销的情况下,降低交互延迟。此外,由于渲染中间结果与经渲染的图像的相关性较强,本申请基于渲染中间结果对经渲染的图像进行编码,能够保证图像重建质量。
需要说明的是,本申请涉及编码方法,可以由本申请涉及的编码器执行。这样,能够充分利用渲染中间结果,进一步提高编码效率。
示例性的,第一渲染中间结果是渲染处理过程中产生的渲染中间结果中的部分;例如,第一渲染中间结果为CGMV、深度信息和Render ID等等。
示例性的,在编码经渲染的图像过程中,可以先对经渲染的图像进行分块,以得到多个待编码块;针对一个待编码块,可以基于已滤波的重建块,对该待编码块进行预测,以得到预测块;然后确定待编码块与预测块之间的残差块;接着,可以对残差块进行编码,并将残差块的编码数据写入码流。
示例性的,可以对残差块进行变换、量化以及熵编码等处理,以得到残差块的编码数据。
应该理解的是,第一渲染中间结果还可以作用于编码过程中的其他项处理如熵编码等,本申请对此不作限制。
根据第二方面,码流还包括:第一指示标识和/或第二指示标识,其中,第一指示标识用于指示码流是否包括第一渲染中间结果的编码数据;第二指示标识用于指示第一渲染中间结果的类型。这样,便于终端设备获知码流中是否包含第一渲染中间结果,以及获知生成何种类型的第一渲染中间结果。
示例性的,可以将第一渲染中间结果划分为多种类型,例如,运动矢量类、第一图像类、第二图像类等等。其中,当第一渲染中间结果为CGMV时,对应的类型可以是运动矢量类。当第一渲染中间结果为深度信息时,对应的类型可以是第一图像类。当第一渲染中间结果为Render ID时,对应的类型可以是第二图像类。应该理解的是,第一渲染中间结果还可以包括其他类型,本申请对此不作限制。
根据第二方面,或者以上第二方面的任意一种实现方式,渲染参数还包括服务器生成的第二渲染参数;该方法还包括:将第三渲染参数,写入码流,其中,第三渲染参数包括第二渲染参数中的全部参数或部分参数。
由于服务器生成的渲染参数,比终端设备生成的渲染参数更精确;进而,服务器可以将部分或全部的第二渲染参数发送给终端设备,这样,能够使得终端设备生成的第一渲染中间结果更精确,从而提高基于第一渲染中间结果解码出的图像的图像质量。
此外,第二渲染参数的数据量较小(几/几十kB),远小于渲染中间结果;因此即使本申请发送渲染参数给终端设备,本申请服务器发送至终端设备数据流的码率开销,也小于现有技术服务器发送至终端设备数据流的码率开销。且还能够节省终端设备的算力。
需要说明的是,第一渲染参数和第二渲染参数,可以组成渲染参数(即指输入至图形渲染引擎且是图形渲染引擎进行渲染处理所需的全部参数)。
示例性的,可以对第三渲染参数进行编码,并将第三渲染参数的编码数据写入码流;也可以无需对第三渲染参数进行编码,而是直接将第三渲染参数添加至码流中,本申请对此不作限制。
根据第二方面,或者以上第二方面的任意一种实现方式,渲染参数还包括服务器生成的第二渲染参数;码流还包括:第三指示标识和/或第四指示标识,其中:第三指示标识用于指示码流是否包括第三渲染参数,其中,第三渲染参数包括第二渲染参数中的全部参数或部分参数;第四指示标识用于指示第三渲染参数的类型。这样,便于终端设备获知码流中是否包含第三渲染参数;以及当第三渲染参数为部分第二渲染参数时,终端设备可以根据第三渲染参数的类型,生成第四渲染参数,其中,第四渲染参数为第二渲染参数中除第三渲染参数之外的部分。
示例性的,可以将第二渲染参数划分为多种类型,例如:类型C1、类型C2。示例性的,第二渲染参数可以包括:刚性运动物体的运动信息和非刚性动态物体的运动信息;刚性运动物体的运动信息对应的类型为类型C1,非刚性动态物体的运动信息对应的类型为类型C2。
一种可能的方式中,第三渲染参数可以包括:刚性运动物体的运动信息和非刚性动态物体的运动信息。
一种可能的方式中,第三渲染参数可以包括:刚性运动物体的运动信息。这样,相对于包括刚性运动物体的运动信息和非刚性动态物体的运动信息的第三渲染参数而言,能够进一步降低服务器传输至终端设备的数据流的码率开销。
一种可能的方式中,第三渲染参数可以包括:非刚性动态物体的运动信息。这样,相对于包括刚性运动物体的运动信息和非刚性动态物体的运动信息的第三渲染参数而言,能够进一步降低服务器传输至终端
设备的数据流的码率开销。
根据第二方面,或者以上第二方面的任意一种实现方式,第一渲染中间结果作用于编码过程中的分块,待编码块为预测单元;基于第一渲染中间结果对经渲染的图像进行编码,以得到残差块的编码数据,包括:基于第一渲染中间结果对经渲染的图像进行分块,以得到多个预测单元;基于重建块对多个预测单元进行预测,以得到多个预测块,多个预测块与多个预测单元一一对应;对多个预测块与多个预测单元之间的多个残差块进行编码,以得到多个残差块的编码数据,多个残差块与多个预测单元一一对应。
由于第一渲染中间结果与经渲染的图像具有较强的相关性,因此基于第一渲染中间结果能够合理的对经渲染的图像进行分块,以得到更好的预测效果;而预测效果更好时,确定的残差块更小,能够降低码率;且还能够提高图像的重建质量。
根据第二方面,或者以上第二方面的任意一种实现方式,第一渲染中间结果作用于编码过程中的预测;基于第一渲染中间结果对经渲染的图像进行编码,以得到残差块的编码数据,包括:基于重建块和第一渲染中间结果,对经渲染的图像中待编码块进行预测,以得到待编码块对应的预测块;对待编码块和待编码块对应的预测块之间的残差块进行编码,以得到残差块的编码数据。
由于第一渲染中间结果与经渲染的图像具有较强的相关性,因此基于第一渲染中间结果进行预测得到的预测块与待编码块之间的残差块较小,进而能够降低码率。
根据第二方面,或者以上第二方面的任意一种实现方式,第一渲染中间结果作用于编码过程中的滤波;基于第一渲染中间结果对经渲染的图像进行编码,以得到残差块的编码数据,包括:基于重建块对经渲染的图像中的待编码块进行预测,以得到待编码块对应的预测块,重建块为基于第一渲染中间结果经滤波的重建块;对待编码块和待编码块对应的预测块之间的残差块进行编码,以得到残差块的编码数据。
由于第一渲染中间结果与经渲染的图像具有较强的相关性,进而经过第一渲染中间经滤波的重建块的质量更好;这样,以已滤波的重建块为参考,对经渲染的图像中的待编码进行编码,能够降低码率。
根据第二方面,或者以上第二方面的任意一种实现方式,第一渲染中间结果还作用于编码过程中的预测;基于重建块对多个预测单元进行预测,以得到多个预测块,包括:基于重建块和第一渲染中间结果,对多个预测单元进行预测,以得到多个预测块。这样,将第一渲染中间结果作用于编码过程中的分块和预测,能够进一步提高预测效果;进而能够进一步降低码率且还能够进一步提高图像的重建质量。
根据第二方面,或者以上第二方面的任意一种实现方式,第一渲染中间结果还作用于编码过程中的滤波,重建块为基于第一渲染中间结果经滤波的重建块。这样,可以将第一渲染中间结果作用于编码过程中的分块、预测和滤波;或者,作用于分块和滤波;或者,作用于预测和滤波;进而能够进一步降低码率且还能够进一步提高图像的重建质量。
根据第二方面,或者以上第二方面的任意一种实现方式,第一渲染中间结果为深度信息,基于第一渲染中间结果对经渲染的图像进行分块,以得到多个预测单元,包括:将经渲染的图像划分为多个编码单元;基于深度信息,生成计算机图形边缘CGE信息,CGE信息包括经渲染的图像中对象的对象边缘信息;基于CGE信息分别对多个编码单元进行划分,以得到多个预测单元。
其中,CGE信息包括了经渲染的图像中对象的对象边缘信息;基于CGE信息进行PU划分,能够将编码单元合理的划分为多个PU,进而使得后续得到更好的预测效果(例如,后续预测得到的预测块更准确);而预测效果更好时,确定的残差块更小,能够降低码率;且还能够提高图像的重建质量。此外,相对于现有技术划分PU的方式而言,基于CGE信息划分PU的计算量更小。
根据第二方面,或者以上第二方面的任意一种实现方式,第一渲染中间结果为计算机图形运动矢量CGMV,CGMV用于描述经渲染的图像中像素点与经渲染的图像的参考帧中像素点之间的位移关系;基于重建块和第一渲染中间结果,对经渲染的图像中待编码块进行预测,以得到待编码块对应的预测块,包括:从经渲染的图像的参考帧中,确定与待编码块匹配的重建块;基于CGMV和与待编码块匹配的重建块,
生成预测块。
其中,CGMV是图形学手段生成的,避免了现有编码器运动估计不准的问题;且CGMV是像素级的MV,而现有编码器生成的MV是图像块级别的MV,像素级的MV能够更加准确地描绘物体的边缘,降低预测误差;因此,基于CGMV来确定预测块,能够一定程度的减少预测块的误差,提高预测块的准确性,继而能够提升帧间编码压缩效率。
根据第二方面,或者以上第二方面的任意一种实现方式,第一渲染中间结果为渲染标识Render ID,Render ID用于描述重建块中像素点所属的对象;该方法还包括:基于Render ID,确定滤波参数;基于滤波参数对重建块进行滤波。相对于现有技术而言,通过Render ID来判断重建块边界线两侧像素是否属于同一对象,来确定滤波参数并基于滤波参数进行经滤波,能够更好的降低重建块之间的块效应,进而能够提高重建块的质量。这样,以已滤波的重建块为参考,对经渲染的图像中的待编码进行编码,能够降低码率。
根据第二方面,或者以上第二方面的任意一种实现方式,编码CGE信息,将CGE信息的编码数据写入码流。这样,终端设备可以无需生成CGE信息,直接基于CGE信息确定分块信息即可,可以减少终端设备的算力。
第三方面,本申请实施例提供一种解码方法,该解码方法包括:首先,接收码流;接着,对码流进行解析,以得到解析结果,解析结果包括当前帧对应的残差块;之后,基于当前帧对应的渲染参数对三维场景进行渲染处理,并在渲染处理过程中生成第一渲染中间结果;其中,渲染参数包括终端设备生成的第一渲染参数;随后,基于第一渲染中间结果和残差块进行重建,以得到当前帧的重建图像;其中,第一渲染中间结果作用于重建过程中的至少一项处理:预测或滤波。
需要说明的是,本申请涉及解码方法,可以由本申请涉及的编码器执行。
根据第三方面,解析结果还包括:第一指示标识和第二指示标识,第一指示标识用于指示码流是否包括服务器生成的第一渲染中间结果的编码数据,第二指示标识用于指示服务器生成的第一渲染中间结果的类型;在渲染处理过程中生成第一渲染中间结果,包括:当基于第一指示标识确定码流不包括服务器生成的第一渲染中间结果的编码数据时,基于第二指示标识,在渲染处理过程中生成第一渲染中间结果。
根据第三方面,或者以上第三方面的任意一种实现方式,解析结果还包括:第三指示标识和第四指示标识;第三指示标识用于指示码流是否包括第三渲染参数,第四指示标识用于指示第三渲染参数的类型;该方法还包括:当基于第三指示标识确定码流包括第三渲染参数时,基于第四指示标识,确定第三渲染参数的类型;基于第三渲染参数的类型,生成其他类型的第四渲染参数;其他类型为服务器生成的第二渲染参数对应的多种类型中,除第三渲染参数的类型之外的类型;其中,渲染参数还包括第三渲染参数和第四渲染参数。
这样,当服务器向终端设备的第三渲染参数是部分第二渲染参数时,终端设备可以根据码流中的第四指示标识,生成第二渲染参数中除第三渲染参数之外的其他渲染参数,以得到图形渲染引擎进行渲染处理所需的全部渲染参数。
示例性的,当根据第四指示标识,确定第三渲染参数是全部第二渲染参数时,渲染参数还包括第三渲染参数。
应该理解的是,当服务器对第三渲染参数是有损编码时,则终端设备解析得到的第三渲染参数与服务器编码的第三渲染参数存在差异。当服务器对第三渲染参数是无损编码时,则终端设备解析得到的第三渲染参数与服务器编码的第三渲染参数相同。
根据第三方面,或者以上第三方面的任意一种实现方式,该方法还包括:当基于第三指示标识确定码流不包括第三渲染参数时,终端设备生成当前帧对应的第二渲染参数;其中,渲染参数还包括终端设备生成的第二渲染参数。
这样,当服务器未向终端设备发送第二渲染参数时,终端设备还可以生成第二渲染参数,以得到图形渲染引擎进行渲染处理所需的全部渲染参数。
应该理解的是,终端设备生成的第二渲染参数包含的参数类型,与服务器生成的第二渲染参数包含的参数类型相同,终端设备生成的第二渲染参数包含的参数的精度,小于或等于服务器生成的第二渲染参数包含的参数的精度。
根据第三方面,或者以上第三方面的任意一种实现方式,残差块为多个,第一渲染中间结果作用于重建过程中的预测;基于第一渲染中间结果和残差块进行重建,以得到当前帧的重建图像,包括:基于第一渲染中间结果,确定当前帧的分块信息;基于分块信息和重建块,对当前帧包括的多个预测单元进行预测,以得到多个预测块,多个预测块与多个预测单元一一对应,多个残差块与多个预测单元一一对应;基于多个残差块和多个预测块,确定当前帧的重建图像。
根据第三方面,或者以上第三方面的任意一种实现方式,第一渲染中间结果作用于重建过程中的预测;基于第一渲染中间结果和残差块进行重建,以得到当前帧的重建图像,包括:基于第一渲染中间结果和重建块,对当前帧中待解码块进行预测,以得到待解码块对应的预测块;基于当前帧对应的残差块中与待解码块对应的残差块和待解码块对应的预测块,确定当前帧的重建图像。
根据第三方面,或者以上第三方面的任意一种实现方式,第一渲染中间结果作用于重建过程中的滤波;基于第一渲染中间结果和残差块进行重建,以得到当前帧的重建图像,包括:基于重建块对当前帧中待解码块进行预测,以得到待解码块对应的预测块,重建块为基于第一渲染中间结果经滤波的重建块;基于当前帧对应的残差块中与待解码块对应的残差块和待解码块对应的预测块,确定当前帧的重建图像。
根据第三方面,或者以上第三方面的任意一种实现方式,基于分块信息和重建块,对当前帧包括的多个预测单元进行预测,以得到多个预测块,包括:基于分块信息、第一渲染中间结果和重建块,对当前帧包括的多个预测单元进行预测,以得到多个预测块。
根据第三方面,或者以上第三方面的任意一种实现方式,第一渲染中间结果还作用于重建过程中的滤波,重建块为基于第一渲染中间结果经滤波的重建块。
根据第三方面,或者以上第三方面的任意一种实现方式,第一渲染中间结果为深度信息,基于第一渲染中间结果,确定当前帧的分块信息,包括:基于深度信息,生成计算机图形边缘CGE信息,CGE信息包括当前帧中对象的对象边缘信息;基于CGE信息,确定当前帧的分块信息。
根据第三方面,或者以上第三方面的任意一种实现方式,第一渲染中间结果为计算机图形运动矢量CGMV,CGMV用于描述当前帧的像素点与当前帧的参考帧的像素点之间的位移关系,基于第一渲染中间结果和重建块,对当前帧中待解码块进行预测,以得到待解码块对应的预测块,包括:从当前帧的参考帧中,确定与待解码块匹配的重建块;基于CGMV和与待解码块匹配的重建块,生成待解码块对应的预测块。
根据第三方面,或者以上第三方面的任意一种实现方式,第一渲染中间结果为渲染标识Render ID,Render ID用于描述重建块中像素点所属的对象;该方法还包括:基于Render ID,确定滤波参数;基于滤波参数对重建块进行滤波。
根据第三方面,或者以上第三方面的任意一种实现方式,残差块为多个,第一渲染中间结果作用于重建过程中的预测;解码结果还包括CGE信息,CGE信息包括当前帧中对象的对象边缘信息;基于第一渲染中间结果和残差块进行重建,以得到当前帧的重建图像,包括:基于CGE信息,确定当前帧的分块信息;基于分块信息和重建块,对当前帧包括的多个预测单元进行预测,以得到多个预测块,多个预测块与多个预测单元一一对应,多个残差块与多个预测单元一一对应;基于多个残差块和多个预测块,确定当前帧的重建图像。
第三方面以及第三方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对
应。第三方面以及第三方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第四方面,本申请还提供一种端云协同系统,该端云协同系统包括:服务器和终端设备,服务器包括第一渲染模块、编码器和第一通信模块,终端设备包括第二通信模块、第二渲染模块和解码器;其中:
第一渲染模块,用于基于渲染参数对三维场景进行渲染处理,以得到经渲染的图像;其中,渲染参数包括从终端设备获取的第一渲染参数;基于渲染处理过程中产生的渲染中间结果,选取第一渲染中间结果;
编码器,用于基于第一渲染中间结果对经渲染的图像进行编码,以得到残差块的编码数据并将残差块的编码数据写入码流;以及对第二渲染中间结果进行编码,将第二渲染中间结果的编码数据写入码流;其中,残差块是通过经渲染的图像中待编码块与对应预测块进行残差得到,预测块是通过对待编码块进行预测得到;第一渲染中间结果作用于编码过程中的至少一项处理:分块、预测或滤波;第二渲染中间结果为第一渲染中间结果的部分;
第一通信模块,用于发送码流;
第二通信模块,用于接收码流;
解码器,用于对码流进行解析,以得到解析结果,解析结果包括当前帧对应的残差块和当前帧对应的第二渲染中间结果;
第二渲染模块,用于基于当前帧对应的渲染参数对三维场景进行渲染处理,并在渲染处理过程中,基于当前帧对应的第二渲染中间结果生成第三渲染中间结果;其中,当前帧对应的渲染参数包括终端设备生成的第一渲染参数;
解码器,还用于基于第一渲染中间结果和当前帧对应的残差块进行重建,以得到当前帧的重建图像;其中,用于确定当前帧的重建图像的第一渲染中间结果包括第二渲染中间结果和第三渲染中间结果,用于确定当前帧的重建图像的第一渲染中间结果作用于重建过程中的至少一项处理:预测或滤波。
这样,将部分的渲染放在终端设备执行,进而服务器可以仅发送部分渲染中间结果至终端设备;因此本申请能够在保证有效降低服务器传输至终端设备数据流的码率开销的情况下,降低交互延迟。此外,由于渲染中间结果与经渲染的图像的相关性较强,本申请基于渲染中间结果对经渲染的图像进行编码,能够保证图像重建质量。
此外,本申请涉及的编码器是对现有编码器进行修改后(或者优化后)的编码器,能够基于第一渲染中间结果对经渲染的图像进行编码。或者说,本申请涉及的编码器能够基于第一渲染中间结果对经渲染的图像进行编码,且包含现有编码器的全部或部分功能。本申请涉及的解码器是对现有解码器进行修改后(或者优化后)的解码器,能够基于第一渲染中间结果进行解码。或者说,本申请涉及的解码器能够基于第一渲染中间结果进行解码,且包含现有解码器的全部或部分功能。这样,能够充分利用渲染中间结果,进一步提高编码效率。
示例性的,假设第一渲染中间结果为CGMV,CGMV可以包括:静态物体的CGMV、刚性动态物体的CGMV和非刚性动态物体的CGMV;第二渲染中间结果可以包括:静态物体的CGMV、刚性动态物体的CGMV和非刚性动态物体的CGMV中的任意一项或两项。
一种可能的方式中,服务器可以对静态物体的CGMV进行编码。这样,终端设备无需计算静态物体的CGMV,节省了终端设备的算力。
一种可能的方式中,服务器可以对动态物体的CGMV进行编码。这样,终端设备无需计算动态物体的CGMV,节省了终端设备的算力。此外,相对于计算静态物体的CGMV而言,计算动态物体的CGMV的计算量更大,因此将动态物体的CGMV编码成第二码流发送给终端设备,能够节省终端设备更多的算力。
示例性的,动态物体的CGMV可以包括刚性动态物体的CGMV和/或非刚性动态物体的CGMV。
一种可能的方式中,可以对刚性动态物体的CGMV和非刚性动态物体的CGMV,均进行编码。
一种可能的方式中,可以对刚性动态物体的CGMV进行编码。这样,相对于编码刚性动态物体的CGMV和非刚性动态物体的CGMV而言,能够降低码率。
一种可能的方式中,可以对非刚性动态物体的CGMV进行编码。这样,相对于编码刚性动态物体的CGMV和非刚性动态物体的CGMV而言,能够降低码率。此外,由于非刚性动态物体的体的三角面片数量较多,非刚性动态物体的CGMV计算量较大;因此相对于编码刚性动态物体的CGMV而言,编码非刚
性动态物体的CGMV,能够节省终端设备更多的算力。
示例性的,假设第一渲染中间结果为深度信息(也就是深度图),服务器可以将深度图中部分区域图像作为第二渲染中间结果。
示例性的,假设第一渲染中间结果为Render ID(也就是Render ID图),服务器可以将Render ID图中部分区域图像作为第二渲染中间结果。
第五方面,本申请实施例还提供一种编码方法,该编码方法包括:首先,基于渲染参数对三维场景进行渲染处理,以得到经渲染的图像;其中,渲染参数包括从终端设备获取的第一渲染参数;接着,基于渲染处理过程中产生的渲染中间结果,选取第一渲染中间结果;之后,基于第一渲染中间结果对经渲染的图像进行编码,以得到残差块的编码数据并将残差块的编码数据写入码流;以及对第二渲染中间结果进行编码,将第二渲染中间结果的编码数据写入码流。其中,残差块是通过经渲染的图像中待编码块与对应预测块进行残差得到,预测块是通过对待编码块进行预测得到;第一渲染中间结果作用于编码过程中的至少一项处理:分块、预测或滤波;第二渲染中间结果为第一渲染中间结果的部分。
这样,将部分的渲染放在终端设备执行,进而服务器可以仅发送部分渲染中间结果至终端设备;因此本申请能够在保证有效降低服务器传输至终端设备数据流的码率开销的情况下,降低交互延迟。此外,由于渲染中间结果与经渲染的图像的相关性较强,本申请基于渲染中间结果对经渲染的图像进行编码,能够保证图像重建质量。
需要说明的是,本申请涉及编码方法,可以由本申请涉及的编码器执行。这样,能够充分利用渲染中间结果,进一步提高编码效率。
根据第五方面,码流还包括:第一指示标识和/或第二指示标识,其中,第一指示标识用于指示码流是否包括第二渲染中间结果的编码数据;第二指示标识用于指示第二渲染中间结果的类型和子类型。这样,便于终端设备获知生成何种类型以及子类型的第三渲染中间结果,其中,第三渲染中间结果为第一渲染中间结果中除第二渲染中间结果之外的部分。
示例性的,第二渲染中间结果也可以包括多种类型,例如,运动矢量类、第一图像类、第二图像类等等。其中,当第二渲染中间结果为CGMV时,对应的类型可以是运动矢量类。当第二渲染中间结果为深度信息时,对应的类型可以是第一图像类。当第二渲染中间结果为Render ID时,对应的类型可以是第二图像类。
示例性的,第二渲染中间结果的每种类型,均可以包括多种子类型。
例如,运动矢量类可以包括:子类型A1、子类型A2和子类型A3;其中,静态物体的CGMV对应的子类型为子类型A1,刚性动态物体的CGMV对应的子类型为子类型A2,非刚性动态物体的CGMV对应的子类型为子类型A3。
例如,第一图像类可以包括:子类型B1和子类型B2。深度图中四个角对应的区域对应的子类型为子类型B1,深度图中除四个角对应的区域之外的区域对应的子类型为子类型B2。
例如,第二图像类可以包括:子类型B3和子类型B4。Render ID图中四个角对应的区域对应的子类型为子类型B3,Render ID图中除四个角对应的区域之外的区域对应的子类型为子类型B4。
根据第五方面,或者以上第五方面的任意一种实现方式,渲染参数还包括服务器生成的第二渲染参数;该方法还包括:将第三渲染参数,写入码流,其中,第三渲染参数包括第二渲染参数中的全部参数或部分参数。
根据第五方面,或者以上第五方面的任意一种实现方式,渲染参数还包括服务器生成的第二渲染参数;码流还包括:第三指示标识和/或第四指示标识,其中:第三指示标识用于指示码流是否包括第三渲染参数,其中,第三渲染参数包括第二渲染参数中的全部参数或部分参数;第四指示标识用于指示第三渲染参数的类型。这样,便于终端设备获知码流中是否包含第三渲染参数;以及当第三渲染参数为部分第二渲染参数时,终端设备可以根据第三渲染参数的类型,生成第四渲染参数,其中,第四渲染参数为第二渲染参数中除第三渲染参数之外的部分。
根据第五方面,或者以上第五方面的任意一种实现方式,第一渲染中间结果作用于编码过程中的分块,待编码块为预测单元,基于第一渲染中间结果对经渲染的图像进行编码,以得到残差块的编码数据,包括:基于第一渲染中间结果对经渲染的图像进行分块,以得到多个预测单元;基于重建块对多个预测单元进行预测,以得到多个预测块,多个预测块与多个预测单元一一对应;对多个预测块与多个预测单元之间的多个残差块进行编码,以得到多个残差块的编码数据,多个残差块与多个预测单元一一对应。
根据第五方面,或者以上第五方面的任意一种实现方式,第一渲染中间结果作用于编码过程中的预测,基于第一渲染中间结果对经渲染的图像进行编码,以得到残差块的编码数据,包括:基于重建块和第一渲染中间结果,对经渲染的图像中待编码块进行预测,以得到待编码块对应的预测块;对待编码块和待编码块对应的预测块之间的残差块进行编码,以得到残差块的编码数据。
根据第五方面,或者以上第五方面的任意一种实现方式,第一渲染中间结果作用于编码过程中的滤波,基于第一渲染中间结果对经渲染的图像进行编码,以得到残差块的编码数据,包括:基于重建块对经渲染的图像中的待编码块进行预测,以得到待编码块对应的预测块,重建块为基于第一渲染中间结果经滤波的重建块;对待编码块和待编码块对应的预测块之间的残差块进行编码,以得到残差块的编码数据。
根据第五方面,或者以上第五方面的任意一种实现方式,第一渲染中间结果还作用于编码过程中的预测,基于重建块对多个预测单元进行预测,以得到多个预测块,包括:基于重建块和第一渲染中间结果,对多个预测单元进行预测,以得到多个预测块。
根据第五方面,或者以上第五方面的任意一种实现方式,第一渲染中间结果还作用于编码过程中的滤波,重建块为基于第一渲染中间结果经滤波的重建块。
根据第五方面,或者以上第五方面的任意一种实现方式,第一渲染中间结果为深度信息,基于第一渲染中间结果对经渲染的图像进行分块,以得到多个预测单元,包括:将经渲染的图像划分为多个编码单元;基于深度信息,生成计算机图形边缘CGE信息,CGE信息包括经渲染的图像中对象的对象边缘信息;基于CGE信息分别对多个编码单元进行划分,以得到多个预测单元。
根据第五方面,或者以上第五方面的任意一种实现方式,第一渲染中间结果为计算机图形运动矢量CGMV,CGMV用于描述经渲染的图像中像素点与经渲染的图像的参考帧中像素点之间的位移关系;基于重建块和第一渲染中间结果,对经渲染的图像中待编码块进行预测,以得到待编码块对应的预测块,包括:从经渲染的图像的参考帧中,确定与待编码块匹配的重建块;基于CGMV和与待编码块匹配的重建块,生成预测块。
根据第五方面,或者以上第五方面的任意一种实现方式,第一渲染中间结果为渲染标识Render ID,Render ID用于描述重建块中像素点所属的对象;该方法还包括:基于Render ID,确定滤波参数;基于滤波参数对重建块进行滤波。
根据第五方面,或者以上第五方面的任意一种实现方式,编码CGE信息,将CGE信息的编码数据写入码流。
第五方面以及第五方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应。第五方面以及第五方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第六方面,本申请还提供一种解码方法,应用于终端设备,该解码方法包括:首先,接收码流;之后,对码流进行解析,以得到解析结果,解析结果包括:当前帧对应残差块和当前帧对应的第二渲染中间结果;接着,基于当前帧对应的渲染参数对三维场景进行渲染处理,并在渲染处理过程中,基于第二渲染中间结果生成第三渲染中间结果,渲染参数包括终端设备生成的第一渲染参数;随后,基于第一渲染中间结果和残差块进行重建,以得到当前帧的重建图像;其中,第一渲染中间结果包括第二渲染中间结果和第三渲染
中间结果,第一渲染中间结果作用于重建过程中的至少一项处理:预测或滤波。
这样,终端设备得到第一渲染中间结果中,包括终端设备生成的第三渲染中间结果和服务器生成的第二渲染中间结果;由于服务器生成的第二渲染中间结果,比终端设备生成的第二渲染中间结果更精确;因此得到的第一渲染中间结果更精确,从而提高重建图像的图像质量。且终端设备仅需生成部分第一渲染中间结果,可以节省终端设备的算力,提高解码效率。
应该理解的是,当服务器对第二中间结果是有损编码时,则终端设备解析得到的第二中间结果与服务器编码的第二中间结果存在差异。当服务器对第二中间结果是无损编码时,则终端设备解析得到的第二中间结果与服务器编码的第二中间结果相同。
应该理解的是,由于第三渲染中间结果是终端设备生成的,因此终端设备合并得到的第一渲染中间结果所包含的中间结果的类型,与服务器生成的第一渲染中间结果所包含的中间结果的类型相同;终端设备合并得到的第一渲染中间结果所包含的中间结果的精度,小于或等于服务器生成的第一渲染中间结果所包含的中间结果的精度。
需要说明的是,本申请涉及解码方法,可以由本申请涉及的编码器执行。
根据第六方面,解码结果还包括:第二指示标识,第二指示标识用于指示第二渲染中间结果的类型和子类型;在渲染处理过程中,基于第二渲染中间结果生成第三渲染中间结果,包括:基于第二指示标识,确定第二渲染中间结果对应的类型和子类型;在渲染处理过程中,基于第二渲染中间结果对应的类型和子类型,生成其他子类型的第三渲染中间结果;其中,其他子类型为第二渲染中间结果对应的类型所包含的子类型中,除第二渲染中间结果对应的子类型之外的子类型。
根据第六方面,或者以上第六方面的任意一种实现方式,解析结果还包括:第三指示标识和第四指示标识;第三指示标识用于指示码流是否包括第三渲染参数,第四指示标识用于指示第三渲染参数的类型;该方法还包括:当基于第三指示标识确定码流包括第三渲染参数时,基于第四指示标识,确定第三渲染参数的类型;基于第三渲染参数的类型,生成其他类型的第四渲染参数;其他类型为服务器生成的第二渲染参数对应的多种类型中,除第三渲染参数的类型之外的类型;其中,渲染参数还包括第三渲染参数和第四渲染参数。
根据第六方面,或者以上第六方面的任意一种实现方式,该方法还包括:当基于第三指示标识确定码流不包括第三渲染参数时,终端设备生成当前帧对应第二渲染参数;其中,渲染参数还包括终端设备生成的第二渲染参数。
根据第六方面,或者以上第六方面的任意一种实现方式,残差块为多个,第一渲染中间结果作用于重建过程中的预测;基于第一渲染中间结果和残差块进行重建,以得到当前帧的重建图像,包括:基于第一渲染中间结果,确定当前帧的分块信息;基于分块信息和重建块,对当前帧包括的多个预测单元进行预测,以得到多个预测块,多个预测块与多个预测单元一一对应,多个残差块与多个预测单元一一对应;基于多个残差块和多个预测块,确定当前帧的重建图像。
根据第六方面,或者以上第六方面的任意一种实现方式,第一渲染中间结果作用于重建过程中的预测;基于第一渲染中间结果和残差块进行重建,以得到当前帧的重建图像,包括:基于第一渲染中间结果和重建块,对当前帧中待解码块进行预测,以得到待解码块对应的预测块;基于当前帧对应的残差块中待解码块对应的残差块和待解码块对应的预测块,确定当前帧的重建图像。
根据第六方面,或者以上第六方面的任意一种实现方式,第一渲染中间结果作用于重建过程中的滤波;基于第一渲染中间结果和残差块进行重建,以得到当前帧的重建图像,包括:基于重建块对当前帧中待解码块进行预测,以得到待解码块对应的预测块,重建块为基于第一渲染中间结果经滤波的重建块;基于当前帧对应的残差块中待解码块对应的残差块和待解码块对应的预测块,确定当前帧的重建图像。
根据第六方面,或者以上第六方面的任意一种实现方式,基于分块信息和重建块,对当前帧包括的多
个预测单元进行预测,以得到多个预测块,包括:基于分块信息、第一渲染中间结果和重建块,对当前帧包括的多个预测单元进行预测,以得到多个预测块。
根据第六方面,或者以上第六方面的任意一种实现方式,第一渲染中间结果还作用于重建过程中的滤波,重建块为基于第一渲染中间结果经滤波的重建块。
根据第六方面,或者以上第六方面的任意一种实现方式,第一渲染中间结果为深度信息,基于第一渲染中间结果,确定当前帧的分块信息,包括:基于深度信息,生成计算机图形边缘CGE信息,CGE信息包括当前帧中对象的对象边缘信息;基于CGE信息,确定当前帧的分块信息。
根据第六方面,或者以上第六方面的任意一种实现方式,第一渲染中间结果为计算机图形运动矢量CGMV,CGMV用于描述当前帧的像素点与当前帧的参考帧的像素点之间的位移关系,基于第一渲染中间结果和重建块,对当前帧中待解码块进行预测,以得到待解码块对应的预测块,包括:从当前帧的参考帧中,确定与待解码块匹配的重建块;基于CGMV和与待解码块匹配的重建块,生成待解码块对应的预测块。
根据第六方面,或者以上第六方面的任意一种实现方式,第一渲染中间结果为渲染标识Render ID,Render ID用于描述重建块中像素点所属的对象;该方法还包括:基于Render ID,确定滤波参数;基于滤波参数对重建块进行滤波。
根据第六方面,或者以上第六方面的任意一种实现方式,残差块为多个,第一渲染中间结果作用于重建过程中的预测;解码结果还包括CGE信息,CGE信息包括当前帧中对象的对象边缘信息;基于第一渲染中间结果和残差块进行重建,以得到当前帧的重建图像,包括:基于CGE信息,确定当前帧的分块信息;基于分块信息和重建块,对当前帧包括的多个预测单元进行预测,以得到多个预测块,多个预测块与多个预测单元一一对应,多个残差块与多个预测单元一一对应;基于多个残差块和多个预测块,确定当前帧的重建图像。
第六方面以及第六方面的任意一种实现方式分别与第三方面以及第三方面的任意一种实现方式相对应。第六方面以及第六方面的任意一种实现方式所对应的技术效果可参见上述第三方面以及第三方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第七方面,本申请提供了一种码流生成方法,该方法基于第三方面以及第三方面的任意一种实现方式的第一渲染参数,生成码流。
第八方面,本申请提供了一种码流生成方法,该方法基于第六方面以及第六方面的任意一种实现方式的第一渲染参数,生成码流。
第九方面,本申请实施例提供一种服务器,包括:存储器和处理器,存储器与处理器耦合;存储器存储有程序指令,当程序指令由处理器执行时,使得服务器执行第二方面或第二方面的任意可能的实现方式中的编码方法;或者,使得服务器执行第五方面或第五方面的任意可能的实现方式中的编码方法。
第九方面以及第九方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应;或者,分别与第五方面以及第五方面的任意一种实现方式相对应。第九方面以及第九方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,或者,可参见上述第五方面以及第五方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第十方面,本申请实施例提供一种终端设备,包括:存储器和处理器,存储器与处理器耦合;存储器存储有程序指令,当程序指令由处理器执行时,使得终端设备执行第三方面或第三方面的任意可能的实现方式中的解码方法,或者,使得终端设备执行第六方面或第六方面的任意可能的实现方式中的解码方法。
第十方面以及第十方面的任意一种实现方式分别与第三方面以及第三方面的任意一种实现方式相对
应,或者,分别与第六方面以及第六方面的任意一种实现方式相对应。第十方面以及第十方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,或者,可参见上述第六方面以及第六方面的任意一种实现方式所对应的技术效果此处不再赘述。
第十一方面,本申请实施例提供一种芯片,包括一个或多个接口电路和一个或多个处理器;接口电路用于从服务器的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,使得服务器执行第二方面或第二方面的任意可能的实现方式中的编码方法;或者,使得服务器执行第五方面或第五方面的任意可能的实现方式中的编码方法。
第十一方面以及第十一方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应;或者,分别与第五方面以及第五方面的任意一种实现方式相对应。第十一方面以及第十一方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,或者,可参见上述第五方面以及第五方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第十二方面,本申请实施例提供一种芯片,包括一个或多个接口电路和一个或多个处理器;接口电路用于从终端设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,使得终端设备执行第三方面或第三方面的任意可能的实现方式中的解码方法,或者,使得终端设备执行第六方面或第六方面的任意可能的实现方式中的解码方法。
第十二方面以及第十二方面的任意一种实现方式分别与第三方面以及第三方面的任意一种实现方式相对应,或者,分别与第六方面以及第六方面的任意一种实现方式相对应。第十二方面以及第十二方面的任意一种实现方式所对应的技术效果可参见上述第三方面以及第三方面的任意一种实现方式所对应的技术效果,或者,可参见上述第六方面以及第六方面的任意一种实现方式所对应的技术效果此处不再赘述。
第十三方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序运行在计算机或处理器上时,使得计算机或处理器执行第二方面或第二方面的任意可能的实现方式中的编码方法;或者,使得计算机或处理器执行第五方面或第五方面的任意可能的实现方式中的编码方法。
第十三方面以及第十三方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应;或者,分别与第五方面以及第五方面的任意一种实现方式相对应。第十三方面以及第十三方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,或者,可参见上述第五方面以及第五方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第十四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序运行在计算机或处理器上时,使得计算机或处理器执行第三方面或第三方面的任意可能的实现方式中的解码方法,或者,使得计算机或处理器执行第六方面或第六方面的任意可能的实现方式中的解码方法。
第十四方面以及第十四方面的任意一种实现方式分别与第三方面以及第三方面的任意一种实现方式相对应,或者,分别与第六方面以及第六方面的任意一种实现方式相对应。第十四方面以及第十四方面的任意一种实现方式所对应的技术效果可参见上述第三方面以及第三方面的任意一种实现方式所对应的技术效果,或者,可参见上述第六方面以及第六方面的任意一种实现方式所对应的技术效果此处不再赘述。
第十五方面,本申请实施例提供一种计算机程序产品,计算机程序产品包括计算指令,当计算指令被计算机或处理器执行时,使得计算机或处理器执行第二方面或第二方面的任意可能的实现方式中的编码方法,或者,使得计算机或处理器执行第五方面或第五方面的任意可能的实现方式中的编码方法。
第十五方面以及第十五方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应;或者,分别与第五方面以及第五方面的任意一种实现方式相对应。第十五方面以及第十五方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,或者,可参见上述第五方面以及第五方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第十六方面,本申请实施例提供一种计算机程序产品,计算机程序产品包括计算指令,当计算指令被计算机或处理器执行时,使得计算机或处理器执行第三方面或第三方面的任意可能的实现方式中的解码方法,或者,使得计算机或处理器执行第六方面或第六方面的任意可能的实现方式中的解码方法。
第十六方面以及第十六方面的任意一种实现方式分别与第三方面以及第三方面的任意一种实现方式相对应,或者,分别与第六方面以及第六方面的任意一种实现方式相对应。第十六方面以及第十六方面的任意一种实现方式所对应的技术效果可参见上述第三方面以及第三方面的任意一种实现方式所对应的技术效果,或者,可参见上述第六方面以及第六方面的任意一种实现方式所对应的技术效果此处不再赘述。
第十七方面,本申请实施例提供一种存储码流的装置,该装置包括:接收器和至少一个存储介质,接收器用于接收码流;至少一个存储介质用于存储码流;码流是根据第二方面以及第二方面的任意一种实现方式生成的,或者,根据第五方面以及第五方面的任意一种实现方式生成的,或者,根据第七方面生成的,或者,根据第八方面生成的。
第十七方面以及第十七方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应;或者,分别与第五方面以及第五方面的任意一种实现方式相对应。第十七方面以及第十七方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,或者,可参见上述第五方面以及第五方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第十八方面,本申请实施例提供一种传输码流的装置,该装置包括:发送器和至少一个存储介质,至少一个存储介质用于存储码流,码流是根据第二方面以及第二方面的任意一种实现方式生成的,或者,根据第五方面以及第五方面的任意一种实现方式生成的,或者,根据第七方面生成的,或者,根据第八方面生成的;发送器用于从存储介质中获取码流并将码流通过传输介质发送给端侧设备。
第十八方面以及第十八方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应;或者,分别与第五方面以及第五方面的任意一种实现方式相对应。第十八方面以及第十八方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,或者,可参见上述第五方面以及第五方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第十九方面,本申请实施例提供一种分发码流的系统,该系统包括:至少一个存储介质,用于存储至少一个码流,至少一个码流是根据第二方面以及第二方面的任意一种实现方式生成的,或者,根据第五方面以及第五方面的任意一种实现方式生成的,或者,根据第七方面生成的,或者,根据第八方面生成的,流媒体设备,用于从至少一个存储介质中获取目标码流,并将目标码流发送给端侧设备,其中,流媒体设备包括内容服务器或内容分发服务器。
第十九方面以及第十九方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应;或者,分别与第五方面以及第五方面的任意一种实现方式相对应。第十九方面以及第十九方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,或者,可参见上述第五方面以及第五方面的任意一种实现方式所对应的技术效果,此处不再赘述。
图1a为示例性示出的应用场景示意图;
图1b为示例性示出的端云协同系统示意图;
图2为示例性示出的编码过程示意图;
图3为示例性示出的解码过程示意图;
图4为示例性示出的编码过程示意图;
图5为示例性示出的解码过程示意图;
图6a为示例性示出的编码过程示意图;
图6b为示例性示出的模型视图投影变换的示意图;
图7为示例性示出的解码过程示意图;
图8a为示例性示出的编码过程示意图;
图8b为示例性示出的图像的示意图;
图9为示例性示出的解码过程示意图;
图10a为示例性示出的编码过程示意图;
图10b为示例性示出的Render ID图;
图11为示例性示出的解码过程示意图;
图12为示例性示出的编码过程示意图;
图13为示例性示出的解码过程示意图;
图14为示例性示出的编码过程示意图;
图15为示例性示出的解码过程示意图;
图16a为示例性示出的编码框架示意图;
图16b为示例性示出的编码过程示意图;
图16c为示例性示出的分块示意图;
图16d为示例性示出的CGE信息生成过程示意图;
图16e为示例性示出的PU划分过程示意图;
图17a为示例性示出的解码框架示意图;
图17b为示例性示出的解码过程示意图;
图18a为示例性示出的编码框架示意图;
图18b为示例性示出的编码过程示意图;
图18c为示例性示出的预测块选取过程示意图;
图19a为示例性示出的解码框架示意图;
图19b为示例性示出的解码过程示意图;
图20a为示例性示出的编码框架示意图;
图20b为示例性示出的编码过程示意图;
图21a为示例性示出的解码框架示意图;
图21b为示例性示出的解码过程示意图;
图22为示例性示出的装置的结构示意图。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
图1a为示例性示出的应用场景示意图。图1a示出的应用场景为端云协同渲染场景。本申请可以应用于各种端云协同场景;例如,云游戏、VR/AR会议等等,本申请对此不作限制。本申请以云游戏为例进行说明。
参照图1a,一种可能的方式中,可以由手机、个人计算机(Personal Computer,PC)、VR眼镜、AR头盔、平板电脑以及其他终端设备等等终端设备,通过边缘服务器将第一渲染参数发送给中心服务器(如游戏服务器)。接着,中心服务器可以基于渲染参数(渲染参数可以仅包括终端设备上传的第一渲染参数,或者,包括终端设备上传的第一渲染参数和中心服务器生成的第二渲染参数)对三维场景进行渲染处理,
以得到经渲染的图像(如游戏图像)。之后,中心服务器基于渲染处理过程中产生的渲染中间结果中的部分渲染中间结果(后续称为第一渲染中间结果),对经渲染的图像进行编码,以得到码流并将码流通过边缘服务器,分发至各终端设备。随后,终端设备可以基于渲染参数(渲染参数包括第一渲染参数和第五渲染参数,第五渲染参数也是由终端设备生成的,第五渲染参数可以包含与第二渲染参数相同的参数)对三维场景进行渲染处理,并在渲染处理过程中生成第一渲染中间结果;然后终端设备基于第一渲染中间结果对码流进行解码,以得到重建图像。
参照图1a,一种可能的方式中,可以由手机、PC、VR眼镜、AR头盔、平板电脑以及其他终端设备等等终端设备,通过边缘服务器将第一渲染参数发送给中心服务器。接着,中心服务器可以基于渲染参数(渲染参数可以仅包括终端设备上传的第一渲染参数,或者,包括终端设备上传的第一渲染参数和服务器生成的第二渲染参数)对三维场景进行渲染处理,以得到经渲染的图像。之后,中心服务器基于渲染处理过程中产生的第一渲染中间结果,对经渲染的图像进行编码;以及对第二渲染中间结果(第二渲染中间结果为第一渲染中间结果的部分)进行编码,以得到码流并将码流通过边缘服务器,分发至各终端设备。随后,终端设备可以基于渲染参数(渲染参数包括第一渲染参数和第五渲染参数)对三维场景进行渲染处理,并在渲染处理过程中生成第三渲染中间结果(第三渲染中间结果为第一渲染中间结果中除第二渲染中间结果之外的部分);然后,终端设备基于第二渲染中间结果和第三渲染中间结果,生成第一渲染中间结果,以及基于第一渲染中间结果对码流进行解码,以得到重建图像。
参照图1a,一种可能的方式中,可以由手机、PC、VR眼镜、AR头盔、平板电脑以及其他终端设备等等终端设备,通过边缘服务器将第一渲染参数发送给中心服务器。接着,中心服务器可以基于渲染参数(渲染参数包括终端设备上传的第一渲染参数和中心服务器生成的第二渲染参数)对三维场景进行渲染处理,以得到经渲染的图像。之后,中心服务器基于渲染处理过程中产生的第一渲染中间结果,对经渲染的图像进行编码,以得到码流并将第三渲染参数(第三渲染参数包括第二渲染参数中的全部参数或部分参数)写入码流;然后,中心服务器将码流通过边缘服务器,分发至各终端设备。随后,终端设备可以基于渲染参数(当第三渲染参数包括第二渲染参数的全部参数时,该渲染参数可以包括第一渲染参数和从码流中解析出的第三渲染参数;当第三渲染参数包括第二渲染参数的部分参数时,该渲染参数可以包括第一渲染参数、从码流中解析出的第三渲染参数和终端设备生成的第四渲染参数,第四渲染参数是第二渲染参数中除第三渲染参数之外的参数)对三维场景进行渲染处理,并在渲染处理过程中生成第一渲染中间结果;然后,终端设备基于第一渲染中间结果对码流进行解码,以得到重建图像。
参照图1a,一种可能的方式中,可以由手机、PC、VR眼镜、AR头盔、平板电脑以及其他终端设备等等终端设备,通过边缘服务器将第一渲染参数发送给中心服务器。接着,中心服务器可以基于渲染参数(包括终端设备上传的第一渲染参数和中心服务器生成的第二渲染参数)对三维场景进行渲染处理,以得到经渲染的图像。之后,中心服务器基于渲染处理过程中产生的第一渲染中间结果,对经渲染的图像进行编码,以及对第二渲染中间结果进行编码,以得到码流并将第三渲染参数写入码流;然后,中心服务器将码流通过边缘服务器,分发至各终端设备。随后,终端设备可以基于渲染参数(当第三渲染参数包括第二渲染参数的全部参数时,该渲染参数可以包括第一渲染参数和从码流中解析出的第三渲染参数;当第三渲染参数包括第二渲染参数的部分参数时,该渲染参数可以包括第一渲染参数、从码流中解析出的第三渲染参数和终端设备生成的第四渲染参数)对三维场景进行渲染处理,并在渲染处理过程中生成第三渲染中间结果;然后终端设备基于第二渲染中间结果和第三渲染中间结果,生成第一渲染中间结果,以及基于第一渲染中间结果对码流进行解码,以得到重建图像。
这样,将部分或全部的渲染放在终端设备执行,进而服务器可以不发送渲染中间结果或者仅发送部分渲染中间结果至终端设备;因此本申请能够在保证有效降低服务器传输至终端设备数据流的码率开销的情况下,降低交互延迟。且由于渲染中间结果与经渲染的图像的相关性较强,本申请基于渲染中间结果对经渲染的图像进行编码,能够保证图像重建质量。此外,渲染参数的数据量远小于渲染中间结果的数据量;因此,即使本申请服务器还发送渲染参数至终端设备,本申请中服务器传输至终端设备数据流的码率开销,也小于现有技术的传输数据流的码率开销。
示例性的,渲染参数可以是指输入至图形渲染引擎且是图形渲染引擎进行渲染处理所需的全部参数,可以包括各类用于渲染的参数、所有光源的位置和颜色向量、玩家或者观察者的位置向量、每个纹理的采样方式以及每个场景对象的位置坐标等信息、运动物体的运动轨迹、骨骼动画参数等等,本申请对此不作限制。其中,第一渲染参数和第二渲染参数,可以组成渲染参数(即指输入至图形渲染引擎且是图形渲染
引擎进行渲染处理所需的全部参数)。需要说明的是,终端设备生成的第五渲染参数所包含参数的类型,与中心服务器生成的第二渲染参数所包含参数的类型相同,第五渲染参数所包含参数的精度,小于或等于第二渲染参数所包含参数的精度。
示例性的,渲染中间结果可以是指图形渲染引擎在生成待显示图像(即经渲染的图像)/视频(即经渲染的视频)过程中,所产生的用于生成待显示图像/视频的中间数据。示例性的,渲染中间结果可以包括但不限于:计算机图形运动矢量(Computer Graphics Motion Vector,CGMV),渲染中间图像(渲染中间图像是指在生成最终的渲染图像(也就是上述的经渲染的图像)之前生成的图像,渲染中间图像的计算复杂度低于经渲染的图像的计算复杂度;其中,渲染中间图像可以如未进行间接光照渲染的渲染中间图像、未进行镜面反射处理的渲染中间图像、未进行高光处理的渲染中间图像等),位置图(position map),法线图(normal map),反照率图(albedo map),镜面强度图(specular intensity map),网格标识(Mesh ID),材质ID(Material ID)(其中,每个材质贴图对应一个Material ID),渲染ID(Render ID)(每一个对象(或者一个三维物体模型)对应一个Render ID),深度信息等等,本申请对此不作限制。其中,第一渲染中间结果是渲染处理过程中所产生的所有渲染中间结果的部分,第二渲染中间结果和第三渲染中间结果可以组成第一渲染中间结果。需要说明的是,终端设备生成的第一渲染中间结果所包含中间结果的类型,与中心服务器生成的第一渲染中间结果所包括中间结果的类型相同,终端设备生成的第一渲染中间结果所包含中间结果的精度,小于或等于中心服务器生成的第一渲染中间结果所包括中间结果的精度。
基于图1a的应用场景,本申请提出一种端云协同系统,可以如图1b所示。
图1b为示例性示出的端云协同系统示意图。图1b示出的端云协同系统可以包括服务器和终端设备。
参照图1b,示例性的,服务器可以是指图1a中的中心服务器,服务器可以是单个服务器,也可以是服务器集群,本申请对此不作限制。
示例性的,服务器可以包括第一渲染模块、编码器和第一通信模块。应该理解的是,图1b仅是本申请的一个示例,本申请的服务器可以包括比图1b所示的更多或更少的模块,本申请对此不作限制。
示例性的,第一渲染模块,可以用于基于渲染参数对三维场景进行渲染处理,以得到经渲染的图像和渲染中间结果;
示例性的,编码器,可以用于基于第一渲染中间结果对经渲染的图像进行编码,以及对第二渲染中间结果进行编码,以及将第二渲染参数写入码流。
示例性的,第一通信模块,可以用于与其他电子设备进行通信,例如可以将编码器输出的码流发送至终端设备。
示例性的,终端设备包括但不限于:个人计算机、计算机工作站、智能手机、平板电脑、服务器、智能摄像头、智能汽车或其他类型蜂窝电话、媒体消费设备、可穿戴设备(如VR/AR头盔、VR眼镜)、机顶盒、游戏机等。
继续参照图1b,示例性的,终端设备可以包括第二通信模块、第二渲染模块、解码器和显示模块。应该理解的是,图1b仅是本申请的一个示例,本申请的终端设备可以包括比图1b所示的更多或更少的模块,本申请对此不作限制。
示例性的,第二通信模块,可以用于与其他电子设备进行通信,例如,接收服务器发送的码流。
示例性的,第二渲染模块,可以用于基于本地生成第一渲染参数和本地生成第二渲染参数,对三维场景进行渲染处理,以得到第一渲染中间结果(此时,图1b中的虚线箭头对应的数据流,可以不存在)。或者,可以用于基于本地生成第一渲染参数和本地生成第二渲染参数对三维场景进行渲染处理,并在渲染处理过程中,基于服务器发送的第二渲染中间结果,生成第三渲染中间结果。或者,可以用于基于本地生成第一渲染参数和服务器生成第三渲染参数对三维场景进行渲染处理,以得到第一渲染中间结果。或者,可以用于基于本地生成第一渲染参数、本地生成的第四渲染参数和服务器生成第三渲染参数对三维场景进行渲染处理,以得到第一渲染中间结果。或者,可以用于本地生成第一渲染参数和服务器生成第三渲染参数对三维场景进行渲染处理,并在渲染处理过程中,基于服务器发送的第二渲染中间结果,生成第三渲染中间结果。或者,可以用于本地生成第一渲染参数、本地生成的第四渲染参数和服务器生成第三渲染参数对三维场景进行渲染处理,并在渲染处理过程中,基于服务器发送的第二渲染中间结果,生成第三渲染中间结果。
应该理解的是,第二渲染模块也可以生成经渲染的图像,但是该经渲染的图像不用于后续显示模块进行显示。
示例性的,解码器,可以用于基于第一渲染中间结果对码流进行解码,以得到重建图像。
示例性的,显示模块,可以用于显示重建图像。
应该理解的是,本申请对编码器和解码器使用的视频编码标准不作限制,例如可以包括但不限于:H.264/AVC(Advanced Video Coding,高级视频编码),H.265/HEVC(High Efficiency Video Coding,高效率视频编码),H.266/VVC(Versatile Video Coding,多功能视频编码),AV1(AOMedia Video 1,“AOMedia”指的是开放媒体视频联盟开发的一种视频编码)等,以及这些视频编码标准的扩展标准;此外,还可以包括随着视频编解码技术的发展所产生的新的视频编码标准及扩展标准。
需要说明的是,本申请涉及的编码器是对现有编码器进行修改后(或者优化后)的编码器,能够执行本申请涉及的编码方法,即基于第一渲染中间结果对经渲染的图像进行编码。或者说,本申请涉及的编码器能够执行本申请涉及的编码方法,且包含现有编码器的全部或部分功能。
以及本申请涉及的解码器是对现有解码器进行修改后(或者优化后)的解码器,能够执行本申请涉及的解码方法,即基于第一渲染中间结果进行解码。或者说,本申请涉及的解码器能够执行本申请涉及的解码方法,且包含现有解码器的全部或部分功能。
以下基于图1a和图1b,对编解码过程进行说明。
图2为示例性示出的编码过程示意图。在图2的实施例中,服务器不发送第一渲染中间结果至终端设备,也不发送第二渲染参数至终端设备。图2实施例中,以编码一帧经渲染的图像为例进行说明。
S201,服务器基于渲染参数对三维场景进行渲染处理,以得到经渲染的图像;其中,渲染参数包括从终端设备获取的第一渲染参数。
示例性的,服务器可以获取渲染参数;接着,可以将渲染参数输入至图形渲染引擎,由图形渲染引擎基于渲染参数对三维场景进行渲染处理,得到经渲染的图像。其中,图形渲染引擎属于图1b中的第一渲染模块。
示例性的,服务器可以从终端设备获取第一渲染参数(其中,第一渲染参数是终端设备生成的)。一种可能的方式中,当终端设备生成的第一渲染参数,是图形渲染引擎进行渲染处理所需的所有参数时,服务器可以将第一渲染参数,确定为渲染参数;也就是说,服务器获取的渲染参数可以仅包括第一渲染参数。一种可能的方式中,当终端设备生成的第一渲染参数,是图形渲染引擎进行渲染处理所需的部分参数时,服务器还可以生成第二渲染参数;接着,将第一渲染参数和第二渲染参数,确定为渲染参数。也就是说,服务器获取的渲染参数可以包括第一渲染参数和第二渲染参数。其中,第一渲染参数以及第二渲染参数,在后续实施例中进行具体说明。
需要说明的是,服务器可以按照预设周期从终端设备获取第一渲染参数,其中,预设周期可以按照需求设置,本申请对此不作限制。应该理解的是,服务器每次从终端设备获取的第一渲染参数,可以用于渲染一帧或多帧图像。
示例性的,图形渲染引擎的渲染处理过程可以如下:图像引擎可以基于输入的渲染参数,对三维场景中的三维物体模型进行几何变换,投影变换,透视变换和窗口剪裁,再通过获取的材质与光影信息,生成经渲染的图像。
S202,基于渲染处理过程中产生的渲染中间结果,选取第一渲染中间结果。
示例性的,第一渲染模块中的图形渲染引擎在渲染处理过程中(渲染处理过程中是指从图像渲染引擎获取到渲染参数的时刻,至,得到经渲染的图像的时刻之间的时间段)会产生渲染中间结果,可以从该渲染中间结果中选取第一渲染中间结果;后续可以基于该第一渲染中间结果,对经渲染的图像进行编码。
示例性的,可以从渲染中间结果中,选取部分渲染中间结果,作为第一渲染中间结果。示例性的,第一渲染中间结果可以作用于编码过程中的任意一项或多项处理,例如分块、预测或滤波等等;进而,可以从渲染中间结果中,选取可作用于编码过程中的任意一项或多项处理的渲染中间结果,作为第一渲染中间结果。例如,选取CGMV、深度信息和Render ID等作为第一渲染中间结果,本申请对此不作限制。
需要说明的是,S201~S202可以由图1b中的第一渲染模块执行,S203可以由图1b中的编码器执行。
S203,服务器基于第一渲染中间结果对经渲染的图像进行编码,以得到残差块的编码数据并将残差块的编码数据写入码流;第一渲染中间结果作用于编码过程中的至少一项处理:分块、预测或滤波。
示例性的,编码器的编码过程可以包括以下至少一项处理:分块、预测或滤波;可以将第一渲染中间结果作用于上述分块、预测或滤波中至少一项处理中,来对经渲染的图像进行编码。
示例性的,在编码经渲染的图像过程中,可以先对经渲染的图像进行分块,以得到多个待编码块;针
对一个待编码块,可以基于已滤波的重建块,对该待编码块进行预测,以得到预测块;然后确定待编码块与预测块之间的残差块;接着,可以对残差块进行编码,并将残差块的编码数据写入码流。其中,具体的编码过程在后续进行说明
示例性的,可以对残差块进行变换、量化以及熵编码等处理,以得到残差块的编码数据。
应该理解的是,第一渲染中间结果还可以作用于编码过程中的其他项处理如熵编码等,本申请对此不作限制。
其中,图2实施例中的码流包括残差块的编码数据,且不包括第一渲染中间结果的编码数据。
图3为示例性示出的解码过程示意图。图3示出的是与图2对应的解码过程。在图3的实施例中,终端设备基于本地生成的渲染参数进行渲染处理,并生成第一渲染中间结果。图3实施例中,以解码一帧图像为例进行说明。
S301,终端设备接收码流。
示例性的,待服务器发送码流后,终端设备可以接收到码流。
S302,终端设备对码流进行解析,以得到解析结果,解析结果包括当前帧对应的残差块。
示例性的,终端设备在接收到码流后,可以对码流进行解析,以得到解析结果。其中,解析过程可以如下:从码流中提取出残差块的编码数据,然后对残差块的编码数据进行熵解码,以得到熵解码数据。接着,可以对熵解码数据进行反量化,以得到反量化数据;之后,可以反量化数据进行反变换,以得到当前帧对应的残差块。
应该理解的是,当编码端对残差块是有损编码时,则解码端解析得到的残差块与编码端编码的残差块存在差异。当编码端对残差块是无损编码时,则解码端解析得到的残差块与编码端编码的残差块相同。
需要说明的是,还可以从码流中提取出用于描述码流的码流描述信息,此时,无需对码流描述信息进行熵解码、反量化和反变换等操作。该码流描述信息可以用于后续的解码过程。
S303,终端设备基于当前帧对应的渲染参数对三维场景进行渲染处理,并在渲染处理过程中生成第一渲染中间结果;其中,渲染参数包括终端设备生成的第一渲染参数。
示例性的,在解析得到当前帧对应的残差块后,第二渲染模块(可以是第二渲染模块包含的图形渲染引擎)可以基于当前帧对应的渲染参数对三维场景进行渲染处理。
示例性的,当终端设备上传至服务器的第一渲染参数,是图形渲染引擎进行渲染处理所需的所有参数时,第二渲染模块可以基于当前帧对应的第一渲染参数,对三维场景进行渲染处理。当终端设备上传的第一渲染参数,是图形渲染引擎进行渲染处理所需的部分参数时,终端设备还可以生成第五渲染参数,然后第二渲染模块可以基于当前帧对应的第一渲染参数和第五渲染参数,对三维场景进行渲染处理。
需要说明的是,终端设备生成的第五渲染参数所包含参数的类型,与中心服务器生成的第二渲染参数所包含参数的类型相同;第五渲染参数所包含参数的精度,小于或等于第二渲染参数所包含参数的精度。
需要说明的是,终端设备生成的第一渲染中间结果所包含的中间结果的类型,与服务器生成的第一渲染中间结果所包含的中间结果的类型相同;终端设备生成的第一渲染中间结果所包含的中间结果的精度,小于或等于服务器生成的第一渲染中间结果所包含的中间结果的精度。
需要说明的是,终端设备的图形渲染引擎进行渲染处理,也可以得到经渲染的图像;由于终端设备算力低于服务器的算力,因此终端设备的图形渲染引擎进行渲染处理得到的经渲染的图像的图像质量(其中,图像质量可以包括主观质量和客观质量(客观质量如率失真性能、峰值信噪比(Peak Signal to Noise Ratio,PSNR)),是低于服务器的图形渲染引擎进行渲染处理得到的经渲染的图像的图像质量的;因此终端设备可以不对终端设备的图形渲染引擎进行渲染处理得到的经渲染的图像进行显示,而显示对码流进行解码所得到的重建图像。
需要说明的是,S301~S303可以由终端设备中的第二渲染模块执行,S304可以由图1b中的解码器执行。
S304,终端设备基于第一渲染中间结果和残差块进行重建,以得到当前帧的重建图像;其中,第一渲染中间结果作用于重建过程中的至少一项处理:预测或滤波。
示例性的,解码器的解码过程可以包括解析、预测以及滤波等多项处理,可以将第一渲染中间结果作用于预测、滤波中的至少一项处理中,以重建得到当前帧的重建图像。
示例性的,在重建过程中,可以确定当前帧的分块信息;接着,基于分块信息和已滤波的重建块,对
当前帧中的待解码块进行预测,以得到预测块;然后,可以基于待解码块对应的预测块与残差块进行重建,以得到当前帧对应的重建图像。其中,具体的解码过程在后续进行说明。
应该理解的是,解码过程中第一渲染中间结果作用于重建过程中的处理项,与编码过程中第一渲染中间结果作用于编码过程的处理项对应即可。
应该理解的是,第一渲染中间结果还可以作用于解码过程中的其他项处理如熵解码等,本申请对此不作限制。
这样,本申请通过将全部的渲染放在终端设备执行,进而服务器可以不发送渲染中间结果至终端设备;因此本申请能够在保证有效降低服务器传输至终端设备数据流的码率开销的情况下,降低交互延迟。此外,由于渲染中间结果与经渲染的图像的相关性较强,本申请基于渲染中间结果对经渲染的图像进行编码,能够保证图像重建质量。
图4为示例性示出的编码过程示意图。在图4的实施例中,服务器发送部分第一渲染中间结果(后续称为第二渲染中间结果)至终端设备,不发送第二渲染参数至终端设备。图4实施例中,以编码一帧经渲染的图像为例进行说明。
S401,服务器基于渲染参数对三维场景进行渲染处理,以得到经渲染的图像;其中,渲染参数包括从终端设备获取的第一渲染参数。
S402,服务器基于渲染处理过程中产生的渲染中间结果,选取第一渲染中间结果。
S403,服务器基于第一渲染中间结果对经渲染的图像进行编码,以得到残差块的编码数据并将残差块的编码数据写入码流;第一渲染中间结果作用于编码过程中的至少一项处理:分块、预测或滤波。
示例性的,S401~S403,可以参照上述S201~S203的描述,在此不再赘述。
S404,服务器对第二渲染中间结果进行编码,并将第二渲染中间结果的编码数据写入码流;其中,第二渲染中间结果是第一渲染中间结果的部分。
示例性的,S404可以由上述图1b中的编码器执行,即由编码器对第二渲染中间结果进行编码,并将第二渲染中间结果的编码数据写入码流。
图5为示例性示出的解码过程示意图。图5示出的是与图4对应的解码过程。在图5的实施例中,终端设备基于本地生成的渲染参数进行渲染处理,并生成第三渲染中间结果(第三渲染中间结果和第二渲染中间结果,可以组成第一渲染中间结果)。图5实施例中,以解码一帧图像为例进行说明。
S501,终端设备接收码流。
S502,终端设备对码流进行解析,以得到解析结果,解析结果包括当前帧对应的残差块和当前帧对应的第二渲染中间结果。
示例性的,S502可以参照上S302的描述,在此不再赘述。
示例性的,解析过程中,还可以从码流中提取出第二渲染中间结果的编码数据;接着,可以将第二渲染中间结果的编码数据依次输入至熵解码模块、反量化模块和反变换模块,以得到第二渲染中间结果。
需要说明的是,当服务器对第二渲染中间结果是无损压缩时,终端设备解析得到第二渲染中间结果,与服务器编码器编码的第二渲染中间结果相同。当服务器对第二渲染中间结果是有损压缩时,终端设备解析得到第二渲染中间结果,与服务器编码器编码的第二渲染中间结果存在差异。
S503,终端设备基于当前帧对应的渲染参数对三维场景进行渲染处理,并在渲染处理过程中,基于第二渲染中间结果生成第三渲染中间结果;其中,渲染参数包括终端设备生成的第一渲染参数。
示例性的,终端设备的第二渲染模块,在渲染处理过程中,可以生成第一渲染中间结果中除第二渲染中间结果之外的部分,即第三渲染中间结果。具体可以参照上述S303的描述,在此不再赘述。接着,第二渲染模块可以合并第二渲染中间结果和第三渲染中间结果,得到第一渲染中间结果。
应该理解的是,由于第三渲染中间结果是终端设备生成的,因此终端设备合并得到的第一渲染中间结果所包含的中间结果的类型,与服务器生成的第一渲染中间结果所包含的中间结果的类型相同;终端设备合并得到的第一渲染中间结果所包含的中间结果的精度,小于或等于服务器生成的第一渲染中间结果所包含的中间结果的精度。
S504,终端设备基于第一渲染中间结果和残差块进行重建,以得到当前帧的重建图像;其中,第一渲染中间结果作用于重建过程中的至少一项处理:预测或滤波。
示例性的,S504可以参照上述S304的描述,在此不再赘述。
这样,本申请通过将部分的渲染放在终端设备执行,进而服务器可以发送部分渲染中间结果至终端设备;因此本申请能够在保证有效降低服务器传输至终端设备数据流的码率开销的情况下,降低交互延迟。此外,由于渲染中间结果与经渲染的图像的相关性较强,本申请基于渲染中间结果对经渲染的图像进行编码,能够保证图像重建质量。
以下以第一渲染中间结果为CGMV,且服务器发送部分CGMV至终端设备为例,对编解码过程进行说明。
图6a为示例性示出的编码过程示意图。在图6a的实施例中,服务器发送部分CGMV至终端设备,不发送第二渲染参数至终端设备;其中,部分CGMV作用于编码过程中的预测。图6a实施例中,以编码一帧经渲染的图像为例进行说明。
S601,服务器接收终端设备发送的第一渲染参数。
示例性的,第一渲染参数可以包括相机参数;其中,相机参数可以包括但不限于:视图投影矩阵、相机动态范围、焦距、光圈大小以及景深等参数。
S602,服务器生成第二渲染参数。
示例性的,服务器可以加载预存在存储器(如硬盘、内存等)的场景几何信息(如三角面片的顶点坐标)、材质数据(如材质贴图、材质生成函数)以及纹理数据(如纹理贴图))等等,进而可以得到第二渲染参数。
S603,服务器基于第一渲染参数和第二渲染参数对三维场景进行渲染处理,以得到经渲染的图像。
S604,服务器基于渲染处理过程中产生的渲染中间结果,选取CGMV。
示例性的,服务器可以将第一渲染参数和第二渲染参数,输入至图形渲染引擎(如V-Ray、Unreal、Unity等),由图形渲染引擎进行渲染处理,得到经渲染的图像。
示例性的,图形渲染引擎在渲染处理过程中,可以生成CGMV以及其他渲染中间结果,可以选取CGMV,作为第一渲染中间结果。其中,CGMV可以包括静态物体的CGMV和动态物体的CGMV。
示例性的,图形渲染引擎生成静态CGMV的过程可以如下:对于三角面片(也称为mash(网格))上每个点(可以包括三角面片的顶点和位于三角面片上的非顶点的点(后续称为其他点(其他点可以通过基于顶点插值得到))),计算每个点的在t1时刻(当前时刻)的模型视图投影(Model View Projection)矩阵Mt1下的投影结果(也就是每个顶点在屏幕上的像素点),并对投影结果进行光栅化(Rasterize)。
图6b为示例性示出的模型视图投影变换的示意图。
参照图6b,示例性的,图6b中(0,0,0)为相机原点。+Y表示Y轴的正方向,+X表示X轴的正方向,+Z表示Z轴的正方向。
示例性的,三维场景中,位于视锥体(以相机原点为顶点)的近平面和远平面之间的三角面片上的点,可以投影到屏幕。在图6b中,灰色立方体上的点可以投影到屏幕上。其中,视锥体的参数(如水平视角、垂直视角和对角视角等),可以根据第一渲染参数中的相机参数确定。其中,可以采用t1时刻的模型视图投影矩阵Mt1,确定位于视锥体(以相机原点为顶点)的近平面和远平面之间的三角面片上的点,投影到屏幕上对应的像素点。
示例性的,对投影结果进行光栅化(Rasterize)的过程可以如下:
首先,对于位于视锥体(以相机原点为顶点)的近平面和远平面之间的三角面片上的点对应的像素点,预置数组ZBuffer;其中,数组ZBuffer内每个像素点的位置初始值置为无穷大(即离相机无穷远)。
接着,遍历数组ZBuffer内的每一个像素点[x,y],计算每个像素点到相机的距离z,也就是每个像素点对应在三角面片上的点到相机的距离。其中,当像素点对应的是三角面片的顶点时,可以直接计算出相应的距离;当像素点对应的三角面片上的其他点时,可以通过采用顶点对应像素点至相机的距离进行插值得
到相应的距离。如果z小于ZBuffer[x,y]中的值,则更新ZBuffer[x,y]值为该点距离z。
之后,基于相机参数中远平面距离值zfar和近平面距离值znear,对数组ZBuffer中各个像素点对应的距离值进行归一化,得到变化范围在[0,1]之间的深度值D,所有的深度值D组成深度贴图(depth map)。其中,归一化方式为:
然后,根据t2时刻(任一重建图像对应的渲染时刻;其中,图形渲染引擎不一定是按照视频数据中图像排列顺序进行渲染处理的,因此编码器也不一定按照视频数据中图像排列顺序进行编码;进而,重建图像可以是视频数据中,位于待渲染图像(也就t1时刻所需渲染的图像)之前的已编码图像的重建图像,也可以是位于待渲染图像之后的已编码图像的重建图像)的视图投影矩阵Mt2与当前时刻的视图投影矩阵Mt1,计算得到t1时刻与t2时刻之间静态物体的CGMV,记为CGMV1:
CGMV1=D*(Mt1-Mt2)
CGMV1=D*(Mt1-Mt2)
应该理解的是,可以生成t1时刻与N个t2时刻之间静态物体的CGMV,进而可以得到N个CGMV1,每个CGMV1可以对应一个t2时刻。其中,N为正整数,例如,N为小于16的正整数,本申请对此不作限制。
示例性的,图形渲染引擎生成动态CGMV的过程可以如下:
示例性的,对于发生运动的mesh(也就是动态物体的三角面片)维护一个velocity buffer(速度缓冲),该velocity buffer中记录了每个发生运动的mesh上的每个顶点在t1时刻的坐标(x1,y1,z1),以及记录了mesh上的每个发生运动的mesh上的每个顶点在t2时刻的坐标记为(x2,y2,z2)。进而,
首先,可以计算t1时刻和t2时刻每个发生运动的mesh上的每个顶点的运动向量P=(x1,y1,z1)-(x2,y2,z2)。
接着,将P与t1时刻的视图投影矩阵进行相乘,得到每个发生运动的mesh上的每个顶点对应像素点的CGMV,记作CGMV2,CGMV2=P*Mt1。
最后,对CGMV2进行光栅化;可以参照上述的描述,在此不再赘述。以及可以对三角面片上的其他点进行插值,继而得到每个像素点的CGMV2。
应该理解的是,可以生成t1时刻与N个t2时刻之间动态物体的CGMV,进而可以得到N个CGMV2,每个CGMV2可以对应一个t2时刻。
S605,服务器基于CGMV对经渲染的图像进行编码,以得到残差块的编码数据并将残差块的编码数据写入码流;其中,CGMV作用于编码过程中的以下一项处理:预测。
示例性的,服务器可以按照像素点,合并动态物体的CGMV和静态物体的CGMV,得到完整的CGMV(也就是第一渲染中间结果)。示例性的,可以合并t1时刻与第i(i为1~N之间的正整数,包括1和N)个t2时刻之间静态物体的CGMV1,和t1时刻与第i个t2时刻之间动态物体的CGMV2,可以得到t1时刻与第i个t2时刻之间的完整的CGMV(也就是第i个完整的CGMV)。
示例性的,可以将CGMV作用于编码过程中的预测,来对经渲染的图像进行编码。示例性的,针对
经渲染的图像中的待编码块,可以基于CGMV对该待编码块进行预测,以得到预测块;然后确定待编码块与预测块之间的残差块;接着,可以对残差块进行编码,并将残差块的编码数据写入码流。具体编码过程在后续实施例进行说明。
S606,服务器对第一CGMV进行编码,以并将第一CGMV的编码数据写入码流。
示例性的,服务器在生成完整的CGMV后,可以对部分CGMV进行编码。应该理解的是,服务器生成了N个完整的CGMV,当用于计算残差块的预测块是第i个完整CGMV时,可以对第i个完整CGMV中的部分CGMV进行编码。其中,部分CGMV可以称为第一CGMV,也就是第二渲染中间结果。
一种可能的方式中,第一CGMV为静态物体的CGMV,进而服务器可以将编码后的静态物体的CGMV发送至终端设备。这样,终端设备无需计算静态物体的CGMV,节省了终端设备的算力。
一种可能的方式中,第一CGMV为动态物体的CGMV,进而服务器可以将编码后的动态物体的CGMV发送至终端设备。这样,终端设备无需计算动态物体的CGMV,节省了终端设备的算力。此外,相对于计算静态物体的CGMV而言,计算动态物体的CGMV的计算量更大,因此将动态物体的CGMV编码后发送给终端设备,能够节省终端设备更多的算力。
示例性的,动态物体的CGMV可以包括刚性动态物体的CGMV和/或非刚性动态物体的CGMV。
一种可能的方式中,第一CGMV可以包括刚性动态物体的CGMV和非刚性动态物体的CGMV。
一种可能的方式中,第一CGMV可以包括刚性动态物体的CGMV,进而服务器可以将编码后的刚性动态物体的CGMV发送至终端设备。这样,相对于编码刚性动态物体的CGMV和非刚性动态物体的CGMV而言,能够降低码率。
一种可能的方式中,第一CGMV可以包括非刚性动态物体的CGMV,进而服务器可以将编码后的非刚性动态物体的CGMV发送至终端设备。这样,相对于编码刚性动态物体的CGMV和非刚性动态物体的CGMV而言,能够降低码率。此外,由于非刚性动态物体的体的三角面片数量较多,非刚性动态物体的CGMV计算量较大;因此相对于编码刚性动态物体的CGMV而言,编码非刚性动态物体的CGMV,能够节省终端设备更多的算力。
示例性的,在图6a的实施例中,上述码流描述信息还可以包括第一指示标识和/或第二指示标识。其中,第一指示标识用于指示码流是否包括第二渲染中间结果的编码数据;第二指示标识用于指示第二渲染中间结果的类型和子类型。
示例性的,CGMV的类型可以是运动矢量类,运动矢量类可以包括子类型A1、子类型A2和子类型A3;其中,静态物体的CGMV对应的子类型为子类型A1,刚性动态物体的CGMV对应的子类型为子类型A2,非刚性动态物体的CGMV对应的子类型为子类型A3。在图6a的实施例中,第二指示标识可以用于指示第一CGMV的类型和子类型;这样,能够使得终端设备获知生成何种类型的第二CGMV(第二CGMV为CGMV中除第一CGMV之外的部分)。
例如,运动矢量类采用V表示,子类型A1用1表示,子类型A2采用2表示,子类型A3采用3表示。则当第一CGMV为非刚性动态物体的CGMV时,第二指示标识可以是V3。
示例性的,当第一指示标识为第一预设信息(如1)时,表示码流中包含第二渲染中间结果的编码数据;当第一指示标识为第二预设信息(如0)时,表示码流中不包含第二渲染中间结果的编码数据。
以下以码流中的码流描述信息包括第一指示标识和第二指示标识为例,对图6a的编码过程所对应的解码过程进行说明。
图7为示例性示出的解码过程示意图。图7示出的是与图6a对应的解码过程。在图7的实施例中,终端设备基于本地生成的渲染参数进行渲染处理,并生成另一部分的CGMV。图7实施例中,以解码一帧图像为例进行说明。
S701,终端设备接收码流。
S702,终端设备对码流进行解析,以得到解析结果,解析结果包括当前帧对应的残差块和当前帧对应的第一CGMV。
示例性的,S701~S702可以参照上述S501~S502的描述,在此不再赘述。
S703,终端设备生成第一渲染参数和第五渲染参数。
示例性的,第一渲染参数可以包括相机参数可以包括但不限于:视图投影矩阵、相机动态范围、焦距、光圈大小以及景深等参数。
示例性的,终端设备可以加载预存在存储器(如硬盘、内存等)的场景几何信息(如三角面片的顶点坐标)、材质数据(如材质贴图、材质生成函数)以及纹理数据(如纹理贴图)等等,进而可以得到第五渲染参数。
S704,终端设备基于第一渲染参数和第五渲染参数对三维场景进行渲染处理,并在渲染处理过程中基于第一CGMV生成第二CGMV。
示例性的,终端设备可以将第一渲染参数和第五渲染参数,输入至图形渲染引擎(如V-Ray、Unreal、Unity等),由图形渲染引擎对三维场景进行渲染处理;并在渲染处理过程中,基于第一CGMV,生成第二CGMV。
示例性的,解析结果还可以包括第一指示标识和第二指示标识。当终端设备根据第一指示标识,确定码流中包括第二渲染中间结果的编码数据时,可以根据第二指示标识,确定第二渲染中间结果的类型和子类型。接着,在渲染处理过程中,基于第二渲染中间结果的类型和子类型,生成其他子类型的第三渲染中间结果;其中,其他子类型为第二渲染中间结果的类型所包含的子类型中,除第二渲染中间结果对应的子类型之外的子类型。
示例性的,在图7的实施例中,当终端设备根据第二指示标识,确定第一CGMV的类型为运动矢量类,子类型为子类型A1时,即服务器发送的第一CGMV为静态物体的CGMV;则终端设备的图形渲染引擎进行渲染处理过程中,无需生成静态物体的CGMV,仅生成动态物体的CGMV(此时,其他子类型包括子类型A2和子类型A3)即可;也就是说,第二CGMV为动态物体的CGMV。
示例性的,在图7的实施例中,当终端设备根据第二指示标识,确定第一CGMV的类型为运动矢量类,子类型为子类型A2和子类型A3时,即服务器发送的第一CGMV为刚性动态物体的CGMV和非刚性动态物体的CGMV时,则终端设备的图形渲染引擎进行渲染处理过程中,无需生成刚性动态物体的CGMV和非刚性动态物体的CGMV,仅生成静态物体的CGMV(此时,其他子类型包括子类型A1)即可;也就是说,第二CGMV为静态物体的CGMV。
示例性的,在图7的实施例中,当终端设备根据第二指示标识,确定第一CGMV的类型为运动矢量类,子类型为子类型A2时,即服务器发送的第一CGMV为刚性动态物体的CGMV时,则终端设备的图形渲染引擎进行渲染处理过程中,无需生成刚性动态物体的CGMV,仅生成静态物体的CGMV和非刚性动态物体的CGMV(此时,其他子类型包括子类型A1和子类型A3)即可;也就是说,第二CGMV为静态物体的CGMV和非刚性动态物体的CGMV。
示例性的,在图7的实施例中,当终端设备根据第二指示标识,确定第一CGMV的类型为运动矢量类,子类型为子类型A3时,即服务器发送的第一CGMV为非刚性动态物体的CGMV时,则终端设备的图形渲染引擎进行渲染处理过程中,无需生成非刚性动态物体的CGMV,仅生成静态物体的CGMV和刚性动态物体的CGMV(此时,其他子类型包括子类型A1和子类型A2)即可;也就是说,第二CGMV为静态物体的CGMV和刚性动态物体的CGMV。
应该理解的是,终端设备生成动态物体的CGMV/静态物体的CGMV的过程,可以参照上文中的描述,在此不再赘述。
S705,终端设备基于第一CGMV和第二CGMV和残差块进行重建,以得到当前帧的重建图像;其中,第一渲染中间结果作用于重建过程中的以下一项处理:预测。
示例性的,终端设备可以合并第一CGMV和第二CGMV;然后基于合并得到的CGMV(也就是完整的CGMV)作用于重建过程中的预测,以得到当前帧的重建图像。
示例性的,在重建过程中,可以基于CGMV针对当前帧中待解码块进行预测,以得到预测块;然后可以基于待解码块对应的残差块与预测块进行重建,以得到当前帧对应的重建图像。具体重建过程在后续进行说明,在此不再赘述。
由于服务器生成的CGMV,比终端设备生成的CGMV更精确;这样,能够使得终端设备得到的CGMV更精确,进而能够提高预测准确性,从而提高重建图像的图像质量。且终端设备仅需生成部分CGMV,可以节省终端设备的算力,提高解码效率。此外,在同等质量的情况下,相对于现有技术中服务器发送所有的CGMV而言,本申请的服务器仅发送部分CGMV,也可以降低服务器传输至终端设备的数据流的码率开销。
以下以第一渲染中间结果为深度信息,且服务器发送部分深度信息至终端设备为例,对编解码过程进行说明。示例性的,深度信息也就是深度图。
图8a为示例性示出的编码过程示意图。在图8a的实施例中,服务器发送深度图中的部分区域图像至终端设备,不发送第二渲染参数至终端设备。图8a实施例中,以编码一帧经渲染的图像为例进行说明。
S801,服务器接收终端设备发送的第一渲染参数。
S802,服务器生成第二渲染参数。
示例性的,S801~S802可以参照上述S601~S602的描述,在此不再赘述。
S803,服务器基于第一渲染参数和第二渲染参数对三维场景进行渲染处理,以得到经渲染的图像。
S804,服务器基于渲染处理过程中产生的渲染中间结果,选取深度图。
示例性的,深度图可以包括经渲染的图像中每个像素点的深度信息;可以参照图8b,其中,图8b(1)为经渲染的图像,图8b(2)为深度图。
S805,服务器基于深度图对经渲染的图像进行编码,以得到残差块的编码数据并将残差块的编码数据写入码流;其中,深度图作用于编码过程中的以下一项处理:分块。
示例性的,可以将深度图作用于编码过程中的分块,来对经渲染的图像进行编码。示例性的,可以基于深度图对经渲染图的图像进行分块,以得到待编码块;接着,可以对该待编码块进行预测,以得到预测块;然后确定待编码块与预测块之间的残差块;接着,可以对残差块进行编码,并将残差块的编码数据写入码流。具体编码过程在后续实施例进行说明。
S806,服务器对深度图中的第一区域图像进行编码,并将第一区域图像的编码数据写入码流。
示例性的,服务器在生成完整的深度图后,可以对深度图中的第一区域图像进行编码。
一种可能的方式中,第一区域图像可以是指深度图中四个角对应区域的图像。其中,每个角对应区域的图像尺寸,可以按照需求设置,本申请对此不作限制。
一种可能的方式中,第一区域图像可以是指深度图中除四个角对应区域之外区域的图像。
应该理解的是,第一区域图像也可以是深度图中其他区域的图像,本申请对此不作限制。
示例性的,在图8a的实施例中,上述码流描述信息还可以包括第一指示标识和/或第二指示标识。其中,第二指示标识可以用于指示第二渲染中间结果的类型和子类型;第一指示标识可以用于指示码流中是否包含第二渲染中间结果的编码数据。
示例性的,深度图的类型为第一图像类,第一图像类可以包括子类型B1和子类型B2;例如,深度图中四个角对应的区域对应的子类型为子类型B1,深度图中除四个角对应的区域之外的区域对应的子类型为子类型B2。在图8a的实施例中,第二指示标识可以用于指示第一区域图像的类型和子类型;这样,能够使得终端设备获知生成何种哪些区域的图像,即第二区域图像(第二区域图像为深度图中除第一区域图像之外的图像)。
例如,第一图像类采用M表示,子类型B1用1表示,子类型B2采用2表示。则当第一区域图像为深度图中四个角对应区域的图像时,第二指示标识可以是M1。
以下以码流中的码流描述信息包括第一指示标识和第二指示标识为例,对图8a的编码过程所对应的解码过程进行说明。
图9为示例性示出的解码过程示意图。图9示出的是与图8a对应的解码过程。在图9的实施例中,终端设备基于本地生成的渲染参数进行渲染处理,并生成深度图中部分区域图像。图9实施例中,以解码一帧图像为例进行说明。
S901,终端设备接收码流。
S902,终端设备对码流进行解析,以得到解析结果,解析结果包括当前帧对应的残差块和当前帧对应的第一区域图像。
示例性的,S901~S902可以参照上述S501~S502的描述,在此不再赘述。
S903,终端设备生成第一渲染参数和第五渲染参数。
示例性的,S903,可以参照上述S703的描述,在此不再赘述。
S904,终端设备基于第一渲染参数和第五渲染参数进行渲染处理,并在渲染处理过程中基于第一区域图像生成第二区域图像。
示例性的,终端设备可以将第一渲染参数和第五渲染参数,输入至图形渲染引擎(如V-Ray、Unreal、Unity等),由图形渲染引擎对三维场景进行渲染处理;并在渲染处理过程中,基于第一区域图像,生成第二区域图像。
示例性的,解析结果还可以包括第一指示标识和第二指示标识。当终端设备根据第一指示标识,确定码流中包括第二渲染中间结果的编码数据时,可以根据第二指示标识,确定第二渲染中间结果的类型和子类型。接着,在渲染处理过程中,基于第二渲染中间结果的类型和子类型,生成其他子类型的第三渲染中间结果;其中,其他子类型为第二渲染中间结果的类型所包含的子类型中,除第二渲染中间结果对应的子类型之外的子类型。
示例性的,在图9的实施例中,当终端设备根据第二指示标识,确定第一区域图像的类型为第一图像类,子类型为子类型B1时,即服务器发送的第一区域图像为深度图中四个角对应区域的图像;则终端设备的图形渲染引擎进行渲染处理过程中,无需生成四个角对应区域的图像,仅生成除四个角对应区域之外区域的图像(此时,其他子类型为子类型B2)即可;也就是说,第二区域图像为除四个角对应区域之外区域的图像。
示例性的,在图9的实施例中,当终端设备根据第二指示标识,确定第一区域图像的类型为第一图像类,子类型为子类型B2时,即服务器发送的第一区域图像为深度图中除四个角对应区域之外区域的图像;则终端设备的图形渲染引擎进行渲染处理过程中,无需生成除四个角对应区域之外区域的图像,仅生成四个角对应区域的图像(此时,其他子类型为子类型B1)即可;也就是说,第二区域图像为四个角对应区域的图像。
S905,终端设备基于第一区域图像、第二区域图像和残差块进行重建,以得到当前帧的重建图像;其中,第一渲染中间结果作用于重建过程中的以下一项处理:预测。
示例性的,可以按照像素,合并第一区域图像和第二区域图像,以得到的深度图;接着,将基于深度图和残差块进行重建,以得到当前帧的重建图像。
示例性的,重建过程中的预测需要使用当前帧的分块信息,因此可以基于深度图,确定分块信息;接着,基于分块信息和已滤波的重建块,对当前帧中的待解码块进行预测,以得到预测块;然后,可以基于待解码块对应的预测块与残差块进行重建,以得到当前帧对应的重建图像。其中,具体的解码过程在后续进行说明。
由于服务器生成的深度图,比终端设备生成的深度图更精确;这样,能够使得终端设备得到的深度图更精确,进而能够提高分块信息的准确性,从而能够提高重建图像的图像质量。且终端设备仅需生成深度图中部分区域的图像,可以节省终端设备的算力,提高解码效率。此外,在同等质量的情况下,相对于现有技术中服务器发送所有的CGMV而言,本申请的服务器仅发送深度图中部分区域的图像而言,也可以降低服务器传输至终端设备数据流的码率开销。
以下以第一渲染中间结果为Render ID,且服务器发送部分Render ID至终端设备为例,对编解码过程进行说明。其中,Render ID是指一张二维图像,Render ID可以称为Render ID图。
图10a为示例性示出的编码过程示意图。在图10a的实施例中,服务器发送Render ID图中的部分区域图像至终端设备,不发送第二渲染参数至终端设备。图10a实施例中,以编码一帧经渲染的图像为例进行说明。
S1001,服务器接收终端设备发送的第一渲染参数。
S1002,服务器生成第二渲染参数。
示例性的,S1001~S1002可以参照上述S601~S602的描述,在此不再赘述。
S1003,服务器基于第一渲染参数和第二渲染参数对三维场景进行渲染处理,以得到经渲染的图像。
S1004,服务器基于渲染处理过程中产生的渲染中间结果,选取Render ID图。
示例性的,图形渲染引擎生成Render ID图的过程可以如下:在三维场景中,位于视锥体(以相机原点为顶点)的近平面和远平面之间的三角面片上的点,可以投影到屏幕。示例性的,在将三角面片投影到屏幕的过程中,可以查询相机能够观察到的每个三角面片(也就是位于视锥体的近平面与远平面之间)的顶点对应的物体ID;接着,针对每个顶点,基于该顶点对应的物体ID查询预存的着色表,以确定顶点的颜色,即该顶点对应在屏幕上的像素点的颜色。针对三角面片内部其他点对应在屏幕上的像素点的颜色,可以采用三角面片的顶点的颜色进行插值确定;这样可以得到Render ID图。
图10b为示例性示出的Render ID图。在图10b中不同灰度区域对应不同颜色。
S1005,服务器基于Render ID对经渲染的图像进行编码,以得到残差块的编码数据并将残差块的编码数据写入码流;其中,Render ID作用于编码过程中的以下一项处理:滤波。
示例性的,可以将Render ID图作用于编码过程中的滤波,来对重建块进行滤波;后续可以以经滤波的重建块作为参考,对经渲染的图像中的待编码块进行预测,以得到预测块;接着,可以确定待编码块与预测块之间的残差块;之后,可以对残差块进行编码,并将残差块的编码数据写入码流;具体编码过程在后续实施例进行说明。
S1006,服务器对Render ID中的第三区域图像进行编码,并将第三区域图像的编码数据写入码流。
示例性的,服务器在生成完整的Render ID图后,可以对Render ID图中的第三区域图像进行编码。
一种可能的方式中,第三区域图像可以是指Render ID图中四个角对应区域的图像。其中,每个角对应区域的图像尺寸,可以按照需求设置,本申请对此不作限制。
一种可能的方式中,第三区域图像可以是指Render ID图中除四个角对应区域之外区域的图像。
应该理解的是,第三区域图像也可以是Render ID图中其他区域的图像,本申请对此不作限制。
示例性的,在图10a的实施例中,上述码流描述信息还可以包括第一指示标识和/或第二指示标识。其中,第二指示标识可以用于指示第二渲染中间结果的类型和子类型;第一指示标识可以用于指示码流中是否包含第二渲染中间结果的编码数据。
示例性的,Render ID图的类型可以是第二图像类,第二图像类可以包括子类型B3和子类型B4;例如,Render ID图中四个角对应的区域对应的子类型为子类型B3,Render ID图中除四个角对应的区域之外的区域对应的子类型为子类型B4。在图10a的实施例中,第二指示标识可以用于指示第三区域图像的类型和子类型;这样,能够使得终端设备获知生成何种哪些区域的图像,即第四区域图像(第四区域图像为Render ID图中除第三区域图像之外的图像)。
例如,第二图像类采用K表示,子类型B3用1表示,子类型B4采用2表示。则当第三区域图像为Render ID图中四个角对应区域的图像时,第二指示标识可以是K1。
以下以码流中的码流描述信息包括第一指示标识和第二指示标识为例,对图10a的编码过程所对应的解码过程进行说明。
图11为示例性示出的解码过程示意图。图11示出的是与图10a对应的解码过程。在图11的实施例中,终端设备基于本地生成的渲染参数进行渲染处理,并生成Render ID图中部分区域图像。图11实施例中,以解码一帧图像为例进行说明。
S1101,终端设备接收码流。
S1102,终端设备对码流进行解析,以得到解析结果,解析结果包括当前帧对应的残差块和当前帧对应的第三区域图像。
示例性的,S1101~S1102可以参照上述S501~S502的描述,在此不再赘述。
S1103,终端设备生成第一渲染参数和第五渲染参数。
示例性的,S1103,可以参照上述S703的描述,在此不再赘述。
S1104,终端设备基于第一渲染参数和第五渲染参数进行渲染处理,并在渲染处理过程中基于第三区域图像生成第四区域图像。
示例性的,终端设备可以将第一渲染参数和第五渲染参数,输入至图形渲染引擎(如V-Ray、Unreal、Unity等),由图形渲染引擎对三维场景进行渲染处理;并在渲染处理过程中,基于第三区域图像,生成第四区域图像。
示例性的,解析结果还可以包括第一指示标识和第二指示标识。当终端设备根据第一指示标识,确定码流中包括第二渲染中间结果的编码数据时,可以根据第二指示标识,确定第二渲染中间结果的类型和子类型。接着,在渲染处理过程中,基于第二渲染中间结果的类型和子类型,生成其他子类型的第三渲染中间结果;其中,其他子类型为第二渲染中间结果的类型所包含的子类型中,除第二渲染中间结果对应的子类型之外的子类型。
示例性的,在图11的实施例中,当终端设备根据第二指示标识,确定第三区域图像的类型为第二图像类,子类型为子类型B3时,即服务器发送的第三区域图像为Render ID图中四个角对应区域的图像;则终端设备的图形渲染引擎进行渲染处理过程中,无需生成四个角对应区域的图像,仅生成除四个角对应区域之外区域的图像(此时,其他子类型为子类型B4)即可;也就是说,第四区域图像为除四个角对应区域之外区域的图像。
示例性的,在图11的实施例中,当终端设备根据第二指示标识,确定第三区域图像的类型为第二图
像类,子类型为子类型B4时,即服务器发送的第三区域图像为Render ID图中除四个角对应区域之外区域的图像;则终端设备的图形渲染引擎进行渲染处理过程中,无需生成除四个角对应区域之外区域的图像,仅生成四个角对应区域的图像(此时,其他子类型为子类型B3)即可;也就是说,第四区域图像为四个角对应区域的图像。
S1105,终端设备基于第三区域图像、第四区域图像和残差块进行重建,以得到当前帧的重建图像;其中,第一渲染中间结果作用于重建过程中的以下一项处理:滤波。
示例性的,可以按照像素,合并第三区域图像和第四区域图像,以得到的Render ID图。示例性的,可以将Render ID图作用于解码过程中的滤波,来对重建块进行滤波;后续可以以经滤波的重建块作为参考,对当前帧的待解码块进行预测,以得到预测块;接着,基于预测块和残差块进行重建,以得到当前帧的重建图像。具体编码过程在后续实施例进行说明。
由于服务器生成的Render ID图,比终端设备生成的Render ID图更精确;这样,能够使得终端设备得到的Render ID图更精确,进而能够提高参考的重建块的质量,从而能够提高重建图像的图像质量。且终端设备仅需生成Render ID图中部分区域的图像,可以节省终端设备的算力,提高解码效率。此外,在同等质量的情况下,相对于现有技术中服务器发送所有的CGMV而言,本申请的服务器仅发送Render ID图中部分区域的图像而言,也可以降低服务器传输至终端设备数据流的码率开销。
需要说明的是,当码流的码流描述参数不包括第一指示标识时,图7、图9和图11的实施例中终端设备可以根据预先约定的信息,确定码流中是否包括第二渲染中间结果的编码数据。当码流的码流描述参数不包括第二指示标识时,图7、图9和图11的实施例中终端设备可以根据预先约定的信息,确定解析结果中第二渲染中间结果的类型与子类型。
应该理解的是,当第一渲染中间结果为其他信息时,也可以参考上述方式进行编解码;以及可以根据其他信息的数据量,来判断是否将全部/部分其他信息发送至终端设备,本申请对此不作限制。
示例性的,当终端设备生成的第一渲染参数,是图形渲染引擎进行渲染处理所需的部分参数时,服务器可以生成第二渲染参数。由于服务器生成的渲染参数,比终端设备生成的渲染参数更精确;进而,服务器可以将部分或全部的第二渲染参数发送给终端设备,这样,能够使得终端设备生成的第一渲染中间结果更精确,从而提高基于第一渲染中间结果解码出的图像的图像质量。
图12为示例性示出的编码过程示意图。在图12的实施例中,服务器不发送第一渲染中间结果至终端设备,但发送第三渲染参数(部分或全部的第二渲染参数)至终端设备。图12实施例中,以编码一帧经渲染的图像为例进行说明。
S1201,服务器接收终端设备发送的第一渲染参数。
示例性的,第一渲染参数可以包括相机参数。其中,相机参数可以包括但不限于:视图投影矩阵、相机动态范围、焦距、光圈大小以及景深等参数。
S1202,服务器生成第二渲染参数。
示例性的,服务器可以加载预存在存储器(如硬盘、内存等)的场景几何信息(如三角面片的顶点坐标)、材质数据(如材质贴图、材质生成函数)以及纹理数据(如纹理贴图)、动态物体的运动信息等等,进而可以得到第二渲染参数。
示例性的,动态物体的运动信息可以包括刚性动态物体的运动信息(如运动轨迹)和/或非刚性动态物体的运动信息(如运动轨迹)。
S1203,服务器基于第一渲染参数和第二渲染参数对三维场景进行渲染处理,以得到经渲染的图像。
S1204,服务器基于渲染处理过程中产生的渲染中间结果,选取第一渲染中间结果。
示例性的,在图12的实施例中,第一渲染中间结果可以是CGMV、深度信息或Render ID。
S1205,服务器基于第一渲染中间结果对经渲染的图像进行编码,以得到残差块的编码数据并将残差块的编码数据写入码流;第一渲染中间结果作用于编码过程中的至少一项处理:分块、预测或滤波。
示例性的,S1203~S1205可以参照上述实施例的描述,在此不再赘述。
S1206,服务器将第三渲染参数,写入码流。
示例性的,第三渲染参数可以是第二渲染参数中部分参数,也可以是第二渲染参数中的全部参数;本申请对此不作限制。相对于将全部第二渲染参数写入码流而言,将部分第二渲染参数写入码流,能够进一步降低服务器传输至终端设备数据流的码率开销。
示例性的,由于第三渲染参数的数据量较小,因此服务器可以对第三渲染参数编码并将第三渲染参数的编码数据写入码流后,发送给服务器;服务器也可以不对第三渲染参数进行编码,而是直接将第三渲染参数写入码流;本申请对此不作限制。
一种可能的方式中,第三渲染参数可以包括:刚性运动物体的运动信息和非刚性动态物体的运动信息,即将刚性运动物体的运动信息和非刚性动态物体的运动信息,写入码流。
一种可能的方式中,第三渲染参数可以包括刚性运动物体的运动信息,即将刚性运动物体的运动信息写入码流。这样,相对于将刚性运动物体的运动信息和非刚性动态物体的运动信息写入码流而言,能够进一步降低服务器传输至终端设备数据流的码率开销。
一种可能的方式中,第三渲染参数可以包括非刚性运动物体的运动信息,即将非刚性动态物体的运动信息写入码流。这样,相对于将刚性运动物体的运动信息和非刚性动态物体的运动信息写入码流而言,能够进一步降低服务器传输至终端设备数据流的码率开销。
这样,第三渲染参数的数据量远小于第二渲染中间结果的数据量,相对于传输第二渲染中间结果而言,传输第三渲染参数能够进一步降低码率。
示例性的,在图12的实施例中,码流描述信息可以包括以下至少一种:第一指示标识、第二指示标识、第三指示标识或第四指示标识。其中,第一指示标识用于指示码流是是否包括第一渲染中间结果的编码数据,第二指示标识可以用于指示第一渲染中间结果的类型;第三指示标识可以用于指示码流中是否包括第三渲染参数;第四指示标识可以用于指示第三渲染参数的类型;
示例性的,在图12实施例中,第一指示标识可以为第二预设信息,表示码流中不包含第一渲染中间结果的编码数据。
示例性的,第一渲染中间结果对应一种或多种类型。其中,当第一渲染中间结果对应一种类型时,可以将第一渲染中间结果的类型,作为第二指示标识的值写入码流中。当第一渲染中间结果对应多种类型时,可以将用于上述作用于编码过程的第一渲染中间结果的类型,作为第二指示标识的值写入码流中。
示例性的,当第三指示标识为第一预设信息(如1)时,表示码流中包含第三渲染参数;当第三指示标识为第二预设信息(如0)时,表示码流中不包含第三渲染参数。
示例性的,第二渲染参数包含的参数可以对应多种类型,例如,刚性动态物体的运动信息对应的类型为类型C1,非刚性动态物体的运动信息对应的类型为类型C2,等等。可以将写入码流的第三渲染参数的类型,作为第四指示标识的值写入码流中。
以下以码流中的码流描述信息包括第一指示标识、第二指示标识、第三指示标识和第四指示标识为例,对图12的编码过程所对应的解码过程进行说明。
图13为示例性示出的解码过程示意图。图13示出的是与图12对应的解码过程。在图13的实施例中,终端设备基于本地生成的第一渲染参数和从服务器接收的第三渲染参数进行渲染处理,并生成第一渲染中间结果;其中,第三渲染参数包括部分第二渲染参数。图13实施例中,以解码一帧图像为例进行说明。
S1301,终端设备接收码流。
S1302,终端设备对码流进行解析,以得到解析结果,解析结果包括当前帧对应的残差块和当前帧对应的第三渲染参数。
S1303,终端设备生成第一渲染参数和第四渲染参数。
示例性的,第一渲染参数包括相机参数。其中,相机参数可以包括但不限于:视图投影矩阵、相机动态范围、焦距、光圈大小以及景深等参数。
示例性的,终端设备可以从码流中解析出第三指示标识,当基于第三指示标识,确定码流中包括第三渲染参数时,可以根据第四指示标识,确定第三渲染参数的类型。然后根据第三渲染参数的类型,生成第四渲染参数。
示例性的,当服务器将部分第二渲染参数写入码流时,即第三渲染参数包括第二渲染参数中的部分参数时,第四指示标识包括部分第二渲染参数的类型时;此时,终端设备可以基于第三渲染参数的类型,生成第四渲染参数,其中,第四渲染参数为第二渲染参数中除第三渲染参数之外的参数。
例如,假设第三渲染参数的类型为类型C1,即第三渲染参数为刚性动态物体的运动信息时,终端设备生成的第四渲染参数可以包括,如场景几何信息(如三角面片的顶点坐标)、材质数据(如材质贴图、材质生成函数)以及纹理数据(如纹理贴图)和非刚性动态物体的运动信息。
例如,假设第三渲染参数的类型为类型C2,即第三渲染参数为非刚性动态物体的运动信息时,终端设备生成的第四渲染参数可以包括,如场景几何信息(如三角面片的顶点坐标)、材质数据(如材质贴图、材质生成函数)以及纹理数据(如纹理贴图)和刚性动态物体的运动信息。
例如,假设第三渲染参数的类型包括类型C1和类型C2,即第三渲染参数为包括刚性动态物体的运动信息和非刚性动态物体的运动信息,终端设备生成的第四渲染参数可以包括,如场景几何信息(如三角面片的顶点坐标)、材质数据(如材质贴图、材质生成函数)以及纹理数据(如纹理贴图)。
S1304,终端设备基于第一渲染参数、第三渲染参数和第四渲染参数,对三维场景进行渲染处理,并在渲染处理过程中生成的第一渲染中间结果。
示例性的,当第三渲染参数包括第二渲染参数中的部分参数时,则基于第一渲染参、第三渲染参数和第四渲染参数对三维场景进行渲染处理。
应该理解的是,当服务器将全部第二渲染参数写入码流时,即第三渲染参数包括第二渲染参数中的全部参数时,第四指示标识包括所有第二渲染参数的类型;终端设备可以解码出所有的第二渲染参数。此时,终端设备无需生成第四渲染参数,之后,基于第一渲染参和第三渲染参数对三维场景进行渲染处理。
示例性的,第一渲染中间结果可以是CGMV、深度信息或Render ID。
示例性的,终端设备可以根据从码流中解析出的第一指示标识,当确定码流中不包含第一渲染中间结果的编码数据时,在渲染处理过程中,可以根据解析出的第二指示标识,生成对应的类型的第一渲染中间结果。
S1305,终端设备基于第一渲染中间结果和残差块进行重建,以得到当前帧的重建图像;其中,第一渲染中间结果作用于重建过程中的至少一项处理:预测或滤波。
示例性的,S1305可以参照上文的描述,在此不再赘述。
需要说明的是,当码流的码流描述参数不包括第一指示标识时,图13的实施例中终端设备可以根据预先约定的信息,确定码流中是否包括第一渲染中间结果的编码数据。当码流的码流描述参数不包括第二指示标识时,图13的实施例中终端设备可以根据预先约定的信息,确定第一渲染中间结果的类型。当码流的码流描述参数不包括第三指示标识时,图13的实施例中终端设备可以根据预先约定的信息,确定码流中是否包括第三渲染参数。当码流的码流描述参数不包括第四指示标识时,图13的实施例中终端设备可以根据预先约定的信息,确定解析结果中第三渲染参数的类型。
示例性的,第二渲染参数的数据量较小(几/几十kB),因此即使服务器除第二渲染中间结果之外,还发送全部或部分第二渲染参数给终端设备,服务器传输至终端设备数据流的码率开销,也小于现有技术服务器传输至终端设备数据流的码率开销;且还能够节省终端设备的算力。
图14为示例性示出的编码过程示意图。在图14的实施例中,服务器发送第二渲染中间结果和第三渲染参数至终端设备。图14的实施例中,以编码一帧经渲染的图像为例进行说明。
S1401,服务器接收终端设备发送的第一渲染参数。
示例性的,第一渲染参数可以包括相机参数和非刚性动态物体的运动信息(如运动的角色的骨骼节点)。其中,相机参数可以包括但不限于:视图投影矩阵、相机动态范围、焦距、光圈大小以及景深等参数。
S1402,服务器生成第二渲染参数。
示例性的,服务器可以加载预存在存储器(如硬盘、内存等)的场景几何信息(如三角面片的顶点坐标)、材质数据(如材质贴图、材质生成函数)以及纹理数据(如纹理贴图)、动态物体的运动信息等等,进而可以得到第二渲染参数。
示例性的,动态物体的运动信息可以包括刚性动态物体的运动信息(如运动轨迹)和/或非刚性动态物体(是指除运动的角色之外的其他非刚性动态物体)的运动信息(如运动轨迹)。
S1403,服务器基于第一渲染参数和第二渲染参数对三维场景进行渲染处理,以得到经渲染的图像。
S1404,服务器基于渲染处理过程中产生的渲染中间结果,选取第一渲染中间结果。
示例性的,在图14的实施例中,第一渲染中间结果可以是CGMV、深度信息或Render ID。
S1405,服务器基于第一渲染中间结果对经渲染的图像进行编码,以得到残差块的编码数据并将残差块的编码数据写入码流;第一渲染中间结果作用于编码过程中的至少一项处理:分块、预测或滤波。
S1406,服务器对第二渲染中间结果进行编码,并将第二渲染中间结果的编码数据写入码流;其中,
第二渲染中间结果是第一渲染中间结果的部分。
S1407,服务器将第三渲染参数,写入码流。
示例性的,S1405~S1407可以参照上述实施例的描述,在此不再赘述。
示例性的,在图14的实施例中,码流描述信息可以包括以下至少一种:第一指示标识、第二指示标识、第三指示标识和第四指示标识。其中,第一指示码流中是否包含第二渲染中间结果的编码数据,第二指示标识可以用于指示第二渲染中间结果的类型和子类型;第三指示标识用于指示码流是否包括第三渲染参数;第四指示标识用于指示第三渲染参数的类型。
以下以码流中的码流描述信息包括第一指示标识、第二指示标识、第三指示标识和第四指示标识为例,对图14的编码过程所对应的解码过程进行说明。
图15为示例性示出的解码过程示意图。图15示出的是与图14对应的解码过程。在图15的实施例中,终端设备基于本地生成的第一渲染参数和从服务器接收的第三渲染参数进行渲染处理,并生成第三渲染中间结果;其中,第三渲染参数包括部分第二渲染参数。图15实施例中,以解码一帧图像为例进行说明。
S1501,终端设备接收码流。
S1502,终端设备对码流进行解析,以得到解析结果,解析结果包括当前帧对应的残差块、当前帧对应的第二渲染中间结果和当前帧对应的第三渲染参数。
S1503,终端设备生成第一渲染参数和第四渲染参数。
示例性的,第一渲染参数包括相机参数和非刚性动态物体的运动信息(如运动的角色的骨骼节点)。其中,相机参数可以包括但不限于:视图投影矩阵、相机动态范围、焦距、光圈大小以及景深等参数。
S1504,终端设备基于第一渲染参数、第三渲染参数和第四渲染参数,对三维场景进行渲染处理,并在渲染处理过程中基于第二渲染中间结果生成第三渲染中间结果。
S1505,终端设备基于第一渲染中间结果和残差块进行重建,以得到当前帧的重建图像;其中,第一渲染中间结果作用于重建过程中的至少一项处理:预测或滤波。
示例性的,S1504~S1505可以参照上文的描述,在此不再赘述。
需要说明的是,当码流的码流描述参数不包括第一指示标识时,图15的实施例中终端设备可以根据预先约定的信息,确定码流中是否包括第二渲染中间结果的编码数据。当码流的码流描述参数不包括第二指示标识时,图15的实施例中终端设备可以根据预先约定的信息,确定第二渲染中间结果的类型和子类型。当码流的码流描述参数不包括第三指示标识时,图15的实施例中终端设备可以根据预先约定的信息,确定码流中是否包括第三渲染参数。当码流的码流描述参数不包括第四指示标识时,图15的实施例中终端设备可以根据预先约定的信息,确定解析结果中第三渲染参数的类型。
应该理解的是,图2、图4、图6a、图8a、图10a、图12、图14实施例中,服务器也可以不从终端设备获取第一渲染参数,而是其自身生成第一渲染参数。其中,服务器生成的第一渲染参数包括的参数的类型,和终端设备生成的第一渲染参数包括的参数的类型相同;服务器生成的第一渲染参数包括的参数的精度,大于或等于终端设备生成的第一渲染参数包括的参数的精度。示例性的,服务器和终端设备可以按照预先约定生成第一渲染参数。
以下对第一渲染中间数据作用于针对经渲染的图像的编码过程中的以下至少一项处理:分块、预测或滤波的过程以及对应的解码过程进行说明。
图16a为示例性示出的编码框架示意图。参照图16a,示例性的,编码器可以包括:分块模块、帧内预测模块、帧间预测模块、变换模块、量化模块、熵编码模块、反量化模块、反变换模块、环路滤波模块和存储器。其中,图16a的分块模块是针对现有编码器中的分块模块优化后得到的。应该理解的是,本申请的编码器还可以包括现有编码器的分块模块,或者本申请的编码器中分块模块可以包括现有编码器中分块模块的全部或部分功能。
以下基于图16a,对将深度信息作用于分块模块的分块,以对经渲染的图像进行编码的过程进行说明。
图16b为示例性示出的编码过程示意图。图16b是以图16a为基础示出的编码过程,图16b中的步骤由编码器执行;在图16b的实施例中,第一渲染中间结果为深度信息。
S1601,基于深度信息对经渲染的图像进行分块,以得到多个预测单元。
示例性的,可以将待编码视频和深度信息,输入至分块模块;由分块模块基于深度信息针对待编码视
频中的每帧经渲染的图像进行分块,得到多个预测单元。以下以分块模块对一帧经渲染的图像进行分块为例进行说明。
示例性的,分块模块可以先根据编码器的预设参数,将经渲染的图像划分为多个编码树单元(Coding Tree Units,CTU)。参照图16c,图16c(1)为经渲染的图像,图16c(2)为一个CTU。接着,针对多个CTU中的一个CTU,可以根据预设划分规则,将该CTU划分为多个编码单元(Coding Unit,CU)。如图16c(3)所示,图16c(2)的一个CTU被划分为了多个CU,一个方框对应为一个CU。
应该理解的是,一种可能的情况中,每个CTU均被划分为多个CU。一种可能的情况中,部分CTU均未被划分为CU,另一部分CTU中的各CTU均被划分为多个CU;具体根据预设划分规则和CTU的图像内容确定,可以参照现有技术中针对将CTU划分为CU的描述,在此不再赘述。
现以将多个CU中的一个CU划分为多个预测单元(Prediction Unit,PU)为例进行说明。示例性的,可以基于深度信息对该CU进行划分,以得到多个PU。示例性的,可以根据深度信息,确定计算机图形边缘(Computer Graphic Edge,CGE)信息;接着,可以基于CGE信息,将该CU划分为多个PU。其中,CGE信息可以包括经渲染的图像中对象的对象边缘信息,进而基于CGE信息,能够将该CU合理的划分为多个PU,进而使得后续得到更好的预测效果(例如,后续预测得到的预测块更准确);而预测效果更好时,确定的残差块更小,能够降低码率;且还能够提高图像的重建质量。此外,相对于现有技术划分PU的方式而言,基于CGE信息划分PU的计算量更小。
图16d为示例性示出的CGE信息生成过程示意图。其中,图16d(1)为经渲染的图像,图16d(2)为深度信息(也可以称为深度图)。具体的,可以对深度信息进行滤波(例如sobel滤波),以得到边缘深度图,如图16d(3)所示。接着,可以对边缘灰度图进行聚类操作(例如,使用大津法进行聚类操作),以得到边缘二值图,如图16d(4)所示。之后,可以将基于边缘二值图,生成CGE信息。一种可能的方式中,可以将边缘二值图,作为CGE信息,也就是说,图16d(4)即为CGE信息。参照图16d(4)可知,图16d(4)中白色像素点形成的边缘信息,就是经渲染的图像中对象(如瓶子、水果)的边缘信息(也就是对象边缘信息)。
应该理解的是,本申请可以采用其他滤波算法对深度信息进行滤波,本申请对此不作限制。此外,本申请也可以采用其他聚类算法对边缘灰度图进行聚类操作,本申请对此不作限制。
一种可能的方式中,可以基于CGE信息,确定该CU中的对象边缘线;接着,从对象边缘线中,搜索多条候选分块路径;之后,从多条候选分块路径选取的目标分块路径,按照目标分块路径,将该CU划分为多个PU。
具体的,假设CGE信息为边缘二值图,可以基于该CU在经渲染的图像中的区域边缘坐标,从边缘二值图中确定与该CU匹配的目标区域。其中,目标区域在边缘二值图中的区域边缘坐标,与该CU在经渲染的图像中的区域边缘坐标相同。接着,可以采用深度遍历法,从目标区域的对象边缘线(也就是像素值为1的区域)中,查找可以将目标区域划分为两个子区域的所有路径(应该理解的是,路径是不占像素的,是两个像素的分界线),也就是候选分块路径。之后,可以从候选分块路径中,选取最短候选分块路径,作为目标分块路径。随后,按照目标分块路径,将该CU划分为多个PU。
图16e为示例性示出的PU划分过程示意图。其中,图16e(1)为一个CTU,图16e(2)为边缘二值图,CGE信息为边缘二值图。
参照图16e,针对CTU中的一个CU(如CU1所示),在边缘二值图(如图16e(2)所示)匹配的目标区域为R2所示。其中,R2的区域边缘坐标与CU1的区域边缘坐标相同。假设R2区域中对象边缘线(也就是R2中白色区域)的宽度为4个像素,则可以查找出5条候选分块路径。然后可以从5条候选分块路径中,选择一条最短候选分块路径,作为目标分块路径。然后将CU1划分为两个PU,如图16e(3)所示,CU1被划分为PU1和PU2。依次类推,图16e(1)中其他CU,也可以参照该种方式,划分为多个PU,可以如图16e(3)所示。
应该理解的是,当目标区域中对象边缘线包括多条,则一个CU可以被划分为2个或2个以上的PU。
应该理解的是,一种可能的情况中,每个CU均被划分为多个PU。一种可能的情况中,部分CU均未被划分为PU,另一部分CU中的各CU均被划分为多个PU。
应该理解的是,可以将一个预测单元作为一个待编码块,也可以将未被划分为CU的CTU作为待编码块,以及可以将未被划分为PU的CU作为待编码块。
S1602,基于重建块对多个预测单元进行预测,以得到多个预测块,多个预测块与多个预测单元一一
对应。
示例性的,当经渲染的图像为关键帧时,针对多个PU中的每一个PU,可以由帧内预测模块基于经渲染的图像对应的重建块,进行帧内预测,确定该PU对应的预测块;这样,针对多个PU可以确定多个预测块,多个预测块与多个预测单元一一对应。
示例性的,当经渲染的图像为非关键帧时,可以确定经渲染的图像的参考帧;针对多个PU中的每一个PU,可以由帧间预测模块基于经渲染的图像对应的参考帧(参考帧包括多个重建块)进行帧间预测,确定该PU对应的预测块;这样,针对多个PU可以确定多个预测块,多个预测块与多个预测单元一一对应。
S1603,对多个预测块与多个预测单元之间的多个残差块进行编码,以得到多个残差块的编码数据,多个残差块与多个预测单元一一对应。
示例性的,针对多个PU中的每一个PU,可以将该PU与对应的预测块进行残差,以得到该PU对应的残差块;进而,可以得到多个残差块。接着,可以对这多个残差块进行编码,得到编码数据;然后将这多个残差块的编码数据,写入码流。
再次参照图16a,示例性的,针对每一个残差块,将该残差块输入至变换模块,由变换模块对残差块进行变换,得到变换结果并将变换结果输出至量化模块。随后,量化模块可以对变换结果进行量化,得到量化结果并将量化结果输出至熵编码模块;然后,熵编码模块可以对量化结果进行熵编码,得到残差块的编码数据,并将残差块的编码数据写入码流。
示例性的,量化模块还可以将量化结果输出至反量化模块,由反量化模块进行反量化,得到反量化结果并将反量化结果输出至反变换模块。接着,反变换模块对反量化结果进行反变换,得到经解码的残差块。然后,可以将经解码的残差块与帧内预测模块输出的预测块进行叠加,得到重建块。随后,将重建块输入至环路滤波模块,由环路滤波模块对重建块进行环路滤波,得到经滤波的重建块并将经滤波的重建块输出至存储器中。(其中,环路滤波模块在得到经滤波的重建块后,可以将经滤波的重建块拼接至待重建图像的对应位置;待得到一帧重建图像后,可以将重建图像输出至存储器中存储)。
应该理解的是,针对CTU和CU,也可以按照S1602~S16031进行预测,以及对CTU与对应的预测块之间的残差块进行编码和对CU和对应的预测块之间残差块进行编码,在此不再赘述。
图17a为示例性示出的解码框架示意图。参照图17a,示例性的,本申请的解码器可以包括:熵解码模块、反量化模块、反变换模块、帧内预测模块、帧间预测模块、环路滤波模块和存储器。其中,图17a的帧间预测模块是针对现有编码器中的帧间预测模块优化后得到的,帧内预测模块是针对现有编码器中的帧内预测模块优化后得到的。应该理解的是,本申请编码器的帧间预测模块还可以包括包括现有编码器的帧间预测模块的全部或部分功能,或者,本申请的编码器还可以包括现有编码器的帧间预测模块;以及本申请编码器的帧内预测模块还可以包括现有编码器的帧内预测模块的全部或部分功能,或者,本申请的编码器还可以包括现有编码器的帧内预测模块。
以下基于图17a,对将深度信息作用于帧间预测模块/帧内预测模块的预测,以对经渲染的图像进行解码的过程进行说明。
图17b为示例性示出的解码过程示意图。图17b是以图17a为基础的解码过程。图17b中的步骤由解码器执行;在图17b的实施例中,第一渲染中间结果为深度信息。
S1701、基于深度信息,确定当前帧的分块信息。
示例性的,终端设备在接收到码流后,可以对码流进行解析,以得到解析结果。其中,解析过程可以如下:从码流中提取出残差块的编码数据,然后将残差块的编码数据输入至熵解码模块,由熵解码模块对残差块的编码数据进行熵解码,得到熵解码数据。接着,可以将熵解码数据输入至反量化模块,由反量化模块进行反量化,得到反量化数据并将反量化数据输入至反变换模块。随后,反变换模块对反量化数据进行反变换,得到当前帧的残差块(也就是图17a所示的经解码的残差块)。
需要说明的是,还可以从码流中提取出用于描述码流的码流描述信息,此时,无需对码流描述信息进行熵解码、反量化和反变换等操作。
示例性的,当根据从码流中解析出的码流描述信息,确定是帧内预测时,可以由帧内预测模块进行帧内预测,以得到预测块,即执行S1701~S1702。
示例性的,当根据从码流中解析出的码流描述信息,确定是帧间预测时,可以由帧内预测模块进行帧
间预测,以得到预测块,即执行S1701~S1702。
示例性的,可以先确定CTU的划分方式和CU的划分方式;接着,基于深度信息,确定CGE信息;然后基于CGE信息,确定将CU划分为多个PU的方式(也就是PU的划分方式);接着,将CTU的划分方式、CU的划分方式和PU的划分方式,确定为当前帧的分块信息。其中,CTU的划分方式、CU的划分方式和PU的划分方式,可以参照上述S1601的描述,在此不再赘述。
S1702、基于分块信息和重建块,对当前帧包括的多个预测单元进行预测,以得到多个预测块,多个预测块与多个预测单元一一对应,多个残差块与多个预测单元一一对应。
示例性的,当根据从码流中解析出的码流描述信息,确定是帧内预测时,可以由帧内预测模块基于分块信息和基于经渲染的图像对应的重建块,对当前帧包括的多个预测单元进行预测,以得到多个预测块。
示例性的,当根据从码流中解析出的码流描述信息,确定是帧间预测时,可以由帧间预测模块基于分块信息和基于经渲染的图像对应的参考帧(参考帧包括多个重建块),对当前帧包括的多个预测单元进行预测,以得到多个预测块。
其中,多个预测块与多个预测单元一一对应,多个残差块与多个预测单元一一对应。
S1703、基于多个残差块和多个预测块,确定当前帧的重建图像。
示例性的,针对每一个残差块,可以将该残差块(图17a中所示的经解码的残差块)与该残差块所对应预测块叠加,得到重建块。然后,可以对重建块进行环路滤波,以得到经滤波的重建块并将经滤波的重建块输出至存储器中。(其中,环路滤波模块在得到经滤波的重建块后,可以将经滤波的重建块拼接至待重建图像的对应位置;待得到一帧重建图像后,可以将重建图像输出至存储器中存储)。这样,多帧重建图像可以组成重建视频。
需要说明的是,当第一渲染中间结果为深度信息时,服务器可以不传输第二渲染中间结果,而是传输CGE信息。其中,可以对CGE信息进行编码,然后将CGE信息的编码数据写入码流。这种情况下,终端设备可以无需生成深度信息,此时,S1701可以替换为基于CGE信息,确定当前帧的分块信息。
在图16b或图17b的实施例中,基于深度信息确定的CGE信息,包括了经渲染的图像中对象的对象边缘信息;基于CGE信息进行PU划分,能够将该CU合理的划分为多个PU,进而使得后续得到更好的预测效果(例如,后续预测得到的预测块更准确);而预测效果更好时,确定的残差块更小,能够降低码率;且还能够提高图像的重建质量。此外,相对于现有技术划分PU的方式而言,基于CGE信息划分PU的计算量更小。
图18a为示例性示出的编码框架示意图。参照图18a,示例性的,编码器可以包括:分块模块、帧内预测模块、第一帧间预测模块、第二帧间预测模块、变换模块、量化模块、熵编码模块、反量化模块、反变换模块、环路滤波模块和存储器。其中,图18a的第二帧间预测模块是现有编码器中的帧间预测模块,或者说,第二帧间预测模块包括现有编码器中帧间预测模块的全部或部分功能,第一帧间预测模块是相对于现有编码器新增的帧间预测模块。
以下基于图18a,对将CGMV作用于第一帧间预测模块的预测,以对经渲染的图像进行编码的过程进行说明。
图18b为示例性示出的编码过程示意图。图18b是以图18a为基础示出的编码过程,图18b中的步骤由编码器执行;在图18b的过程中,第一渲染中间结果为CGMV,且图18b的编码过程为帧间编码过程。
S1801,基于重建块和CGMV,对经渲染的图像中待编码块进行预测,以得到待编码块对应的预测块。
示例性的,可以将待编码视频,输入至分块模块;由分块模块对待编码视频中的每帧经渲染的图像进行分块,得到多个待编码块。接着,由第一帧间预测模块基于CGMV进行帧间预测。
示例性的,从重建图像中,确定经渲染的图像的参考帧(参考帧包括多个重建块);然后根据经渲染的图像中待编码块的区域边缘坐标,从经渲染的图像的参考帧中,选取一个或多个参考块(参考块可以是完整的重建块,也可以是重建块的部分,还可以由多个重建块组成);其中,参考块的尺寸与待编码块的尺寸相同。例如,根据经渲染的图像中待编码块的区域边缘坐标,确定经渲染的图像的参考帧中的目标图像块,该目标图像块在参考帧中的区域边缘坐标,与待编码块在经渲染的图像中的区域边缘坐标相同。接着,选取该目标图像块周围的一个或多个其他图像块作为参考块;例如,选取围绕目标图像块一周的其他图像块作为参考块。
接着,可以基于待编码块的参考块和CGMV(经渲染的图像与参考帧之间的CGMV,包括参考帧中
每个像素点的CGMV),确定与待编码块匹配的预测块。其中,当待编码块的参考块为多个时,针对一个参考块,可以根据该参考块的像素点坐标,从经渲染的图像与参考帧之间的CGMV中,选取该参考块对应的CGMV(包括该参考块中每个像素点的CGMV)。接着,基于参考块和该参考块对应的CGMV,确定一个预测块。
示例性的,可以基于该参考块对应的CGMV,移动该参考块的像素点,以得到预测像素集合。接着,基于预测像素集合和该参考块中像素点的像素值,生成预测块。具体地,针对预测像素集合中的一个第一像素点,如果该第一像素点超出该参考块的边界,则一种可能的方式中,可以将该第一像素点的亮度可以设置为第一预设值,和色度值可以设置为第二预设值。其中,第一预设值可以按照需求设置如16,第二预设值可以按照需求设置,如128;本申请对此不作限制。一种可能的方式中,该第一像素点的像素值可以设置为参考块的平均像素值。
示例性的,如果该第一像素点未超出该参考块的边界,则获取参考块中与该第一像素点位置对应第二像素点的像素值,将该第二像素点的像素值作为该第一像素点的像素值。
一种可能的方式中,当确定出多个预测块时,可以计算多个预测块对应的率失真代价,选取率失真代价最小的预测块执行S1802。
一种可能的方式中,当确定出多个预测块时,可以先将多个预测块进行融合,得到第一融合预测块;接着,可以计算多个预测块对应的率失真代价和第一融合预测块的率失真代价,选取率失真代价最小的预测块执行S1802。
示例性的,可以参照如下公式将多个预测块进行融合:
U=(ω1*V1+ω2*V2......+ωn*Vn)/(ω1+ω2......+ωn)
U=(ω1*V1+ω2*V2......+ωn*Vn)/(ω1+ω2......+ωn)
其中,V1、V2......Vn为预测块,U为第一融合预测块,n为预测块的数量。ω1、ω2......ωn为各个预测块对应的权重,具体可以按照需求设置,本申请对此不作限制。
一种可能的方式中,在S1801的基础上,还可以由第二帧间预测模块基于经渲染的图像的参考帧进行传统帧间预测(也就是现有技术中的帧间预测),以得到一个或多个预测块。为了便于描述,可以将基于CGMV确定的预测块,称为第一预测块;将基于传统帧间预测方式确定的预测块,称为第二预测块。
这种情况下,一种可能的方式中,可以从第一预测块和第二预测块中,选取率失真代价最小的预测块执行S1802。一种可能的方式中,可以当第二预测块为多个时,可以将第二预测块进行融合,得到第二融合预测块;接着,从第二预测块、第二融合预测块、第一预测块和第一融合预测块中,选取率失真代价最小的预测块执行S1802。一种可能的方式中,还可以对第二预测块和第一预测块进行融合,得到第三融合预测块;然后,从基于第一预测块、第二预测块和第三融合预测块中,选取率失真代价最小的预测块执行S1802;如图18c所示。在图18c中,第一帧间预测是由第一帧间预测模块执行的,第二帧间预测是由第二帧间预测模块执行的。
一种可能的方式中,还可以从基于第一预测块、第一融合预测块、第二预测块、第二融合预测块和第三融合预测块中,选取率失真代价最小的预测块执行S1802;应该理解的是,本申请不限制最终用于执行S1802的预测块的选取方式。
S1802,对经渲染的图像中的待编码块与对应的预测块之间的残差块进行编码,以得到残差块的编码数据。
示例性的,针对多个待编码块中的每一个待编码块,可以将该待编码块与对应的残差块进行残差,以得到该待编码块对应的残差块;进而,可以得到多个残差块。接着,可以对这多个残差块进行编码,得到编码数据;然后将这多个残差块的编码数据,写入码流。具体对残差块进行编码的过程,可以参照上述S1603的描述,在此不再赘述。
示例性的,待编码可以是PU。
示例性的,当S1802中的预测块是基于CGMV确定的预测块时,可以将用于确定预测块对应的参考块的块标识,写入码流中。当S1802中的预测块是基于传统帧间预测方法确定的预测块时,可以将参考帧的帧标识以及预测块与待编码块之间的运动矢量,写入码流中。其中,块标识和帧标识,均可以称为码流描述信息。
图19a为示例性示出的解码框架示意图。参照图19a,示例性的,本申请的编码器可以包括:熵解码
模块、反量化模块、反变换模块、帧内预测模块、第一帧间预测模块、第二帧间预测模块、环路滤波模块和存储器。其中,图19a的第二帧间预测模块是现有编码器中的帧间预测模块,或者说,第二帧间预测模块包括现有编码器中帧间预测模块的全部或部分功能,第一帧间预测模块是相对于现有编码器新增的帧间预测模块。
以下基于图19a,对将CGMV作用于帧间预测模块的预测,以对经渲染的图像进行解码的过程进行说明。
图19b为示例性示出的解码过程示意图。图19b是以图19a为基础的解码过程。图19b中的步骤由解码器执行;在图19b的实施例中,第一渲染中间结果为CGMV。
S1901,基于CGMV和重建块,对当前帧中待解码块进行预测,以得到待解码块对应的预测块。
示例性的,当根据从码流中解析出的码流描述信息,确定编码过程中是基于CGMV确定的预测块时,可以执行S1901。示例性的,针对当前帧中的待解码块可以根据码流描述信息的块标识,从当前帧对应的参考帧(参考帧包括多个重建块)中,选取待解码块匹配的重建块;接着,基于CGMV和与待编码块匹配的重建块,生成待解码块对应的预测块,具体可以参照上述S1801的描述,在此不再赘述。
示例性的,当根据从码流中解析出的码流描述信息,确定编码过程中是基于传统帧间预测方法确定的预测块时,可以在解码端使用传统帧间预测方法确定的预测块;在此不再赘述。
S1902,基于残差块和预测块,确定当前帧的重建图像。
示例性的,针对每一个残差块,可以将该残差块(图19a中所示的经解码的残差块)与该残差块所对应预测块叠加,得到重建块。然后,可以对重建块进行环路滤波,以得到经滤波的重建块并将经滤波的重建块输出至存储器中。(其中,环路滤波模块在得到经滤波的重建块后,可以将经滤波的重建块拼接至待重建图像的对应位置;待得到一帧重建图像后,可以将重建图像输出至存储器中存储)。这样,多帧重建图像可以组成重建视频。
在图18b和图19b的实施例中,CGMV是图形学手段生成的,避免了现有编码器运动估计不准的问题;且CGMV是像素级的MV,而现有编码器生成的MV是图像块级别的MV,像素级的MV能够更加准确地描绘物体的边缘,降低预测误差;因此,基于CGMV来确定预测块,能够一定程度的减少预测块的误差,提高预测块的准确性,继而能够提升帧间编码压缩效率。
图20a为示例性示出的编码框架示意图。参照图20a,示例性的,编码器可以包括:分块模块、帧内预测模块、帧间预测模块、变换模块、量化模块、熵编码模块、反量化模块、反变换模块、环路滤波模块和存储器。其中,图20a的环路滤波模块是针对现有编码器中的环路滤波模块优化后得到的。应该理解的是,本申请的编码器的环路滤波模块还可以包括现有环路滤波模块,或者,本申请编码器还包括现有编码器中的环路滤波模块的全部或部分功能;本申请对此不作限制。
以下基于图20a,对将Render ID作用于环路滤波模块的滤波,以对经渲染的图像进行编码的过程进行说明。
图20b为示例性示出的编码过程示意图。图20b是以图20a为基础示出的编码过程,图20b中的步骤由编码器执行;在图20b的过程中,第一渲染中间结果为Render ID。
参照图20a以及结合上述描述,重建过程可以如下:由量化模块将量化结果输出至反量化模块,由反量化模块进行反量化,得到反量化结果并将反量化结果输出至反变换模块。接着,反变换模块对反量化结果进行反变换,得到经解码的残差块。然后,可以将经解码的残差块与帧内预测模块输出的预测块进行叠加,得到重建块。随后,将重建块输入至环路滤波模块,由环路滤波模块对重建块进行环路滤波,得到经滤波的重建块并将经滤波的重建块输出至存储器中。(其中,环路滤波模块在得到经滤波的重建块后,可以将经滤波的重建块拼接至待重建图像的对应位置;待得到一帧重建图像后,可以将重建图像输出至存储器中存储)。示例性的,环路滤波模块对一个重建块进行滤波的过程可以参照如下S2001~S2002:
S2001,基于Render ID,确定滤波参数。
示例性的,为了便于描述,可以将待滤波的重建块(也就说图20a中的重建块)称为第一重建块,将与第一重建块相邻的经滤波的重建块称为第二重建块。
示例性的,环路滤波模块可以获取第一重建块对应的Render ID图;其中,第一重建块对应的Render ID图,可以是指第一重建块对应待重建图像的Render ID图。接着,可以确定第一重建块对应的Render ID图中,与第一重建块对应的第一区域;其中,第一重建块在待重建图像中的位置和尺寸,与第一区域在
Render ID图中的位置和尺寸均相同。以及确定第一重建块对应的Render ID图中,与第二重建块对应的第二区域;其中,第二重建块在待重建图像中的位置和尺寸,与第二区域在Render ID图中的位置和尺寸相同。之后,根据第一区域与第一区域边界线两侧像素(也就是边缘像素)的颜色值,判断第一重建块与第二重建块边界线两侧像素是否属于同一对象。随后,根据判断结果,确定滤波参数。其中,滤波参数可以为边界强度(boundary strength,BS)。
示例性的,如果第一重建块与第二重建块边界线两侧像素属于同一对象,且第一重建块和第二重建块中的一个重建块为帧内预测时,可以将BS设置为第一预设参数值如2。
示例性的,如果第一重建块与第二重建块边界线两侧像素属于同一对象,且第一重建块和第二重建块均不是帧内预测,则当满足下列条件中的任意一个条件时,可以将BS设置为第二预设参数值如1。其中,假设第一重建块与第二重建块边界线两侧像素中,位于第一重建块的边缘像素组成的块称为A1,位于第二重建块的边缘像素组成的块称为A2:
(1)A1的变换系数为非0变换系数或A2的变换系数为非0变换系数,且A1或A2是TU(Transform Unit,变换单元)的边界。其中,变换系数是指变换模块进行变换时所采用的系数。
(2)A1和A2之间运动矢量的绝对差值大于一个整像素。
(3)A1对应的帧间预测块(即帧间预测确定的预测块)和A1对应的帧间预测块的参考帧不同。
(4)A1的运动矢量的数量和A2的运动矢量的数量不同。
示例性的,如果第一重建块与第二重建块边界线两侧像素不属于同一对象,则可以将BS设置为第三预设参数值如0。
相对于现有技术而言,本申请引入Render ID来判断当前待滤波的重建块与相邻经滤波的重建块的边界像素是否属于同一对象;然后根据判断结果来确定滤波参数,能够更加准确的估计环路滤波的强度,提高经滤波的重建块的质量。
S2002,基于滤波参数对重建块进行滤波。
示例性的,当BS等于第一预设参数值时,说明块状伪影明显,此时,可以对第一重建块的亮度边界(也就是A1包括的像素的亮度)进行强滤波,以使第一重建块中位于边界线一侧的像素(也就是A1包括的像素)的更模糊。以及对第一重建块的色度边界(也就是A1包括的像素的色度)按照预设色度滤波方式进行滤波。
示例性的,当BS等于第二预设参数值时,可以对第一重建块的色度边界不进行滤波,以及可以按照以下方法来判断是否对第一重建块的亮度边界进行滤波:可以根据A1的像素值变化和A2的像素值的变化,确定纹理信息;接着,根据A1和A2的QP(quality parameter,量化参数)值(即量化模块进行量化时的量化参数)进行查表,通过查表得到阈值β。如果纹理信息小于β则进行滤波,否则不进行滤波。当纹理信息小于β时,根据A1和A2的像素值的变换情况和阈值β进行查表,确定对第一重建块的亮度边界是进行弱滤波还是强滤波;具体可以参照现有技术中的描述,在此不再赘述。
示例性的,当BS等于第二预设参数值时,可以不对第一重建块进行滤波。
S2003,基于重建块对经渲染的图像中的待编码块进行预测,以得到待编码块对应的预测块,重建块为基于Render ID经滤波的重建块。
示例性的,若针对经渲染的图像是帧间预测时,可以从已重建图像中选取参考帧(参考帧包括多个基于Render ID经滤波的重建块);针对经渲染的图像中的待编码块,可以基于参考帧对待编码进行帧间预测,以从参考帧中选取出与待编码块匹配的预测块。
示例性的,若针对经渲染的图像是帧内预测时,针对经渲染的图像中的待编码块,可以从经渲染的图像对应的重建块(该重建块为基于Render ID经滤波的重建块)中,选取与待编码块匹配的重建块,作为与待编码块匹配的预测块。
S2004,对待编码块和预测块之间的残差块进行编码,以得到残差块的编码数据。
示例性的,S2004可以参照上文中的描述,在此不再赘述。
图21a为示例性示出的解码框架示意图。图20a为示例性示出的编码框架示意图。参照图21a,示例性的,编码器可以包括:帧内预测模块、帧间预测模块、反变换模块、反量化模块、熵解码模块、环路滤波模块和存储器。其中,图21a的环路滤波模块是针对现有编码器中的环路滤波模块优化后得到的,应该理解的是,本申请的编码器的环路滤波模块还可以包括现有环路滤波模块的全部或部分功能,或者,本申
请编码器可以包括现有编码器中的环路滤波模块。
以下基于图21a,对将Render ID作用于环路滤波模块的滤波,以对经渲染的图像进行解码的过程进行说明。
图21b为示例性示出的解码过程示意图。图21b是以图20a为基础的解码过程。图21b中的步骤由解码器执行;在图21b的实施例中,第一渲染中间结果为Render ID。
S2101,基于Render ID,确定滤波参数。
S2102,基于滤波参数对重建块进行滤波。
示例性的,S2101~S2102,可以参照上述S2001~S2002的描述,在此不再赘述。
S2103,基于重建块对当前帧中待解码块进行预测,以得到待解码块对应的预测块。
示例性的,若针对当前帧是帧间预测时,可以从已重建图像中选取当前帧的参考帧(包括多个基于Render ID经滤波的重建块);针对当前帧的待解码块,可以基于参考帧对该待解码块进行帧间预测,以从参考帧中选取出与待解码块对应的预测块。
示例性的,若针对当前帧是帧内预测时,针对当前帧中的待解码块,可以从当前帧对应的重建块(基于Render ID经滤波的重建块)中,选取与该待解码块匹配的重建块,作为与该待解码块匹配的预测块。
S2104,基于残差块和预测块,确定当前帧的重建图像。
示例性的,S2104可以参照上文中的描述,在此不再赘述。
相对于现有技术而言,基于第一渲染中间结果对重建块进行滤波,能够降低重建块之间的块效应,进而能够提高重建块的质量。这样,基于已滤波的重建块为参考,对经渲染的图像中的待编码进行编码,能够降低码率。
应该理解的是,第一渲染中间结果可以作用于编码过程中的任意两项处理:分块、预测或滤波。例如,第一渲染中间结果作用于编码过程中的分块和预测,则针对经渲染的图像的编码过程,可以将图16b的实施例与图18b的实施例结合;以及针对经渲染的图像的解码过程,可以将图17b和图19b结合。例如,第一渲染中间结果作用于编码过程中的分块和滤波,则针对经渲染的图像的编码过程,可以将图16b的实施例与图20b的实施例结合;以及针对经渲染的图像的解码过程,可以将图17b和图21b结合。例如,第一渲染中间结果作用于编码过程中的滤波和预测,则针对经渲染的图像的编码过程,可以将图20b的实施例与图18b的实施例结合;以及针对经渲染的图像的解码过程,可以将图21b和图19b结合。
应该理解的是,第一渲染中间结果可以作用于编码过程中的三项处理:分块、预测和滤波;此时,针对经渲染的图像的编码过程,可以将图16b的实施例、图18b的实施例和图20b的实施例结合;以及针对经渲染的图像的解码过程,可以将图17b、图19b和图21b的实施例结合。
一个示例中,图22示出了本申请实施例的一种装置2200的示意性框图装置2200可包括:处理器2201和收发器/收发管脚2202,可选地,还包括存储器2203。
装置2200的各个组件通过总线2204耦合在一起,其中总线2204除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图中将各种总线都称为总线2204。
可选地,存储器2203可以用于存储前述方法实施例中的指令。该处理器2201可用于执行存储器2203中的指令,并控制接收管脚接收信号,以及控制发送管脚发送信号。
装置2200可以是上述方法实施例中的电子设备或电子设备的芯片。
其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的编解码方法。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的编解码方法。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的编解码方法。
其中,本实施例提供的电子设备、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本申请各个实施例的任意内容,以及同一实施例的任意内容,均可以自由组合。对上述内容的任意组合均在本申请的范围之内。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
结合本申请实施例公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(Random Access Memory,RAM)、闪存、只读存储器(Read Only Memory,ROM)、可擦除可编程只读存储器(Erasable Programmable ROM,EPROM)、电可擦可编程只读存储器(Electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机可读存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (44)
- 一种端云协同系统,其特征在于,所述端云协同系统包括服务器和终端设备,所述服务器包括第一渲染模块、编码器和第一通信模块,所述终端设备包括第二通信模块、第二渲染模块和解码器;其中:所述第一渲染模块,用于基于渲染参数对三维场景进行渲染处理,以得到经渲染的图像;其中,所述渲染参数包括从所述终端设备获取的第一渲染参数;基于所述渲染处理过程中产生的渲染中间结果,选取第一渲染中间结果;所述编码器,用于基于所述第一渲染中间结果对所述经渲染的图像进行编码,以得到残差块的编码数据并将所述残差块的编码数据写入码流;其中,所述残差块是通过所述经渲染的图像中待编码块与对应预测块进行残差得到,所述预测块是通过对所述待编码块进行预测得到;所述第一渲染中间结果作用于所述编码过程中的至少一项处理:分块、预测或滤波;所述码流不包括所述第一渲染中间结果的编码数据;所述第一通信模块,用于发送所述码流;所述第二通信模块,用于接收所述码流;所述解码器,用于对所述码流进行解析,以得到解析结果,所述解析结果包括当前帧对应的残差块;所述第二渲染模块,用于基于所述当前帧对应的渲染参数对三维场景进行渲染处理,并在所述渲染处理过程中生成第一渲染中间结果;其中,所述当前帧对应的渲染参数包括所述终端设备生成的第一渲染参数;所述解码器,还用于基于所述第二渲染模块生成的第一渲染中间结果和所述当前帧对应的残差块进行重建,以得到所述当前帧的重建图像;其中,所述第二渲染模块生成的第一渲染中间结果作用于所述重建过程中的至少一项处理:预测或滤波。
- 一种端云协同系统,其特征在于,所述端云协同系统包括服务器和终端设备,所述服务器包括第一渲染模块、编码器和第一通信模块,所述终端设备包括第二通信模块、第二渲染模块和解码器;其中:所述第一渲染模块,用于基于渲染参数对三维场景进行渲染处理,以得到经渲染的图像;其中,所述渲染参数包括从所述终端设备获取的第一渲染参数;基于所述渲染处理过程中产生的渲染中间结果,选取第一渲染中间结果;所述编码器,用于基于所述第一渲染中间结果对所述经渲染的图像进行编码,以得到残差块的编码数据并将所述残差块的编码数据写入码流;以及对第二渲染中间结果进行编码,将所述第二渲染中间结果的编码数据写入所述码流;其中,所述残差块是通过所述经渲染的图像中待编码块与对应预测块进行残差得到,所述预测块是通过对所述待编码块进行预测得到;所述第一渲染中间结果作用于所述编码过程中的至少一项处理:分块、预测或滤波;所述第二渲染中间结果为所述第一渲染中间结果的部分;所述第一通信模块,用于发送所述码流;所述第二通信模块,用于接收所述码流;所述解码器,用于对所述码流进行解析,以得到解析结果,所述解析结果包括当前帧对应的残差块和所述当前帧对应的第二渲染中间结果;所述第二渲染模块,用于基于所述当前帧对应的渲染参数对三维场景进行渲染处理,并在所述渲染处理过程中,基于所述当前帧对应的第二渲染中间结果生成第三渲染中间结果;其中,所述当前帧对应的渲染参数包括所述终端设备生成的第一渲染参数;所述解码器,还用于基于第一渲染中间结果和所述当前帧对应的残差块进行重建,以得到所述当前帧的重建图像;其中,用于确定所述当前帧的重建图像的第一渲染中间结果包括所述当前帧对应的第二渲染中间结果和所述第三渲染中间结果,所述用于确定所述当前帧的重建图像的第一渲染中间结果作用于所述重建过程中的至少一项处理:预测或滤波。
- 一种编码方法,其特征在于,应用于服务器,所述方法包括:基于渲染参数对三维场景进行渲染处理,以得到经渲染的图像;其中,所述渲染参数包括从终端设备获取的第一渲染参数;基于所述渲染处理过程中产生的渲染中间结果,选取第一渲染中间结果;基于所述第一渲染中间结果对所述经渲染的图像进行编码,以得到残差块的编码数据并将所述残差块 的编码数据写入码流;其中,所述残差块是通过所述经渲染的图像中待编码块与对应预测块进行残差得到,所述预测块是通过对所述待编码块进行预测得到;所述第一渲染中间结果作用于所述编码过程中的至少一项处理:分块、预测或滤波;所述码流不包括所述第一渲染中间结果的编码数据或者所述码流还包括第二渲染中间结果的编码数据,所述第二渲染中间结果为所述第一渲染中间结果的部分。
- 根据权利要求3所述的方法,其特征在于,所述码流还包括:第一指示标识和/或第二指示标识,其中,所述第一指示标识用于指示所述码流是否包括所述第二渲染中间结果的编码数据,或,是否包括所述第一渲染中间结果的编码数据;所述第二指示标识用于指示所述第二渲染中间结果的类型和子类型,或者,指示所述第一渲染中间结果的类型。
- 根据权利要求3或4所述的方法,其特征在于,所述渲染参数还包括所述服务器生成的第二渲染参数;所述方法还包括:将第三渲染参数,写入所述码流,其中,所述第三渲染参数包括第二渲染参数中的全部参数或部分参数。
- 根据权利要求3至5任一项所述的方法,其特征在于,所述渲染参数还包括所述服务器生成的第二渲染参数;所述码流还包括:第三指示标识和/或第四指示标识,其中:所述第三指示标识用于指示所述码流是否包括第三渲染参数,其中,所述第三渲染参数包括所述第二渲染参数中的全部参数或部分参数;所述第四指示标识用于指示所述第三渲染参数的类型。
- 根据权利要求3至6任一项所述的方法,其特征在于,所述第一渲染中间结果作用于所述编码过程中的分块,所述待编码块为预测单元;所述基于所述第一渲染中间结果对所述经渲染的图像进行编码,以得到残差块的编码数据,包括:基于所述第一渲染中间结果对所述经渲染的图像进行分块,以得到多个预测单元;基于重建块对所述多个预测单元进行预测,以得到多个预测块,所述多个预测块与所述多个预测单元一一对应;对所述多个预测块与所述多个预测单元之间的多个残差块进行编码,以得到所述多个残差块的编码数据,所述多个残差块与所述多个预测单元一一对应。
- 根据权利要求3至6任一项所述的方法,其特征在于,所述第一渲染中间结果作用于所述编码过程中的预测;所述基于所述第一渲染中间结果对所述经渲染的图像进行编码,以得到残差块的编码数据,包括:基于重建块和所述第一渲染中间结果,对所述经渲染的图像中待编码块进行预测,以得到所述待编码块对应的预测块;对所述待编码块和所述待编码块对应的预测块之间的残差块进行编码,以得到所述残差块的编码数据。
- 根据权利要求3至6任一项所述的方法,其特征在于,所述第一渲染中间结果作用于所述编码过程中的滤波;所述基于所述第一渲染中间结果对所述经渲染的图像进行编码,以得到残差块的编码数据,包括:基于重建块对所述经渲染的图像中的待编码块进行预测,以得到所述待编码块对应的预测块,所述重建块为基于所述第一渲染中间结果经滤波的重建块;对所述待编码块和所述待编码块对应的预测块之间的残差块进行编码,以得到所述残差块的编码数据。
- 根据权利要求7所述的方法,其特征在于,所述第一渲染中间结果还作用于所述编码过程中的预测;所述基于重建块对所述多个预测单元进行预测,以得到多个预测块,包括:基于所述重建块和所述第一渲染中间结果,对所述多个预测单元进行预测,以得到所述多个预测块。
- 根据权利要求7或8或10所述的方法,其特征在于,所述第一渲染中间结果还作用于所述编码过程中的滤波,所述重建块为基于所述第一渲染中间结果经滤波的重建块。
- 根据权利要求7所述的方法,其特征在于,所述第一渲染中间结果为深度信息,所述基于所述第一渲染中间结果对所述经渲染的图像进行分块,以得到多个预测单元,包括:将所述经渲染的图像划分为多个编码单元;基于所述深度信息,生成计算机图形边缘CGE信息,所述CGE信息包括所述经渲染的图像中对象的对象边缘信息;基于所述CGE信息分别对所述多个编码单元进行划分,以得到所述多个预测单元。
- 根据权利要求8所述的方法,其特征在于,所述第一渲染中间结果为计算机图形运动矢量CGMV,所述CGMV用于描述所述经渲染的图像中像素点与所述经渲染的图像的参考帧中像素点之间的位移关系;所述基于重建块和所述第一渲染中间结果,对所述经渲染的图像中待编码块进行预测,以得到所述待编码块对应的预测块,包括:从所述经渲染的图像的参考帧中,确定与所述待编码块匹配的重建块;基于所述CGMV和与所述待编码块匹配的重建块,生成所述预测块。
- 根据权利要求9或11所述的方法,其特征在于,所述第一渲染中间结果为渲染标识Render ID,所述Render ID用于描述所述重建块中像素点所属的对象;所述方法还包括:基于所述Render ID,确定滤波参数;基于所述滤波参数对所述重建块进行滤波。
- 根据权利要求12所述的方法,其特征在于,编码所述CGE信息,将所述CGE信息的编码数据写入所述码流。
- 一种解码方法,其特征在于,应用于终端设备,所述方法包括:接收码流;对所述码流进行解析,以得到解析结果,所述解析结果包括当前帧对应的残差块;基于所述当前帧对应的渲染参数对三维场景进行渲染处理,并在所述渲染处理过程中生成第一渲染中间结果;其中,所述渲染参数包括所述终端设备生成的第一渲染参数;基于所述第一渲染中间结果和所述残差块进行重建,以得到所述当前帧的重建图像;其中,所述第一渲染中间结果作用于所述重建过程中的至少一项处理:预测或滤波。
- 根据权利要求16所述的方法,其特征在于,所述解析结果还包括:第一指示标识和第二指示标识,所述第一指示标识用于指示所述码流是否包括服务器生成的第一渲染中间结果的编码数据,所述第二指示标识用于指示服务器生成的第一渲染中间结果的类型;所述在所述渲染处理过程中生成第一渲染中间结果,包括:当基于所述第一指示标识确定所述码流不包括服务器生成的第一渲染中间结果的编码数据时,基于所述第二指示标识,在所述渲染处理过程中生成第一渲染中间结果。
- 根据权利要求16或17所述的方法,其特征在于,所述解析结果还包括:第三指示标识和第四指示标识;所述第三指示标识用于指示所述码流是否包括 第三渲染参数,所述第四指示标识用于指示所述第三渲染参数的类型;所述方法还包括:当基于所述第三指示标识确定所述码流包括所述第三渲染参数时,基于所述第四指示标识,确定所述第三渲染参数的类型;基于所述第三渲染参数的类型,生成其他类型的第四渲染参数;所述其他类型为服务器生成的第二渲染参数对应的多种类型中,除所述第三渲染参数的类型之外的类型;其中,所述渲染参数还包括所述第三渲染参数和所述第四渲染参数。
- 根据权利要求18所述的方法,其特征在于,所述方法还包括:当基于所述第三指示标识确定所述码流不包括所述第三渲染参数时,所述终端设备生成所述当前帧对应第二渲染参数;其中,所述渲染参数还包括所述终端设备生成的第二渲染参数。
- 根据权利要求16至19任一项所述的方法,其特征在于,所述残差块为多个,所述第一渲染中间结果作用于所述重建过程中的预测;所述基于所述第一渲染中间结果和所述残差块进行重建,以得到所述当前帧的重建图像,包括:基于所述第一渲染中间结果,确定所述当前帧的分块信息;基于所述分块信息和重建块,对所述当前帧包括的多个预测单元进行预测,以得到多个预测块,所述多个预测块与所述多个预测单元一一对应,所述多个残差块与多个预测单元一一对应;基于所述多个残差块和所述多个预测块,确定所述当前帧的重建图像。
- 根据权利要求16至19任一项所述的方法,其特征在于,所述第一渲染中间结果作用于所述重建过程中的预测;所述基于所述第一渲染中间结果和所述残差块进行重建,以得到所述当前帧的重建图像,包括:基于所述第一渲染中间结果和重建块,对所述当前帧中待解码块进行预测,以得到所述待解码块对应的预测块;基于所述当前帧对应的残差块中与所述待解码块对应的残差块和所述待解码块对应的预测块,确定所述当前帧的重建图像。
- 根据权利要求16至19任一项所述的方法,其特征在于,所述第一渲染中间结果作用于所述重建过程中的滤波;所述基于所述第一渲染中间结果和所述残差块进行重建,以得到所述当前帧的重建图像,包括:基于重建块对所述当前帧中待解码块进行预测,以得到所述待解码块对应的预测块,所述重建块为基于所述第一渲染中间结果经滤波的重建块;基于所述当前帧对应的残差块中与所述待解码块对应的残差块和所述待解码块对应的预测块,确定所述当前帧的重建图像。
- 根据权利要求21所述的方法,其特征在于,所述基于所述分块信息和重建块,对所述当前帧包括的多个预测单元进行预测,以得到多个预测块,包括:基于所述分块信息、所述第一渲染中间结果和所述重建块,对所述当前帧包括的多个预测单元进行预测,以得到多个预测块。
- 根据权利要求20或21或23所述的方法,其特征在于,所述第一渲染中间结果还作用于所述重建过程中的滤波,所述重建块为基于所述第一渲染中间结果经滤波的重建块。
- 根据权利要求20或23所述的方法,其特征在于,所述第一渲染中间结果为深度信息,所述基于所述第一渲染中间结果,确定所述当前帧的分块信息,包括:基于所述深度信息,生成计算机图形边缘CGE信息,CGE信息包括所述当前帧中对象的对象边缘信 息;基于所述CGE信息,确定所述当前帧的分块信息。
- 根据权利要求21所述的方法,其特征在于,所述第一渲染中间结果为计算机图形运动矢量CGMV,所述CGMV用于描述所述当前帧的像素点与所述当前帧的参考帧的像素点之间的位移关系,所述基于所述第一渲染中间结果和重建块,对所述当前帧中待解码块进行预测,以得到所述待解码块对应的预测块,包括:从所述当前帧的参考帧中,确定与所述待解码块匹配的重建块;基于所述CGMV和与所述待解码块匹配的重建块,生成所述待解码块对应的预测块。
- 根据权利要求22或24所述的方法,其特征在于,所述第一渲染中间结果为渲染标识Render ID,所述Render ID用于描述所述重建块中像素点所属的对象;所述方法还包括:基于所述Render ID,确定滤波参数;基于所述滤波参数对所述重建块进行滤波。
- 根据权利要求16至19任一项所述的方法,其特征在于,所述残差块为多个,所述第一渲染中间结果作用于所述重建过程中的预测;所述解码结果还包括CGE信息,所述CGE信息包括所述当前帧中对象的对象边缘信息;所述基于所述第一渲染中间结果和所述残差块进行重建,以得到所述当前帧的重建图像,包括:基于所述CGE信息,确定所述当前帧的分块信息;基于所述分块信息和重建块,对所述当前帧包括的多个预测单元进行预测,以得到多个预测块,所述多个预测块与所述多个预测单元一一对应,所述多个残差块与多个预测单元一一对应;基于所述多个残差块和所述多个预测块,确定所述当前帧的重建图像。
- 一种解码方法,其特征在于,所述方法应用于终端设备,所述方法包括:接收码流;对所述码流进行解析,以得到解析结果,所述解析结果包括:当前帧对应残差块和所述当前帧对应的第二渲染中间结果;基于所述当前帧对应的渲染参数对三维场景进行渲染处理,并在所述渲染处理过程中,基于所述第二渲染中间结果生成第三渲染中间结果,所述渲染参数包括所述终端设备生成的第一渲染参数;基于第一渲染中间结果和所述残差块进行重建,以得到所述当前帧的重建图像;其中,所述第一渲染中间结果包括所述第二渲染中间结果和所述第三渲染中间结果,所述第一渲染中间结果作用于所述重建过程中的至少一项处理:预测或滤波。
- 根据权利要求29所述的方法,其特征在于,所述解码结果还包括:第二指示标识,所述第二指示标识用于指示所述第二渲染中间结果的类型和子类型;所述在所述渲染处理过程中,基于所述第二渲染中间结果生成第三渲染中间结果,包括:基于所述第二指示标识,确定所述第二渲染中间结果对应的类型和子类型;在所述渲染处理过程中,基于所述第二渲染中间结果对应的类型和子类型,生成其他子类型的第三渲染中间结果;其中,所述其他子类型为所述第二渲染中间结果对应的类型所包含的子类型中,除所述第二渲染中间结果对应的子类型之外的子类型。
- 根据权利要求29或30所述的方法,其特征在于,所述解析结果还包括:第三指示标识和第四指示标识;所述第三指示标识用于指示所述码流是否包括第三渲染参数,所述第四指示标识用于指示所述第三渲染参数的类型;所述方法还包括:当基于所述第三指示标识确定所述码流包括所述第三渲染参数时,基于所述第四指示标识,确定所述第三渲染参数的类型;基于所述第三渲染参数的类型,生成其他类型的第四渲染参数;所述其他类型为服务器生成的第二渲染参数对应的多种类型中,除所述第三渲染参数的类型之外的类型;其中,所述渲染参数还包括所述第三渲染参数和所述第四渲染参数。
- 根据权利要求31所述的方法,其特征在于,所述方法还包括:当基于所述第三指示标识确定所述码流不包括所述第三渲染参数时,所述终端设备生成所述当前帧对应第二渲染参数;其中,所述渲染参数还包括所述终端设备生成的第二渲染参数。
- 根据权利要求29至32任一项所述的方法,其特征在于,所述残差块为多个,所述第一渲染中间结果作用于所述重建过程中的预测;所述基于所述第一渲染中间结果和所述残差块进行重建,以得到所述当前帧的重建图像,包括:基于所述第一渲染中间结果,确定所述当前帧的分块信息;基于所述分块信息和重建块,对所述当前帧包括的多个预测单元进行预测,以得到多个预测块,所述多个预测块与所述多个预测单元一一对应,所述多个残差块与多个预测单元一一对应;基于所述多个残差块和所述多个预测块,确定所述当前帧的重建图像。
- 根据权利要求29至32任一项所述的方法,其特征在于,所述第一渲染中间结果作用于所述重建过程中的预测;所述基于所述第一渲染中间结果和所述残差块进行重建,以得到所述当前帧的重建图像,包括:基于所述第一渲染中间结果和重建块,对所述当前帧中待解码块进行预测,以得到所述待解码块对应的预测块;基于所述当前帧对应的残差块中所述待解码块对应的残差块和所述待解码块对应的预测块,确定所述当前帧的重建图像。
- 根据权利要求29至32任一项所述的方法,其特征在于,所述第一渲染中间结果作用于所述重建过程中的滤波;所述基于所述第一渲染中间结果和所述残差块进行重建,以得到所述当前帧的重建图像,包括:基于重建块对所述当前帧中待解码块进行预测,以得到所述待解码块对应的预测块,所述重建块为基于所述第一渲染中间结果经滤波的重建块;基于所述当前帧对应的残差块中所述待解码块对应的残差块和所述待解码块对应的预测块,确定所述当前帧的重建图像。
- 根据权利要求33所述的方法,其特征在于,所述基于所述分块信息和重建块,对所述当前帧包括的多个预测单元进行预测,以得到多个预测块,包括:基于所述分块信息、所述第一渲染中间结果和所述重建块,对所述当前帧包括的多个预测单元进行预测,以得到多个预测块。
- 根据权利要求33或34或36所述的方法,其特征在于,所述第一渲染中间结果还作用于所述重建过程中的滤波;所述重建块为基于所述第一渲染中间结果经滤波的重建块。
- 根据权利要求33或36所述的方法,其特征在于,所述第一渲染中间结果为深度信息,所述基于所述第一渲染中间结果,确定所述当前帧的分块信息,包括:基于所述深度信息,生成计算机图形边缘CGE信息,CGE信息包括所述当前帧中对象的对象边缘信息;基于所述CGE信息,确定所述当前帧的分块信息。
- 根据权利要求34所述的方法,其特征在于,所述第一渲染中间结果为计算机图形运动矢量CGMV, 所述CGMV用于描述所述当前帧的像素点与所述当前帧的参考帧的像素点之间的位移关系,所述基于所述第一渲染中间结果和重建块,对所述当前帧中待解码块进行预测,以得到所述待解码块对应的预测块,包括:从所述当前帧的参考帧中,确定与所述待解码块匹配的重建块;基于所述CGMV和与所述待解码块匹配的重建块,生成所述待解码块对应的预测块。
- 根据权利要求35或37所述的方法,其特征在于,所述第一渲染中间结果为渲染标识Render ID,所述Render ID用于描述所述重建块中像素点所属的对象;所述方法还包括:基于所述Render ID,确定滤波参数;基于所述滤波参数对所述重建块进行滤波。
- 根据权利要求29至32任一项所述的方法,其特征在于,所述残差块为多个,所述第一渲染中间结果作用于所述重建过程中的预测;所述解码结果还包括CGE信息,所述CGE信息包括所述当前帧中对象的对象边缘信息;所述基于所述第一渲染中间结果和所述残差块进行重建,以得到所述当前帧的重建图像,包括:基于所述CGE信息,确定所述当前帧的分块信息;基于所述分块信息和重建块,对所述当前帧包括的多个预测单元进行预测,以得到多个预测块,所述多个预测块与所述多个预测单元一一对应,所述多个残差块与多个预测单元一一对应;基于所述多个残差块和所述多个预测块,确定所述当前帧的重建图像。
- 一种电子设备,其特征在于,包括:存储器和处理器,所述存储器与所述处理器耦合;所述存储器存储有程序指令,当所述程序指令由所述处理器执行时,使得所述电子设备执行权利要求3至权利要求41中任一项所述的方法。
- 一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,当所述计算机程序运行在计算机或处理器上时,使得所述计算机或所述处理器执行权利要求3至权利要求41中任一项所述的方法。
- 一种计算机程序产品,其特征在于,所述计算机程序产品包含软件程序,当所述软件程序被计算机或处理器执行时,使得权利要求3至权利要求41中任一项所述的方法的步骤被执行。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211708155.1 | 2022-12-29 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2024140684A1 true WO2024140684A1 (zh) | 2024-07-04 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113615204B (zh) | 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 | |
KR102358759B1 (ko) | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 | |
US11138688B2 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
US20240121418A1 (en) | Apparatus and method for processing point cloud data | |
KR102609776B1 (ko) | 포인트 클라우드 데이터 처리 방법 및 장치 | |
CN111837396A (zh) | 基于子图像码流视角相关视频编码中的误差抑制 | |
US11979607B2 (en) | Apparatus and method for processing point cloud data | |
JP7451576B2 (ja) | ポイントクラウドデータ処理方法及び装置 | |
US20220256190A1 (en) | Point cloud data processing apparatus and method | |
US20220337872A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
US20220319053A1 (en) | Point cloud data processing device and method | |
EP4362463A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
US20240179346A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
WO2024140684A1 (zh) | 端云协同系统、编解码方法及电子设备 | |
JP7376211B2 (ja) | 点群コーディングにおけるカメラパラメータのシグナリング | |
JP7425207B2 (ja) | ポイントクラウドデータ送信装置、ポイントクラウドデータ送信方法、ポイントクラウドデータ受信装置及びポイントクラウドデータ受信方法 | |
WO2024140685A1 (zh) | 端云协同系统、编解码方法及电子设备 | |
CN118283340A (zh) | 端云协同系统、编解码方法及电子设备 | |
US20240179347A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
CN118283267A (zh) | 端云协同系统、编解码方法及电子设备 | |
WO2024093215A1 (en) | Encoding/decoding point cloud geometry data | |
US20230412837A1 (en) | Point cloud data transmission method, point cloud data transmission device, point cloud data reception method, and point cloud data reception device | |
US20240236352A1 (en) | Bitstream syntax for mesh motion field coding | |
US20230334719A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
WO2023179279A1 (en) | Encoding/decoding positions of points of a point cloud emcompassed in a cuboid volume |