首页 / 3D数据解码装置和3D数据编码装置

3D数据解码装置和3D数据编码装置公开 发明

技术领域

[0001] 本发明的实施方式涉及3D数据编码装置和3D数据解码装置。

相关背景技术

[0002] 为了高效地传输或记录3D数据,存在将3D数据转换成二维图像,通过运动图像编码方式进行编码,生成编码数据的3D数据编码装置、以及从该编码数据解码二维图像,重构3D数据的3D数据解码装置。
[0003] 作为具体的3D数据编码方式,例如可以列举出MPEG‑I的ISO/IEC 23090‑5V3C(Visual Volumetric Video‑based Coding:基于体积视频的编码)和V‑PCC(Video‑based Point Cloud Compression:基于视频的点云压缩)。V3C能对由点的位置和属性信息构成的点云进行编码、解码。而且,还能通过ISO/IEC 23090‑12(MPEG沉浸式视频(MPEG Immersive Video:MIV))和正在标准化的ISO/IEC 23090‑29(基于视频的动态网格编码(Video‑based Dynamic Mesh Coding:V‑DMC)),用于多视点影像、网格影像的编码、解码。V‑DMC方式在非专利文献1中公开了最新的草稿文件。
[0004] 在这些3D数据编码方式中,将构成3D数据的几何、属性作为图像,使用H.265/HEVC(High Efficiency Video Coding:高效视频编码)、H.266/VVC(Versatile Video Coding:多功能视频编码)这样的运动图像编码方式来进行编码/解码。
[0005] 在点群的情况下,几何图像是到投影面的深度,属性图像是将属性投影到投影面得到的图像。
[0006] 非专利文献1那样的3D数据(网格数据)由基本网格、网格位移、网格位移排列、纹理映射图像构成。基本网格能利用Draco那样的顶点编码方式,几何图像是将网格位移二维化的网格位移图像,属性图像是纹理映射图像。如上所述,它们可以使用HEVC、VVC那样的运动图像编码方式来进行编码/解码。现有技术文献
非专利文献
非专利文献1
[0007] WD 3.0ofV‑DMC(MDS22775_WG07_N00611_d9),ISO/IEC JTC 1/SC 29/WG 7N0611,April 2023

具体实施方式

[0013] 以下,参照附图对本发明的实施方式进行说明。
[0014] 图1是表示本实施方式的3D数据传输系统1的构成的概略图。
[0015] 3D数据传输系统1是传输对编码对象3D数据进行编码而得到的编码流,对所传输的编码流进行解码并显示3D数据的系统。3D数据传输系统1构成为包括:3D数据编码装置11、网络21、3D数据解码装置31以及3D数据显示装置41。
[0016] 对3D数据编码装置11输入3D数据T。
[0017] 网络21将3D数据编码装置11所生成的编码流Te传输至3D数据解码装置31。网络21是互联网(Internet)、广域网(WAN:Wide Area Network)、小型网络(LAN:Local Area Network,局域网)或它们的组合。网络21不一定限定于双向的通信网,也可以是传输地面数字广播、卫星广播等广播波的单向的通信网。此外,网络21也可以用DVD(Digital Versatile Disc:数字通用光盘,注册商标)、BD(Blu‑ray Disc:蓝光光盘,注册商标)等记录有编码流Te的存储介质代替。
[0018] 3D数据解码装置31分别对网络21所传输的编码流Te进行解码,生成解码后的一个或多个解码3D数据Td。
[0019] 3D数据显示装置41显示3D数据解码装置31所生成的一个或多个解码3D数据Td的全部或一部分。3D数据显示装置41例如具备液晶显示器、有机EL(Electro‑luminescence:电致发光)显示器等显示设备。作为显示器的形式,可以列举出固定式、移动式、HMD(Head Mounted Display:头戴显示器)等。此外,在3D数据解码装置31具有高处理能力的情况下,显示画质高的图像,在仅具有低处理能力的情况下,显示不需要高处理能力、高显示能力的图像。
<运算符>
[0020] 以下对在本说明书中使用的运算符进行描述。>>为向右位移,<<为向左位移,&为逐位AND,|为逐位OR,|=为OR代入运算符,||表示逻辑和。
x?y:z是在x为真(0以外)的情况下取y、在x为假(0)的情况下取z的3项运算符。
y..z表示从y到z的整数的集合。
<编码流Te的结构>
[0021] 在对本实施方式的3D数据编码装置11和3D数据解码装置31进行详细说明之前,对由3D数据编码装置11生成并由3D数据解码装置31进行解码的编码流Te的数据结构进行说明。
[0022] 图2是表示编码流Te中的数据的分级结构的图。编码流Te具有V3C样本流(V3C sample stream)、V3C单元流(V3C unit stream)中任一数据结构。V3C样本流包括样本流报头(sample stream header)和V3C单元。V3C单元流包括V3C单元。
[0023] V3C单元包括V3C单元报头和V3C单元有效载荷(V3C unit payload)。V3C单元报头的起点是作为表示V3C单元的种类的ID的单元类型(Unit Type),取由V3C_VPS、V3C_AD、V3C_AVD、V3C_GVD、V3C_OVD等标签所示的值。
[0024] 在单元类型为V3C_VPS(Video Parameter Set:视频参数集)的情况下,V3C单元包括V3C参数集(V3C parameter set)。
[0025] 在单元类型为V3C_AD(Atlas Data:Atlas数据)的情况下,V3C单元包括VPS ID、atlasID、样本流nal报头(sample  stream  nal header)和多个NAL单元。是ID(Idenfication),取0以上的整数值。
[0026] NAL单元包括NAL单元类型、层ID(layerID)、临时ID(TemporalID)以及RBSP(Raw byte sequence payload:原始字节序列有效载荷)。
[0027] NAL单元由NAL单元类型识别,包括ASPS(Atlas Sequence Parameter Set:Atlas序列参数集)、AAPS(Atlas Adaptation Parameter Set:Atlas适配参数集)、ATL(Atlas Tile layer:Atlas平铺层)、SEI(Supplemental Enhancement Information:补充增强信息)等。
[0028] ATL包括ATL报头和ATL数据单元,ATL数据单元包括补丁信息数据(patch information data)等补丁的位置、尺寸等信息。
[0029] SEI包括表示SEI的种类的有效载荷类型(payload Type)、表示SEI的尺寸(字节数)的有效载荷尺寸(payload Size)以及SEI的数据的sei_payload。
[0030] 在单元类型为V3C_AVD(属性视频数据(Attribute Video Data)、属性数据)的情况下,V3C单元包括VPS ID、atlasID、属性图像的ID的attrIdx、分区ID的partIdx、映射图ID的mapIdx、表示是否为辅助数据(Auxiliary Date)的标志auxFlag、视频流(video stream)。视频流表示通过HEVC、VVC等编码得到的数据。在V‑DMC中与纹理图像对应。
[0031] 在单元类型为V3C_GVD(几何视频数据(Geometory Video Data)、几何数据)的情况下,V3C单元包括VPS ID、atlasID、mapIdx、auxFlag、视频流。在V‑DMC中与网格位移对应。
[0032] 在单元类型为V3C_OVD(占用视频数据(Occumancy Video Data)、占用数据)的情况下,V3C单元包括VPS ID、atlasID、视频流。
[0033] 在单元类型为V3C_MD(Mesh data:网格数据)的情况下,V3C单元包括VPS ID、atlasID、网格_有效载荷(mesh_payload)。在V‑DMC中与基本网格对应。(第一实施方式的3D数据解码装置的构成)
[0034] 图3是表示第一实施方式的3D数据解码装置31的概略构成的功能框图。3D数据解码装置31由解复用部301、图谱信息解码部302、基本网格解码部303、网格位移解码部305、网格重构部307、属性解码部306、颜色空间转换部308构成。3D数据解码装置31输入3D数据的编码数据,输出图谱信息、网格、属性图像。
[0035] 解复用部301输入按字节流格式、ISOBMFF(ISO Base Media File Format:ISO基本媒体文件格式)等复用后的编码数据,进行解复用,输出图谱信息编码流(V3C_AD的Atlas数据流、NAL单元)、基本网格编码流(V3C_MD的网格_有效载荷)、网格位移编码流(V3C_GVD的视频流)、属性动画流(V3C_AVD的视频流)。
[0036] 图谱信息解码部302输入从解复用部301输出的图谱信息编码流,对图谱信息进行解码。
[0037] 基本网格解码部303对通过顶点编码(3D数据压缩编码方式,例如Draco)编码后的基本网格编码流进行解码,输出基本网格。在后文对基本网格加以记述。
[0038] 网格位移解码部305对通过VVC、HEVC等编码后的几何动画流(网格位移编码流)进行解码,输出网格位移。用于编码的编解码器的种类由对编码数据的V3C参数集进行解码得到的ptl_profile_codec_group_idc表示。此外,也可以由V3C参数集的gi_geometry_codec_id[atlasID]所示的Four CC代码(4个文字代码、4个CC代码)表示。gi_geometry_codec_id[atlasID]表示在图谱ID中用于几何动画流的解码的解码器的与编解码器ID对应的索引。表示编解码器ID(ccm_codec_id)与其4CC代码(ccm_codec_4cc[ccm_codec_id])的对应关系的集合也可以通过其他编解码器映射SEI(component_codec_mapping SEI)来传输。编解码器可以以对帧进一步分割得到的分段(切片)为单位来对网格位移进行解码。HEVC和VVC能将帧分割为切片。切片以编码树单元(Coded Tree Unit:CTU)为单位来编码。
需要说明的是,也可以不使用切片而使用子图片或图块的分割来作为分段。这些子图片、图块、切片能独立地进行解码,因此能仅对帧的一部分进行解码,而不对帧整体进行解码。在利用子图片、图块的情况下,采用将切片置换成子图片或图块的构成。
[0039] 网格重构部307输入基本网格、网格位移,重构3D空间内的网格。
[0040] 属性解码部306对通过VVC、HEVC等编码后的属性动画流进行解码,输出YCbCr格式的属性图像。属性图像可以是在UV轴展开的纹理图像(以UV图谱方式转换而成的纹理映射图像)。用于编码的编解码器的种类由对编码数据的V3C参数集进行解码得到的ptl_profile_codec_group_idc表示。此外,也可以由V3C参数集的ai_geometry_codec_id[atlasID]所表示的四个CC代码表示。ai_geometry_codec_id[atlasID]表示在图谱ID中用于解码属性动画流的解码器的与编解码器ID对应的索引。
[0041] 颜色空间转换部308将属性图像从YCbCr格式向RGB格式进行颜色空间转换。需要说明的是,也可以是对编码成RGB格式的属性动画流进行解码,省略颜色空间转换的构成。(基本网格的解码)
[0042] 图4是表示基本网格解码部303的构成的功能框图。基本网格解码部303由网格解码部3031、运动信息解码部3032,网格运动补偿部3033、参照网格存储器3034、开关3035、开关3036构成。基本网格解码部303也可以是在基本网格的输出之前包括未图示的基本网格逆量化部的构成。在不参照其他的基本网格(例如,已编码/解码的基本网格)对解码对象的基本网格进行编码(帧内编码)的情况下,开关3035和开关3036连接到不进行运动补偿的一侧。否则,在参照其他的基本网格对解码对象的基本网格进行编码(帧间编码)的情况下,连接到进行运动补偿的一侧。在进行运动补偿的情况下,参照已解码的顶点坐标和运动信息来导出对象的顶点坐标。
[0043] 网格解码部3031对帧内编码后的基本网格编码流进行解码,输出基本网格。作为编码方式,使用Draco、边缘断路器(edge breaker)等。
[0044] 运动信息解码部3032对帧间编码后的基本网格编码流进行解码,输出针对后述的参照网格的各顶点的运动信息。作为编码方式,使用算术编码等熵编码。
[0045] 网格运动补偿部3033基于运动信息对从参照网格存储器3034输入的参照网格的各顶点进行运动补偿,输出运动补偿后的网格。
[0046] 参照网格存储器3034是保持解码后的网格以供在以后的解码处理中参照的存储器。(网格位移的解码)
[0047] 图5是表示网格位移解码部305的构成的功能框图。网格位移解码部305由位移解映射部3052(图像拆分部、位移解码部)、逆量化部3053、逆转换部3054、坐标系转换部3055构成。此外,可以将位移解映射部称为位移映射部。如图5所示,网格位移解码部305也可以构成为还包括动画解码部3051,网格位移解码部305也可以是不包括动画解码部3051,而位移图像(位移排列)的解码使用3D数据解码装置31的构成。此外,网格位移解码部305也可以是不包括逆量化部3053,而画质控制仅通过3D数据解码装置31来进行的构成。
[0048] 图谱信息解码部302从编码数据对表示坐标系的坐标系转换信息displacementCoordinateSystem(asps_vdmc_ext_displacement_coordinate_system、afps_vdmc_ext_displacement_coordinate_system)进行解码。此外,也可以对网格位移的切片分割信息(位移切片分割参数、位移分段参数、位移切片分割标志、位移分段标志)进行解码。切片分割信息可以是表示是否分割成分段的displacementSliceFlag、表示分段的分割方法的切片分割类型、displacementSliceType(asps_vdmc_ext_displacement_slice_type、afps_vdmc_ext_displacement_slice_type)。而且,切片分割信息可以包括分量高度dispCompHeight。此外,切片分割信息可以包括表示网格位移的每个LOD的起点位置的语法要素dispPos[lodIdx]或每个LOD的网格位移的个数dispCount[lodIdx]。此外,也可以包括表示网格位移的个数的索引dispCountIdx[lodIdx]。此外,切片分割信息可以包括取切片的对准的块的尺寸ctuSize或表示ctuSize的索引ctuSizeIdx。切片分割类型是表示切片分割的类别的参数。分量高度是表示与网格位移三维向量的各分量(例如n、t、b)对应的图像的高度的参数。此外,也将n(normal:普通)、t(tangent:切线)、b(bitangent:双切线)的分量称为分量(component)。
[0049] 切片分割信息可以是表示位移被切片分割成分量单元(Componentunit)的语法要素displacementSliceFlag(displacementSliceEnabledFlag、displacementSliceUsedFlag)。在此,位移被切片分割成分量单元是指,在使用AVC、HEVC、VVC等对位移进行编码时,通过与第二分量(tangent)、第三分量(bitangent)不同的切片对normal、tangent、bitangent中的至少第一分量(normal)进行编码。例如
displacementSliceFlag==1可以是将画面分割成两个,切片0为normal,切片1为tangent、bitangent的情况。displacementSliceFlag==0是不对画面进行切片分割或没有明示进行了切片分割的情况。此外,例如displacementSliceFlag==1可以是将画面分割成三个,切片0为normal,切片1为tangent,切片2为bitangent的情况。此外,也可以定义为在位移的分量的边界进行切片分割。此外,如后续所述,还可以表示在使用asps_vdmc_ext_displacement_slice_type将画面分割成两个切片的情况下,将画面分割成三个切片的情况。如此一来,通过用明示的语法要素来表示预先分割成切片,3D数据解码装置仅对特定的切片进行解码,从而能实现与解码能力、功耗相应的可伸缩的解码。需要说明的是,在此,列举出切片分割,但在支持HEVC、VVC等切片以外的分段(解码单位)的情况下,可以将切片替换成图块或子图片。以下相同。
[0050] 切片分割信息还可以是表示在时间方向上连续的多个帧中以相同的大小进行矩形分割,并且仅在所对应的矩形区域内进行画面间预测的标志。例如,可以是利用了HEVC的运动约束图块集(Motion Constrained Tile Set:MCTS)的图块分割。或者,也可以使用限制了来自在VVC的时间方向上连续的子图片的预测以外的分割。可参照的子图片是对时间预测有限制的配置位置的子图片。通常,切片分割的特征在于具备在画面内不进行与该切片以外的切片的预测、滤波的独立性,但该子图片以不仅在空间方向不具备依存关系,在时间方向上也不具备依存关系的方式独立。将与上述HEVC的图块或VVC的子图片相关的信息称为时空独立的切片分割信息。
[0051] 需要说明的是,也可以另外设置选通标志,仅在选通标志为1的情况下对各坐标系转换信息进行解码。选通标志例如是afps_vdmc_ext_overriden_flag。此外,也可以对切片分割信息设置选通标志,仅在选通标志为1的情况下,对切片分割信息进行解码。选通标志例如是afps_vdmc_ext_displacement_slice_alignment_flag。(坐标系)
[0052] 网格位移(三维矢量)的坐标系使用以下两种坐标系。
[0053] 笛卡尔坐标系(canonical):在整个3D空间共同定义的正交坐标系。(X,Y,Z)坐标系。在同一时刻(同一帧内、同一图块内)方向不变的正交坐标系。
[0054] 局部坐标系(local):按3D空间内的每个区域或每个顶点定义的正交坐标系。在同一时刻(同一帧内、同一图块内)方向可以变化的正交坐标系。normal(D),tangent(U),bi‑tangent(V)坐标系。即,包括由某个顶点(包含某个顶点的面)处的法线矢量n_vec表示的第一轴(D)和由与法线矢量n_vec正交的两个切线矢量t_vec、b_vec表示的第二轴(U)、第三轴(V)的正交坐标系。n_vec、t_vec、b_vec为三维矢量。(D,U,V)坐标系也可以称为(n,t,b)坐标系。(序列等级的控制参数的解码/导出)
[0055] 在此,对在网格位移解码部305中使用的控制参数进行说明。
[0056] 图7是按序列等级的ASPS来传输坐标系转换参数和位移切片分割参数的构成的语法的示例。
[0057] ASPS(Atla序列参数集:Atlas Sequence Parameter Set或Atlas序列网格信息:Atlas sequence mesh information)是图谱信息的NAL单元之一,包括应用于编码图谱序列的语法要素。在ASPS中,通过asps_vdmc_extension()语法,来传输坐标系转换参数和位移切片分割参数。各字段的语义如下所述。
[0058] asps_vdmc_ext_displacement_coordinate_system:表示网格位移的坐标系的坐标系转换信息。在值等于规定的第一值(例如0)的情况下,表示笛卡尔坐标系。在值等于另一个第二值(例如1)的情况下,表示局部坐标系。
[0059] asps_vdmc_ext_displacement_slice_type:表示网格位移的各分量的切片分割的类别。值的含义如下所述。0:预约。
1:将网格位移的第一分量(例如normal、n)分配给几何动画流的第一切片,将第二分量(例如tangent、t)分配给几何动画流的第二切片,将几何动画流的第三分量(例如bi‑tangent、b)分配给第三切片。
2:将网格位移的上述第一分量(例如n)分配给第一切片,将上述第二和第三分量(例如t、b)分配给第二切片。
3:预约。
[0060] 如上所述,也可以是以下。0:不指定网格位移未被切片分割或被切片分割。
1:将网格位移的第一分量(例如normal)分配给几何动画流的第一切片,将第二分量(例如tangent)分配给几何动画流的第二切片,将第三分量(例如bitangent)分配给几何动画流的第三切片。
[0061] 如上所述,也可以是以下。0:不指定网格位移未被切片分割或被切片分割。
1:将网格位移的上述第一分量(例如normal)分配给第一切片,将上述第二和第三分量(例如tangent、bitangent)分配给第二切片。
[0062] asps_vdmc_ext_displacement_component_height:表示与网格位移的各分量(例如Y、U、V)对应的图像的高度。(图片/帧等级的控制参数的解码/导出)
[0063] 图8是按图片/帧等级的AFPS来传输坐标系转换参数和位移切片分割参数的构成的语法的示例。AFPS(Atlas帧参数集:Atlas Frame Parameter Set或Atlas帧网格信息:Atlas frame mesh information)是图谱信息的NAL单元之一,包括应用于编码图谱帧的语法要素。在AFPS中,通过afps_vdmc_extension()语法,来传输坐标系转换参数和位移切片分割参数。各字段的语义如下所述。
[0064] afps_vdmc_ext_overriden_flag:是表示是否更新网格位移的坐标系的标志。在本标志等于真(true)的情况下,基于后述的afps_vdmc_ext_displacement_coordinate_system的值来更新网格位移的坐标系。在本标志等于假(false)的情况下,不更新网格位移的坐标系。
[0065] afps_vdmc_ext_displacement_coordinate_system:表示网格位移的坐标系的坐标系转换信息。在值等于第一值(例如0)的情况下,表示笛卡尔坐标系。在值等于第二值(例如1)的情况下,表示局部坐标系。在未出现语法要素的情况下,将值估计为按ASPS进行解码而得到的值,将默认的坐标系设为由ASPS表示的坐标系。
[0066] afps_vdmc_ext_displacement_slice_alignment_update_flag:是表示是否更新网格位移的切片分割信息的标志。在本标志等于真(true)(例如1)的情况下,基于后述的asps_vdmc_ext_displacement_slice_type、asps_vdmc_ext_displacement_component_height的值来更新网格位移的切片分割信息。在本标志等于假(false)(例如0)的情况下,不更新网格位移的切片分割信息。
[0067] afps_vdmc_ext_displacement_slice_type:表示网格位移的各分量的切片分割的类别。值的含义如通过asps_vdmc_ext_displacement_slice_type的语义进行了说明那样。在没有出现afps_vdmc_ext_displacement_slice_type的情况下,afps_vdmc_ext_displacement_slice_type被设定为等于asps_vdmc_ext_displacement_slice_type。
[0068] afps_vdmc_ext_displacement_component_height:表示与网格位移三维向量的各分量(例如n、t、b)对应的图像的高度。在没有出现afps_vdmc_ext_displacement_component_height的情况下,afps_vdmc_ext_displacement_component_height被设定为等于asps_vdmc_ext_displacement_component_height。
[0069] 网格位移解码部305通过以下导出坐标系转换信息displacementCoordinateSystem。
displacementCoordinateSystem=afps_vdmc_ext_displacement_coordinate_system
[0070] 需要说明的是,在没有出现afps_vdmc_ext_displacement_coordinate_system的情况下,afps_vdmc_ext_displacement_coordinate_system被设定为等于asps_vdmc_ext_displacement_coordinate_system。(位移切片分割参数的导出)
[0071] 网格位移解码部305通过以下导出位移切片分割参数displacementSliceType、dispCompHeight。displacementSliceType=afps_vdmc_ext_displacement_slice_
typedispCompHeight=afps_vdmc_ext_displacement_component_heihht
[0072] 就是说,在AFPS中出现位移切片分割参数的语法要素的情况下,使用AFPS的相应语法要素的值,在没有出现的情况下,使用ASPS的相应语法要素的值。
[0073] 需要说明的是,也可以代替displacementSliceType,从Atlas帧网格信息(Atlas frame  mesh  information)解码表示是否使用分段的切片分割标志displacementSliceFlag。
<位移切片分割参数的语法例>
[0074] 图19是位移切片分割参数的语法的示例。在此,通过按ASPS进行编码/解码的变量名(以前缀asps开始的变量)进行说明,但也可以是以AFPS为单位进行编码/解码的变量名(以前缀afps开始的变量)。
[0075] asps_vdmc_ext_subdivision_method(afps_vdmc_ext_subdivision_method)表示位移的分割方法。在值为0的情况下不进行位移的分割。在值为1的情况下,表示进行位移的分割。在没有出现afps_vdmc_ext_subdivision_method的情况下,可以以如下方式进行设定。
afps_vdmc_ext_subdivision_method=asps_vdmc_ext_subdivision_metod
[0076] asps_vdmc_ext_subdivision_iteration_count(afps_vdmc_ext_subdivisi on_iteration_count)表示位移的分割数。在asps_vdmc_ext_subdivision_method为0以外时进行解码。位移的分割数与LOD的个数lodCount对应,asps_vdmc_ext_subdivision_iteration_count=0、1、2时的LOD的个数分别为1、2、
3。
[0077] asps_vdmc_ext_displacement_coordinate_system如进行了说明那样表示坐标系。
[0078] asps_vdmc_ext_packing_method表示将位移封装成矩形图像时的封装方法。在asps_vdmc_ext_packing_method=0的情况下,从前面开始扫描,将位移的值设定为二维的像素值。在asps_vdmc_ext_packing_method=1的情况下,从后面开始扫描,将位移的值设定为二维的像素值。也可以将值为0的情况称为向前(forward),将值为1的情况称为撤销(reverse)。或者,也可以将值为0的情况称为升序(ascending order),将值为1的情况称为降序(descending order)。在没有出现afps_vdmc_ext_packing_method的情况下,可以以如下方式进行设定。afps_vdmv_ext_subdivion_method=asps_vdmc_ext_packing_method
[0079] asps_vdmc_ext_displacement_video_block_size_idc(afps_vdmc_ext_displacement_video_block_size_idc)表示通过影像编解码器对位移进行编码时的基本块的尺寸(CTU尺寸)。在没有出现afps_vdmc_ext_video_block_size_idc的情况下,可以以如下方式进行设定。
afps_vdmc_ext_video_block_size_idc=asps_vdmc_ext_video_block_size_idc
[0080] 此外,asps_vdmc_ext_displacement_video_block_size_idc表示以块为单位将位移重新排列成图像的情况的基本块的尺寸。也可以对asps_vdmc_ext_displacement_video_block_size_idc=0、1、2、3、4分别分配块尺寸16、32、64、128、256。blockSize=ctuSize=16<<asps_vdmc_ext_displacment_video_block_size_ide
[0081] 此外,也可以分别分配块尺寸32、64、128、256、512。blockSize=ctuSize=32<<asps_vdmc_ext_displacement_video_block_
size_idc
[0082] asps_vdmc_ext_1d_displacement_flag是表示是否使用一维位移的标志。在值为1的情况下,使用一维位移,仅包括normal。此时,位移的分量数DisplacementDim为1。在值为0的情况下,使用三维位移,位移的分量数DisplacementDim为3。
[0083] asps_vdmc_ext_displacement_video_segment_enabled_flag是已经进行了说明的切片分割信息,是表示位移是否被切片分割成分量单元(是否在分量的边界对位移进行了切片分割)的标志。需要说明的是,asps_vdmc_ext_displacement_video_segment_enabled_flag可以表示作为在时空方向上独立的分段的HEVC的MCTS或对VVC的时间预测有限制的子图片。对VVC的时间预测有限制的子图片是sps_subpic_treated_as_pic_flag=1的子图片。而且,也可以表示禁止切片(分段)间的环路滤波(sps_loop_filter_across_subpic_enabled_flag==0)。为了明确切片(分段)是独立的,语法名也可以是asps_vdmc_ext_displacement_video_independent_segment_enabled_flag等。需要说明的是,也可以是表示能分割解码的asps_vdmc_ext_displacement_video_scalable_enabled_flag。
[0084] 在时空方向上独立的分段的情况下,也可以是sps_subpic_treated_as_pic_flag=1且sps_loop_filter_across_subpic_enabled_flag==0。
[0085] 需要说明的是,sps_subpic_treated_as_pic_flag[i]为1表示CLVS的各编码图片的第i个子图片在环路滤波以外的解码过程中被处理成图像。0表示在环路滤波以外的解码过程中不将CLVS的各编码图片的第i个子图片处理成图像。sps_loop_filter_across_subpic_enabled_flag[i]为1表示可能在CLVS的各编码图片的第i个子图片间应用环路滤波。0表示在CLVS的各编码图片的第i个子图片间不应用环路滤波。
[0086] 需要说明的是,在sps_subpic_treated_as_pic_flag=1的情况下,在对象图片与参照图片列表0(RefPicList[0])或作为参照图片列表1(RefPicList[1])的激活条目的参照图片之间,存在画面宽度、画面高度、CTU尺寸相等成立的限制。此外,在时间方向预测中,在sps_subpic_treated_as_pic_flag=1的情况下,不仅根据以下的算式,导出图片的宽度、高度,还基于子图片的范围导出参照区域的右范围和下范围。就是说,将参照位置的x坐标剪辑限制在rightBoundaryPos以下,将参照位置的y坐标剪辑限制在botBoundaryPos以下。rightBoundaryPos=sps_subpic_tredted_as_pic_flag?
SubpicRightBoundaryPos:ppspic_width_in_luma_samples‑1
botoundaryPos=sps_subpic_treated_as_pic_flag?SubpicBotBoundaryPos:
pps_pic_height_in_luma_samples‑1
[0087] 需要说明的是,SubpicRightBoundaryPos表示对象子图片的右端,SubpicBotBoundaryPos表示对象子图片的下端,pps_pic_width_in_luma_samples、pps_pic_height_in_luma_samples表示图片的宽度和高度。
[0088] 图20表示位移切片分割参数的语法的示例。在此,在asps_vdmc_ext_1d_displacement_flag为规定值(一维以外的值、表示三维的值)的情况下,从编码数据解码切片分割信息(例如asps_vdmc_ext_displacement_video_segment_enabled_flag、asps_vdmc_ext_displacement_slice_type)。
[0089] 图21是位移切片分割参数的语法的示例。在此,在asps_vdmc_ext_1d_displacement_flag为规定值(一维以外的值、表示三维的值)或LOD的分割数为1以上的情况(asps_vdmc_ext_subdivision_iteration_count>0)下,从编码数据解码切片分割信息(例如asps_vdmc_ext_displacement_video_segment_enabled_flag、asps_vdmc_ext_displacement_slice_type)。
[0090] 图22是位移切片分割参数的语法的示例。在此,在asps_vdmc_ext_subdivision_method为表示要分割的规定值的情况下,对与位移的特征、编码方法相关的语法要素进行解码。与位移的特征、编码方法相关的语法要素例如是asps_vdmc_ext_subdivision_iteration_count、asps_vdmc_ext_displacement_coordinate_system、asps_vdmc_ext_1d_displacement_flag、asps_vdmc_ext_displacement_video_block_size_idc、asps_vdmc_ext_packing_method、asps_vdmc_ext_displacement_video_segment_enabled_flag。由此,在不对位移进行切片分割的情况下不传输不需要的语法要素,因此起到能降低编码量的效果。
[0091] 图23是位移切片分割参数的语法的示例。在此,对某一语法要素asps_vdmc_ext_displacement_video_flag进行解码。asps_vdmc_ext_displacement_video_flag是表示是否通过影像编解码器来传输位移的语法要素。在asps_vdmc_ext_displacement_video_flag表示通过影像编解码器传输位移的情况下,对在将位移封装(配置)于图像时使用的参数进行解码。上述与位移的封装相关的参数例如是块尺寸asps_vdmc_ext_displacement_video_block_size_idc、封装方法asps_vdmc_ext_packing_method、切片分割信息asps_vdmc_ext_displacement_video_segment_enabled_flag。由此,在通过算术编码传输位移的情况(不利用影像编解码器的情况)下不传输不需要的语法要素,因此起到能降低编码量的效果。需要说明的是,也可以使用表示是否通过算术编码来传输位移的标志asps_vdmc_ext_displacement_arithmetric_coding_flag,来代替asps_vdmc_ext_displacement_video_flag。在该情况下,使用if(!asps_vdmc_ext_displacement_arithmetric_coding_flag),来代替if(asps_vdmc_ext_displacement_video_flag)的判定。就是说,在asps_vdmc_ext_displacement_arithmetric_coding_flag不表示使用算术编码的情况下,对与位移的封装相关的参数进行编码/解码。(网格位移解码部的动作)
[0092] 动画解码部3051对通过VVC、HEVC等编码后的几何动画流(V3C_GVD的视频流)进行解码,输出将(量化后的)网格位移作为像素值的解码图像(网格位移图像、网格位移排列)。通过DecGeoChromaFormat表示几何的颜色分量。图像可以是YCbCr4:2:0格式。此外,网格位移图像可以是转换后的网格位移图像。此外,也可以是网格位移图像的残差。
[0093] 位移解映射部3052根据网格位移图像生成网格位移。具体而言,根据坐标位置的对应关系,从二维的网格位移图像的gFrame[compIdx][y][x]导出分量compIdx单元(=cIdx)的一维信号的网格位移Qdisp[pos][compIdx]。需要说明的是,gFrame可以是从几何动画流(V3C_GVD的视频流)解码的图像排列DecGeoFrames[mapIdx][frameIdx]或GeoFramesNF[mapIdx][compTimeIdx]。在此,坐标位置的对应关系可以是以块为单位的Z阶数扫描。NF是标称格式(nominal format)的简称,是对图像尺寸、颜色采样等进行了调整后的图像。frameIdx和compTimeIdx是构成时间索引(composition time index)。需要说明的是,网格位移图像gFrame[compIdx][y][x]的排列的名称也可以是量化位移小波系数dispQuantCoeffFrame等,排列的索引的顺序也不限于gFrame[compIdx][y][x],也可以是dispQuantCoeffFrame[x][y][compIdx](以下相同)。
[0094] 位移解映射部3052根据表示是否使用从编码数据解码的一维位移的标志asps_vdmc_ext_1d_displacement_flag的值导出DisplacementDim。DisplacementDim=(asps_vdmc_ext_1d_displacement_flag)?1:3
[0095] 在此,asps_vdmc_ext_1d_displacement_flag=1表示仅传输三维的位移中的一维。表示位移的法线分量或x分量(第一分量)存在于(压缩后的)几何图像。位移解映射部3052在一维标志为真的情况下,推定剩余的2个分量为0。asps_vdmc_ext_1d_displacement_flag=0表示位移的3个分量全部存在于(压缩后的)几何图像。
[0096] 位移解映射部3052从网格位移的个数(点的个数)verCoordCount导出块的个数blockCount,从blockCount导出位移高度dispCompHeight。块是位移的系数块,blockSize是表示位移的系数块的尺寸的变量。width、height是表示网格位移图像的宽度和高度的变量。pixelsPerBlock=blockSize*blockSize
widthInBlocks=width/blockSize
shift=(1<<bitDepth)>>1
blockCount=(verCoordCount+pixelsPerBlock‑1)/pixelsPerBlock
heightInBlocks=(blockCount+widthInBlocks‑1)/widthInBlocks
[0097] 在某个构成中,位移解映射部3052可以使用如上所述从语法要素(例如asps_vdmc_ext_displacement_component_height)解码的dispCompHeight。
[0098] 在另一构成中,也可以是,位移解映射部3052在对网格位移进行了切片分割的情况(displacementSliceType为规定值的情况,displacementSliceFlag为真的情况)下,使用网格分割图像的高度的1/3来导出dispCompHeight。dispCompHeight=height/3
[0099] 在另一构成中,也可以是,位移解映射部3052在对网格位移进行了切片分割的情况(displacementSliceType为规定值的情况,displacementSliceFlag为真的情况)下,根据用于位移的编码的编解码器的编码树单元的尺寸(CTU Size、ctuSize、videoBlockSize)与规定的尺寸对齐,导出与网格位移三维向量的各分量对应的图像的高度dispCompHeight。需要说明的是,不限定于CTU的尺寸,也可以是网格图像的规定的块尺寸。
在该情况下,不称为ctuSize,而称为videoBlockSize。
dispCompHeight=heightInBlock*blockSize
dispCmpHeight=(dispCompHeight+ctuSize‑1)/ctuSize*ctuSize
dispCompHeight=(dispCompHeight+ctuSize‑1)&(ctuSize‑1)
[0100] 在此,~通过逐位的否定运算符使各比特反转。
[0101] 就是说,也可以以成为规定值ctuSize的常数倍的方式导出。
[0102] 此外,也可以设为blockSize=ctuSize。此外,也可以不依赖于displacementSliceFlag的值,而设为blockSize=ctuSize。
[0103] 在此,位移解映射部3052可以从由V3C的gi_geometry_codec_id[DecAtlasID]所示的编解码器的几何动画流的参数SPS(Sequence Parameter Set)导出ctuSize。
[0104] 位移解映射部3052可以从图谱的NAL单元的编码数据例如ASPS的语法要素解码ctuSize。此外,也可以解码ctuSizeIdx(videoBlockSizeIdx)的值,从16<<ctuSizeIdx或32<<ctuSizeIdx、64<<ctuSizeIdx导出ctuSize。
[0105] 如下所述,位移解映射部3052例如若gi_geometry_codec_id[DecAtlasID]为HEVC,则可以使用64,若为VVC,则可以使用128。ctuSize=ptl_profile_codec_group_idc==3(VVC)?128:64
[0106] 在此,ptl_profile_codec_group_idc的值表示0:AVC Progressive High、1:HEVC Main 10、2:HEVC Main 444、3:VVC Main 10。
[0107] ctuSize=gi_geometry_codec_id[DecAtlasID]的4个CC代码表示HEVC?64:128[0108] 在此,表示HEVC、VVC的4个CC代码的字符串分别为”hev1”、”vvi1”。
[0109] 或者,位移解映射部3052可以固定使用HEVC的CTU尺寸的最大值64和VVC的CTU尺寸的最大值128中较大的128。
[0110] 图9是网格位移图像gFrame被分割成几何的维数的分段(切片)的示例。在此,分割成三个切片,对gFrame的第一分量配置QDisp的第一、第二、第三分量的值。在此,W=width,H=height。
[0111] 在一种构成中,位移解映射部3052从3×height×width的网格位移图像gFrame导出(量化后的)网格位移排列Qdisp。在以下的构成中,在3D数据解码装置中,具备:动画解码部,对从上述编码数据的单元类型为V3C_GVD的几何动画流解码的网格位移图像进行解码;和位移解映射部,从具有上述x,y位置的分量compIdx的网格位移图像gFrame[compIdx][y][x]导出每个位置pos、分量compIdx的网格位移QDisp[compIdx][pos],上述位移解映射部在几何图像为4:2:0的情况下,通过从表示0至几何的维数DisplacementDim的值‑1的变量compIdx与高度dispCompHeight的乘积导出几何图像的Y坐标,来导出上述网格位移。
[0112] 在此,在4:2:0图像(DecGeoChromaFormat==1)的情况下,可以根据dispCompHeight从作为gFrame的第一分量(亮度(Y)图像分量)的gFrame[0][y][x]导出Qdisp。
[0113] 在此,asps_vdmc_ext_packing_method=0表示位移分量采样按升顺封装。asps_vdmc_ext_packing_method=1表示位移分量采样按降顺封装。computeMorton2D是用于实现Z阶数扫描的函数,通过以下定义。
[0114] 需要说明的是,以下,仅示出省略环路处理、变量导出处理、分支来进行说明的DecGeoChromaFormat==4:2:0的部分,但基于DecGeoChromaFormat的分支、4:4:4的情况直接应用上述处理即可。
[0115] 在一种构成中,可以基于位移切片分割参数dispCompHeight的值来导出网格位移排列Qdisp。例如,位移解映射部3052可以从编码数据解码上述高度dispCompHeight的值。
[0116] 在一种构成中,可以基于位移切片分割标志displacementSliceFlag的值来导出网格位移排列Qdisp。例如,位移解映射部3052还可以根据表示是否使用切片的语法要素来导出高度dispCompHeight的值。
[0117] 而且,位移解映射部3052也可以像已经示出那样以成为规定值的常熟倍的方式导出高度dispCompHeight的值。
[0118] 而且,位移解映射部3052也可以根据几何动画流的CTU的高度导出上述高度dispCompHeight的值。
[0119] 网格位移解码部305可以是在displacementSliceType为1或2的情况或通过外部单元指定的情况下,仅解码包括网格位移的第一分量的第一切片的构成。在该情况下,可以通过以下的处理导出Qdisp。或
Qdisp[v0][compIdx]=gFrame[0][y1][x1]‑shift
[0120] 根据上述,能根据通信路径、解码侧的能力仅对需要的部分进行解码,因此起到实现可伸缩的效果。以下相同。
[0121] 网格位移解码部305也可以是在displacementSliceType为1的情况或通过外部单元指定的情况下,仅对包括网格位移的第一分量的第一切片和包括第二分量的第二切片进行解码的构成。在该情况下,可以通过以下的处理导出Qdisp。或
[0122] 网格位移解码部305也可以是在displacementSliceType为1的情况或通过外部单元指定的情况下,仅对包括网格位移的第一分量的第一切片和包括第三分量的第三切片进行解码的构成。在该情况下,可以通过以下的处理导出Qdisp。
[0123] 如上所述,通过仅对网格位移的一部分分量进行解码,能简化处理。此外,根据需要对包括网格位移的第二和第三分量的切片进行解码(例如,在高速再现时仅对第一分量进行解码,普通再现时对所有分量进行解码),由此能实现可伸缩功能。此外,即使在编码数据中混入了错误的情况下,仅对没有错误的切片(分量)进行解码,由此能强化容错性。
[0124] 为了确保使用分段来进行编码,可以对比特流设置约束。
[0125] 例如,在坐标系转换信息displacementCoordinateSystem为规定值的情况下,可以将对几何动画流进行切片分割设为依据标准的流(一致性流)的请求。特别是,也可以将通过网格位移的分量单元进行切片分割设为一致性流的请求。
[0126] 由此,3D数据解码装置在表示示出是否以分段为单位进行编码的语法要素使用分段的情况下,可以通过网格图像的分量compIdx单元,使用分段来对编码后的几何动画流进行解码。
[0127] 例如,在asps_vdmc_ext_1d_displacement_flag为规定值(例如1)的情况下,也可以将对几何动画流进行切片分割设为依据标准的流(一致性流)的请求。特别是,也可以将通过网格位移的分量单元进行切片分割设为一致性流的请求。
[0128] 因此,3D数据解码装置在进行了一维编码的情况下,始终以网格图像的分量compIdx为单位,使用分段对编码后的几何动画流进行解码。(每个详情等级的解码、导出)
[0129] 此外,也可以采用按每个网格的详情等级(levelOfDetails、LOD)来对单独的位移切片分割参数进行解码、导出的构成。在图17、图18中,在slice_type为1、2的情况下,与图7、图8相同,不管网格的详情等级如何,都使用相同的位移分割参数,在slice_type为3的情况下,是按每个网格的详情等级使用不同的位移分割参数的示例。slice_type=3是对每个网格位移的详情等级分配不同的切片的类型。
[0130] 图17是按序列等级(ASPS)来传输每个详情等级的位移切片分割参数asps_vdmc_ext_displacement_component_height_lod[i]的构成的语法的示例。asps_vdmc_ext_displacement_component_height_lod[i]表示与网格位移的各分量对应的图像的高度。
[0131] 图18是按图片/帧等级(AFPS)来传输每个详情等级的位移切片分割参数afps_vdmc_ext_displacement_component_height_lod[i]的构成的语法的示例。afps_vdmc_ext_displacement_component_height_lod[i]表示与网格位移的各分量对应的图像中的切片的高度。
[0132] 图17、图18的语法要素中没有说明的是与图7、图8相同的定义。
[0133] 位移解映射部3052可以通过以下的处理导出Qdisp。
[0134] 在此,width、height是网格位移图像gFrame[compIdx][y][x](量化位移小波系数dispQuantCoeffFrame)的宽度、高度(以下相同)。需要说明的是,可以使用dispCompHeight=height/3。特别是,在为时空独立的切片(e.g.VVC的子图片)的情况下,在多个帧中使用相同的画面高度,因此使用dispCompHeight=height/3是适当的。
[0135] 在切片不是矩形的切片(CTU行单元),而是使用在CTU单元连续的切片的情况下,代替切片的高度compIdx*dispCompHeight[lodIdx],可以使用从编码数据解码的切片的起点位置dispCompPos[lodIdx]。
[0136] 位移解映射部3052可以通过以下的处理导出Qdisp。<以LOD为单位进行处理的例1>
[0137] 在此,asps_vdmc_ext_subdivision_iteration_count、asps_vdmc_ext_displacement_component_height_lod[i]可以分别替换成afps_vdmc_ext_subdivision_iteration_count、afps_vdmc_ext_displacement_component_height_lod[i]。
[0138] 网格位移解码部305可以是在displacementSliceType为3(对每个网格位移的详情等级分配不同的切片的类型)的情况下,仅对包括网格位移的规定的详情等级以下(例如,仅levelOfDetails=0,仅levelOfDetails=0和1等)的分量的切片解码位移切片分割参数的构成。需要说明的是,可以使用dispCompHeight=height/3。特别是,在为时空独立的切片(e.g.VVC的子图片)的情况下,在多个帧中使用相同的画面高度,因此使用dispCompHeight=height/3是适当的。<以LOD为单位进行切片分割的其他构成>
[0139] 图10是网格位移图像gFrame被分割成几何的维数的分段(切片)的示例。在此,分割成三个切片,对gFrame的第一分量配置QDisp的第一、第二、第三分量的值。在此,W=width,H=height。
[0140] 位移解映射部3052可以通过以下的处理从以LOD为单位进行了切片分割的网格位移图像导出Qdisp。在此,levelOfDetailAttributeCounts[i]是表示索引i+1所示的LOD的网格位移的开始位置pos的变量。
[0141] 位移解映射部3052在从编码数据解码的位移切片分割参数表示LOD封装的情况下,将LOD的大小numBlocksInLod与块尺寸pixelsPerBlock的常数倍对齐。可以通过使用该块尺寸,以LOD为单位使块环路,来导出Qdisp。位移切片分割参数表示LOD封装的情况例如在displacementSliceType为规定值的情况等下由lodBlockPacking=1表示。lodBlockPacking=0是不为LOD封装的情况。可以设为lodBlockPacking=
displacementSliceFlag。
[0142] 导出以LOD为单位与常数倍对齐的LOD单元的块数的算式例如由以下表示。numBlocksInLod[0]=
(level0fDetailAttributeCounts[0]+pixelsPerBlock‑1)/pixelsPerBlock
[0143] 需要说明的是,在表示对网格位移图像(几何动画流)进行了切片分割的情况下,可以从ctuSize导出pixelsPerBlock(blockSize=ctuSize)。此外,可以将ctuSize包括在位移切片分割参数中进行解码,也可以基于编解码器的种类来确定。此外,可以在ctuSize中使用128等常数。此外,在位移切片分割参数表示LOD封装的情况下,可以从ctuSize导出pixelsPerBlock。
[0144] 需要说明的是,在另一构成中,也可以将与常数倍对齐的LOD单元的块数直接作为位移切片分割参数来传输。在该情况下,可以通过以下导出。numBlocksInLod[i]=dispCount[i]、i=0..lodCount
[0145] 此外,也可以通过以下导出。numBlockssInLod[i]=32<<dispCountIdx[i]、i=0..lodCount
[0146] 在此,32可以是64、128、ctuSize。<以LOD为单位进行处理的例2>
[0147] 需要说明的是,可以使用dispCompHeight=height/3。特别是,在为时空独立的切片(e.g.VVC的子图片)的情况下,在多个帧中使用相同的画面高度,因此使用dispCompHeight=height/3是适当的。<以LOD为单位进行处理的例3>
[0148] 此外,如下所述,位移解映射部30可以使用从编码数据解码的ctuSize来进行导出,作为网格位移图像的位移的扫描单元的块尺寸blockSize。由此,编码器能自由设定在网格位移图像的几何动画流中利用的块尺寸,能使网格位移的扫描单元与动画流的块尺寸匹配。此外,位移解映射部3052在0至lodCount的LOD单元的环路中,在环路外导出块的起点和长度、vStart和vEnd,在环路结束紧前使更新vStart与到此为止的vEnd相等,通过在vEnd中加上规定的块尺寸而得到的值vEnd=startBlock+numBlocksInLod[lodIdx+1]来导出vStart。lodCount=asps_vdmc_ext_subdivision_iteration_count+1
blockSize=ctuSize

[0149] 需要说明的是,也可以不使用lodBlockPacking的标志而始终进行lodBlockPacking=1的处理(以下相同)。此外,在上述中,可以设为dispCompHeight=height/3。特别是,在为时空独立的切片(e.g.VVC的子图片)的情况下,在多个帧中使用相同的画面高度,因此使用dispCompHeight=height/3是适当的。
<以LOD为单位进行处理的例4>
[0150] 而且,如下所述,位移解映射部3052也可以将对LOD单元进行处理的情况(lodBlockPacking)下的LOD数设为lodCount,将除此以外的LOD设为0,预先对LOD单元和该块单元的开始位置、结束位置进行计算,通过LOD单元、点单元的环路来导出QDisp。lodCount=asps_vdmc_ext_subdivision_iteration_count+1
blockSize=ctuSize//or if(lbdBlockPacking)bllockSize=ctuSize
pixelsPerBlockk=blockSize*blockSize
[0151] 根据上述,不管是否以LOD为单位进行处理,都以lodCount为单位进行环路,因此处理变得简单。此外,在上述中,可以设为dispCompHeight=height/3。特别是,在为时空独立的切片(e.g.VVC的子图片)的情况下,在多个帧中使用相同的画面高度,因此使用dispCompHeight=height/3是适当的。
[0152] 例如,在displacementSliceType为规定值的情况(displacementSliceFlag为真的情况)下,也可以将对网格位移图像(几何动画流)进行了切片分割设为依据标准的流(一致性流)的请求。特别是,也可以将网格位移图像(几何动画流)以LOD为单位进行了切片分割设为一致性流的请求。此外,在lodBlockPacking为规定值(例如1)的情况下,也可以将网格位移图像(几何动画流)以LOD为单位进行了切片分割设为一致性流的请求。
[0153] 由此,3D数据解码装置在表示示出是否以切片(分段)为单位的编码的语法要素使用切片(分段)的情况下,可以以网格图像的LOD为单位,使用切片(分段)对编码后的几何动画流进行解码。
[0154] 例如,在asps_vdmc_ext_1d_displacement_flag为规定值(例如1)的情况下,也可以将对几何动画流进行切片分割设为依据标准的流(一致性流)的请求。特别是,也可以将以网格位移的LOD为单位进行了切片分割设为一致性流的请求。
[0155] 由此,3D数据解码装置在进行了一维编码的情况下,始终以网格图像的LOD为单位,使用分段对编码后的几何动画流进行解码。
[0156] asps_vdmc_ext_subdivision_iteration_count、afps_vdmc_ext_subdivision_iteration_count是表示按ASPS等级、AFPS等级通知的网格的分割重复次数的参数,是在每个详情等级的位移切片分割参数的导出中使用的参数。
[0157] 逆量化部3053基于量化位阶值iscale,进行逆量化,导出转换(例如,小波转换)后的网格位移Tdisp。Tdisp可以是笛卡尔坐标系,也可以是局部坐标系。iscale是从网格位移图像的各成分的量化参数导出的值。Tdisp[0][pos]=(Qdisp[0][pos]*iscale[0]+iscaleOffset)>>iscaleShiftTdisp[1][pos]=(Qdisp[1][pos]*iscale[1]+iscaleOffset)>>iscaleShiftTdisp[2][pos]=(Qdisp[2][pos]*iscale[2]+iscaleOffset)>>iscaleShift[0158] 在此,iscaleOffset=1<<(iscaleShift‑1)。iscaleShift可以是预先设定的常数,也可以使用按序列等级、图片/帧等级、图块/补丁等级等进行编码,并从编码数据解码得到的值。
[0159] 逆转换部3054进行逆转换g(例如,逆小波转换),导出网格位移d。d[0][pos]=g(Tdisp[0][pos])
d[1][pos]=g(Tdisp[1][pos])
d[2][pos]=g(Tdisp[2][pos])
[0160] 坐标系转换部3055基于坐标系转换信息displacementCoordinateSystem的值将网格 位移 (网格 位移 的坐 标系) 转换 为笛 卡尔 坐标 系。具 体而 言,在displacementCoordinateSystem=1的情况下,从局部坐标系的位移向笛卡尔坐标系的位移转换。在此,d是表示坐标系转换前网格位移的三维矢量。disp是表示坐标系转换后的网格位移的三维矢量,是笛卡尔坐标系。n_vec、t_vec、b_vec是与对象区域或对象顶点的局部坐标系的各轴对应的(笛卡尔坐标系的)三维矢量。if(displacementCoordinateSystem==0){
disp=d
}else if(displacementCoordinateSystem==1){
disp=d[0]*n_vec+d[1]*t_vec+d[2]*b_vec}
[0161] 当通过标量单独表达由上述的矢量乘法所示的导出方法时如下所示。
[0162] 需要说明的是,也可以采用设为disp=d在转换前后分配相同的变量名,通过坐标转换来更新d的值的构成。
[0163] 或者,也可以是以下的构成。
[0164] 在此,n_vec2、t_vec2、b_vec2是与邻接区域的局部坐标系的各轴对应的(笛卡尔坐标系的)三维矢量。
[0165] 此外,也可以是以下的构成。
[0166] 在此,n_vec3、t_vec3、b_vec3是与抑制变动的对象区域的局部坐标系的各轴对应的(笛卡尔坐标系的)三维矢量。例如,如下所示地从以前的坐标系和当前的坐标系导出用于解码的坐标系的矢量。n_vec3=(w*n_vec3+(WT‑w)*n_vec)>>wShift
t_vec3=(w*t_vec3+(WT‑w)*t_vec)>>wShift
b_vec3=(w*b_vec3+(WT‑w)*b_vec)>>wShift
[0167] 在此,例如wShift=2、3、4,WT=1<<wShift,w=1..WT‑1。
[0168] 例如在w=3,wShift=3的情况下,可以是以下。n_vec3=(3*n_vec3+5*n_vec)>>3
t_vec3=(3*t_vec3+5*t_vec)>>3
b_vec3=(3*b_vec3+5*b_vec)>>3
[0169] 此外,也可以是像以下的构成那样能根据从编码数据解码得到的坐标系转换信息displacementCoordinateSystem的值进行选择的构成。(网格的重构)
[0170] 图6是表示网格重构部307的构成的功能框图。网格重构部307由网格分割部3071、网格变形部3072构成。
[0171] 网格分割部3071分割从基本网格解码部303输出的基本网格来生成细分网格。
[0172] 图11(a)表示基本网格的一部分(三角形),三角形由顶点v1、v2、v3构成。v1、v2、v3为三维矢量。网格分割部3071通过在三角形的各边的中间追加新的顶点v12、v13、v23来生成细分网格并输出(图11的(b))。v12=(v1+v2)/2
v13=(v1+v3)/2
v23=(v2+v3)/2
[0173] 此外,也可以是以下。v12=(v1+v2+1)>>1
v13=(v1+v3+1)>>1
v23=(v2+v3+1)>>1
[0174] 网格变形部3072通过输入细分网格和网格位移,加上网格位移d12、d13、d23来生成变形网格并输出(图11(c))网格位移是网格位移解码部305(坐标系转换部3055)的输出。d12、d13、d23是与通过网格分割部3071追加的各顶点v12、v13、v23对应的网格位移。
v12’=v12+d12
v13’=v13+d13
v23’=v23+d23
[0175] 需要说明的是,也可以是d12=disp[0][]、d13=disp[1][]、d23=disp[3][]。(第一实施方式的3D数据编码装置的构成)
[0176] 图12是表示第一实施方式的3D数据编码装置11的概略构成的功能框图。3D数据编码装置11由图谱信息编码部101、基本网格编码部103、基本网格解码部104、网格位移更新部106、网格位移编码部107、网格位移解码部108、网格重构部109、属性更新部110、填充部111、颜色空间转换部112、属性编码部113、复用部114、网格分离部115构成。3D数据编码装置11输入图谱信息、基本网格、网格位移、网格、属性图像作为3D数据,输出编码数据。
[0177] 图谱信息编码部101对图谱信息进行编码,输出图谱信息编码流。
[0178] 基本网格编码部103对基本网格进行编码,输出基本网格编码流。作为编码方式,使用Draco等。
[0179] 基本网格解码部104与基本网格解码部303相同,因此省略说明。
[0180] 网格位移更新部106基于(原始的)基本网格和已解码的基本网格来调整网格位移,输出更新后的网格位移。
[0181] 网格位移编码部107对更新后的网格位移进行编码,输出网格位移编码流。作为编码方式,使用VVC、HEVC等。
[0182] 网格位移解码部108与网格位移解码部305相同,因此省略说明。
[0183] 网格重构部109与网格重构部307相同,因此省略说明。
[0184] 属性更新部110输入(原始的)网格、从网格重构部109(网格变形部3072)输出的重构后的网格、属性图像,更新成与重构后的网格的位置(坐标)相匹配的属性图像,并输出更新后的属性图像。
[0185] 填充部111输入属性图像,对像素值为空的区域进行填充处理。
[0186] 颜色空间转换部112从RGB格式向YCbCr格式进行颜色空间转换。
[0187] 属性编码部113对从颜色空间转换部112输出的YCbCr格式的属性图像进行编码,输出属性动画流。作为编码方式,使用VVC、HEVC等。
[0188] 复用部114对图谱信息编码流、基本网格编码流、网格位移编码流、属性动画流进行复用,并作为编码数据输出。作为复用方式,使用字节流格式、ISOBMFF等。(网格分离部的动作)
[0189] 网格分离部115从网格生成基本网格和网格位移。
[0190] 图15是表示网格分离部115的构成的功能框图。网格分离部115由网格间隔剔除部1151、网格分割部1152、网格位移导出部1153构成。
[0191] 网格间隔剔除部1151通过从网格间隔剔除一部分的顶点来生成基本网格。
[0192] 图16(a)表示网格的一部分,网格由顶点v1、v2、v3、v4、v5、v6构成。v1、v2、v3、v4、v5、v6分别为三维矢量。网格间隔剔除部1151通过间隔剔除顶点v4、v5、v6来生成基本网格并输出(图16的(b))。
[0193] 网格分割部1152与网格分割部3071同样,分割基本网格来生成细分网格(图16的(c))。v4’=(v1+v2)/2
v5’=(v1+v3)/2
v6’=(v2+v3)/2
[0194] 网格位移导出部基于网格和细分网格将顶点v4、v5、v6相对于顶点v4′、v5′、v6′的位移d4、d5、d6作为网格位移导出并输出(图16(d))。d4=v4‑v4’
d5=v5‑v5’
d6=v6‑v6’
(基本网格的编码)
[0195] 图13是表示基本网格编码部103的构成的功能框图。基本网格编码部103由网格编码部1031、网格解码部1032、运动信息编码部1033、运动信息解码部1034、网格运动补偿部1035、参照网格存储器1036、开关1037、开关1038构成。基本网格编码部103也可以是在基本网格的输入后包括未图示的基本网格量化部的构成。在不参照其他的基本网格(例如,已编码的基本网格)对基本网格进行编码(帧内编码)的情况下,开关1037和开关1038连接到不进行运动补偿的一侧。否则,在参照其他的基本网格对基本网格进行编码(帧间编码)的情况下,连接到进行运动补偿的一侧。
[0196] 网格编码部1031具有帧内编码功能,对基本网格进行帧内编码,输出基本网格编码流。作为编码方式,使用Draco等。
[0197] 网格解码部1032与网格解码部3031相同,因此省略说明。
[0198] 运动信息编码部1033具有帧间编码功能,对基本网格进行帧间编码,输出基本网格编码流。作为编码方式,使用算术编码等熵编码。
[0199] 运动信息解码部1034与运动信息解码部3032相同,因此省略说明。
[0200] 网格运动补偿部1035与网格运动补偿部3033相同,因此省略说明。
[0201] 参照网格存储器1036与参照网格存储器3034相同,因此省略说明。(网格位移的编码)
[0202] 图14是表示网格位移编码部107的构成的功能框图。网格位移编码部107由坐标系转换部1071、转换部1072、量化部1073、位移映射部1074(图像封装部、位移编码部)构成。如图14所示,网格位移编码部107还可以是包括动画编码部1075的构成。或者,动画编码部1075也可以是不包括在网格位移编码部107中,而位移图像的编码使用外部的图像编码装置的构成。
[0203] 坐标系转换部1071基于坐标转换信息displacementCoordinateSystem的值,将网格位移的坐标系从笛卡尔坐标系向对位移进行编码的坐标系(例如局部坐标系)转换。在此,disp是表示坐标系转换前网格位移的三维矢量,d是表示坐标系转换后的网格位移的三维矢量,n_vec、t_vec、b_vec是表示局部坐标系的各轴的(笛卡尔坐标系的)三维矢量。
[0204] 网格位移编码部107可以按图片/帧等级来更新displacementCoordinateSystem的值。
[0205] 在按序列等级来编码displacementCoordinateSystem的情况下,使用图7的构成的语法。在笛卡尔坐标系的情况下对asps_vdmc_ext_displacement_coordinate_system设定0,在局部坐标系的情况下对asps_vdmc_ext_displacement_coordinate_system设定1。
[0206] 在按图片/帧等级来变更displacementCoordinateSystem的情况下,使用图8的构成的语法。在更新坐标系的情况下,对afps_vdmc_ext_overriden_flag设定1,在不更新坐标系的情况下,对afps_vdmc_ext_overriden_flag设定0。在笛卡尔坐标系的情况下对afps_vdmc_ext_displacement_coordinate_system设定0,在局部坐标系的情况下对afps_vdmc_ext_displacement_coordinate_system设定1。
[0207] 转换部1072进行转换f(例如,小波转换),导出转换后的网格位移Tdisp。对pos=0..NumDisp‑1进行以下。在此,NumDisp为网格顶点的个数。
Tdisp[0][pos]=f(d[0][pos])
Tdisp[1][pos]=f(d[1][pos])
Tdisp[2][pos]=f(d[2][pos])
[0208] 量化部1073基于从网格位移的各分量的量化参数导出的量化位阶值scale来进行量化,导出量化后的网格位移Qdisp。Qdisp[0][pos]=Tdisp[0][pos]/soale[0]
Qdisp[1][pos]=Tdisp[1][pos]/scale[1]
Qdisp[2][pos]=Tdisp[2][pos]/scale[2]
[0209] 或者,也可以将scale值通过2的幂乘近似地通过下式导出Qdisp。scalc[i]=1<<scale2[i]
Qdisp[0][pos]=Tdisp[0][pos]>>scale2[0]
Qdisp[1][pos]=Tdisp[1][pos]>>scale2[1]
Qdisp[2][pos]=Tdisp[2][pos]>>scale2[2]
[0210] 位移映射部1074基于位移映射参数displacementChromaLocationType的值,根据量化后的网格位移Qdisp生成图像gFrame。
[0211] 位移映射部1074将(量化后的)网格位移排列的第一分量Qdisp[0]封装成亮度(Y)图像分量。
[0212] 对x=0..W‑1、y=0..H‑1进行以下。
[0213] 在图像的宽度W、高度H中,对(y=0..H‑1、x=0..W‑1)应用以下。在此,yc=y/2,xc=x/2。H=dispCompHeight
shift=(1<<bitDepth)>>1
gFrame[0][y][x]=Qdisp[0][pos]+shift
gFrame[0][H+y][x]=Qdisp[1][pos]+shift
gFrame[0][2*H+y][x]=Qdisp[2][pos]+shift
pos++
[0214] 对xc=0..W/2‑1、yc=0..H/2‑1进行以下。gFrame[1][yc][xc]=shift
gFrame[1][H/2*yc][xc]=shift
gFrame[1][H+yc][xc]=shift
gFrame[2][yc][xc]=shift
gFrame[2][H/2+yc][xc]=shift
gFrame[2][H+yc][xc]=shift
[0215] 或者,可以进行以下。
[0216] 或者,可以进行以下。或者,可以进行以下。
[0217] 需要说明的是,也可以根据DecGeoChromaFormat来切换处理。即,在DecGeoChromaFormat=1(4:2:0)的情况下,进行上述处理,在DecGeoChromaFormat=3(4:4:4)的情况下,进行下述处理。
gFrame[0][y][x]=Qdisp[0][pos]
gFrame[1][y][x]=Qdisp[1][pos]
gFrame[2][y][x]=Qdisp[2][pos]
pos=pos+1
[0218] 网格位移编码部107可以按图片/帧等级来更新displacementSliceType、dispCompHeight的值。
[0219] displacementSliceType、dispCompHeight的值的含义如通过asps_vdmc_ext_displacement_slice_type、asps_vdmc_ext_displacement_component_height说明的那样。
[0220] 在按图片/帧等级更新displacementSliceType的情况下,使用图8的构成的语法。对afps_vdmc_ext_displacement_slice_type设定displacementSliceType的值。对afps_vdmc_ext_displacement_component_height设定dispCompHeight的值。
[0221] 动画编码部1075对包括(量化后的)网格位移图像的YCbCr4:2:0格式的图像进行编码,输出网格位移编码流。作为编码方式,使用VVC、HEVC等。
[0222] 动画编码部1075可以按每个dispCompHeight将网格位移图像分割成切片来进行编码。此外,也可以根据CTU尺寸使dispCompHeight与规定的尺寸对齐。
[0223] 动画编码部1075也可以将网格位移的第一分量(例如D)分配给第一切片来进行编码,将第二分量(例如U)分配给第二切片来进行编码,将第三分量(例如V)分配给第三切片来进行编码(displacementSliceType=1)。
[0224] 此外,动画编码部1075也可以将网格位移的第一分量分配给第一切片来进行编码,将第二和第三分量分配给第二切片来进行编码(displacementSliceType=2)。
[0225] 如上所述,通过对每个网格位移的分量分配不同的切片,能使解码装置仅对一部分分量进行解码,因此能简化处理。此外,解码装置能根据需要对包括网格位移的第二和第三分量的切片进行解码,因此能实现可伸缩功能。此外,即使在编码数据中混入了错误的情况下,也能使解码装置仅对没有错误的切片(分量)进行解码,因此能强化容错性。
[0226] 以上,参照附图对该发明的一个实施方式详细地进行了说明,但具体构成并不限于上述实施方式,在不脱离该发明的主旨的范围内,可以进行各种设计变更等。〔应用例〕
[0227] 上述3D数据编码装置11和3D数据解码装置31可以搭载于进行3D数据的发送、接收、记录、再现的各种装置来利用。需要说明的是,3D数据可以是通过摄像机等拍摄的自然3D数据,也可以是通过计算机等生成的人工3D数据(包括CG(Computer Graphics:计算机动画)和GUI(Graphical User Interface:图形用户界面))。
[0228] 本发明的实施方式并不限定于上述的实施方式,能在权利要求所示的范围内进行各种变更。即,将在权利要求所示的范围内经过适当变更的技术方案组合而得到的实施方式也包括在本发明的技术范围内。工业上的可利用性
本发明的实施方式能优选地应用于对将3D数据编码而得到的编码数据进行解码的3D数据解码装置以及生成将3D数据编码而得到的编码数据的3D数据编码装置。此外,能优选地应用于由3D数据编码装置生成并被3D数据解码装置参照的编码数据的数据结构。
附图标记说明
11:3D数据编码装置
101:图谱信息编码部
103:基本网格编码部
1031:网格编码部
1032:网格解码部
1033:运动信息编码部
1034:运动信息解码部
1035:网格运动补偿部
1036:参照网格存储器
1037:开关
1038:开关
104:基本网格解码部
106:网格位移更新部
107:网格位移编码部
1071:坐标系转换部
1072:转换部
1073:量化部
1074:位移映射部
1075:动画编码部
108:网格位移解码部
109:网格重构部
110:属性更新部
111:填充部
112:颜色空间转换部
113:属性编码部
114:复用部
115:网格分离部
1151:网格间隔剔除部
1152:网格分割部
1153:网格位移导出部
21:网络
31:3D数据解码装置
301:解复用部
302:图谱信息解码部
303:基本网格解码部
3031:网格解码部
3032:运动信息解码部
3033:网格运动补偿部
3034:参照网格存储器
3035:开关
3036:开关
305:网格位移解码部
3051:动画解码部
3052:位移解映射部
3053:逆量化部
3054:逆转换部
3055:坐标系转换部
307:网格重构部
306:属性解码部
3071:网格分割部
3072:网格变形部
308:颜色空间转换部
41:3D数据显示装置

当前第1页 第1页 第2页 第3页
相关技术
数据解码相关技术
编码装置相关技术
德毛靖昭发明人的其他相关专利技术