法律状态公告日
法律状态信息
法律状态
2019-10-15
专利权的转移 IPC(主分类):G06T9/00 登记生效日:20190919 变更前: 变更后: 申请日:20121229
专利申请权、专利权的转移
2018-04-24
授权
授权
2015-05-20
实质审查的生效 IPC(主分类):G06T9/00 申请日:20121229
实质审查的生效
2015-01-21
公开
公开
相关申请
本申请要求享有于2012年4月19日提交的国际专利申请第PCT/CN2012/074388号的权益,通过引用将其并入本文。
技术领域
本发明涉及用于产生表示3D模型的方法及装置,以及用于解码表示3D模型的方法及装置。
背景技术
在实际的应用中,很多3D模型由大量连通成分组成。如图1所示,这些多成分3D模型通常包含多种变换的很多重复结构。
已知利用输入模型中的重复结构的多成分3D模型的高效压缩算法。以多种位置、取向和缩放因子探索3D模型的重复结构。然后,将3D模型组织成“图案-实例”表示。图案用于表示对应的重复结构的代表性的几何形状。属于重复结构的成分被表示为对应图案的实例,并且可以通过图案ID和变换信息(例如,反射、平移、旋转以及相对于图案的可能的缩放)来表示。可以将实例变换信息组织成例如反射部分、平移部分、旋转部分以及相对于图案的可能的缩放部分。可能有3D模型的一些成分不是重复的,其被称为独特成分。
K.Cai、W.Jiang和T.Luo共同拥有的标题为“System and method for errorcontrollable repetitive structure discovery based compression”的PCT申请(PCT/CN2012/070877,律师案卷号PA120001)的教导(通过引用被具体地并入本文)公开了一种方法和装置,用于识别3D模型中的重复结构以减少实例成分中的冗余,从而提高压缩效率。
发明内容
本原理提供了一种用于产生或解码表示3D模型的比特流的方法,包含以下步骤:存取用于编码与3D模型相关联的图案的第一量化参数;确定所述图案的实例的尺度以及所述图案的尺度,所述实例被表示为所述图案的变换;响应于所述第一量化参数、所述实例的尺度以及所述图案的尺度,确定所述实例的变换的旋转部分的第二量化参数;以及,响应于所述第二量化参数,对所述实例的变换的旋转部分执行编码或解码。本原理还提供了一种用于执行这些步骤的装置。
本原理还提供了一种计算机可读取的存储介质,其上存储用于根据上述方法产生或解码比特流的指令。
本原理还提供了一种计算机可读取的存储介质,其上存储根据上述方法产生的比特流。
附图说明
图1示出具有大量连通成分和重复成分的示例性的3D模型;
图2A示出图示图案的图例,图2B示出图示对应的实例和重建后的实例的图例,图2C示出图示对应的实例以及具有旋转参数的重建误差的实例的图例;
图3是图示根据本原理的实施例对3D模型的图案和实例进行编码的示例的流程图;
图4是图示根据本原理的实施例对3D模型的图案和实例进行解码的示例的流程图;
图5示出根据本原理的3D模型的示例性编码器;
图6示出根据本原理的3D模型的示例性解码器;以及
图7示出根据本原理的实施例的图示比特流结构的示例。
具体实施方式
如图1所示,在3D模型中可能有很多重复结构。为了有效地对3D模型进行编码,可以将重复结构组织成多个图案和实例,其中,可以例如使用图案ID和包含诸如平移、旋转和缩放这样的信息的变换矩阵将实例表示为对应的图案的变换。
在用图案ID和变换矩阵表示实例时,在压缩实例时将要压缩图案ID和变换矩阵。因此,可以通过图案ID和解码后的变换矩阵重建实例,即,可以将实例重建为由图案ID指示的解码后的图案的变换(从解码后的变换矩阵)。
图2A和2B例示了2D表示中的示例性成分,其中,成分210和220是图案,成分230和250(以实线的形式)是要压缩的原始实例,成分240和260(以虚线的形式)是重建后的实例。具体地,实例230和250可以分别表示为图案210和220的变换后的(亦即,经旋转和平移的)版本。在图2B中,在原始实例和重建实例之间,存在由平移和旋转量化造成的误差。出于例示的目的,在图2C中,提供了只带有旋转误差的实例270和280。
在图2C的示例中,旋转的量化引入了大约5°的误差,造成原始实例和重建实例之间的差异。在图2C中可以看到,虽然对于实例230和250,旋转误差(以角度度量)是相似的,但是由旋转量化造成的顶点坐标误差(亦即,原始实例和重建实例之间的顶点移位,例如在图2C中的从A到A”以及从B到B”)在两个实例之间显著不同,其中实例250具有大得多的顶点坐标误差。因此,如果对不同大小的实例使用相同的量化,重建成分的质量可能是不一致的,例如,较大的实例可能具有比较小的实例更低的重建质量。
本原理提供了一种通过考虑3D编码器的率失真性能对3D实例成分的变换信息进行高效量化的方法及装置。在一个示例性的实施例中,考虑最大允许失真,确定实例的旋转部分和平移部分的量化参数,使得改善率失真性能。下面,使用量化比特的数量作为示例性的量化参数。在使用诸如量化步长大小这样的其他量化参数时也可以应用本原理。
因为变换的缩放部分可以通过无损浮点编码解码器进行压缩,所以变换的缩放部分与下面的讨论无关。
基于发现的“图案-实例”表示,原始实例的顶点v可以表示为:
v=R*p+T (1)
其中,p是v在对应的图案中对应的顶点,R和T分别是图案和实例之间的旋转矩阵和平移矢量。
v的解码后的位置vd可以计算为:
vd=Rd*pd+Td (2)
其中,pd是p的解码后的位置,Rd和Td分别是解码后的旋转矩阵和解码后的平移矢量。
则对于顶点v,由压缩造成的失真可以计算为:
>
基于数学理论,可以推断:
>
其中,||Δp||max是顶点p的量化误差的上界,||ΔT||max是实例平移的量化误差的上界。
如果假设用欧拉角(α,β,γ)表示旋转矩阵,可以使用相同数量的量化比特对其进行量化,则
>
其中,Δθmax是α、β和γ的量化误差的上界。在对于角(α,β,γ)使用其他表示或不同的量化参数时,可以调整等式(5)。使用等式(5),等式(4)变成:
>
其中,||p||max是对应图案的任何顶点与对应图案的中心之间的最大距离。
如果将用于对图案进行编码的量化比特的数量记为QB_Pattern,并且将用于对平移进行编码的量化比特的数量记为QB_translation,则||p||max可以计算为:
>
并且||ΔT||max可以计算为:
>
其中,Pattern_Scal和Translation_Scal分别是图案顶点的边界框(bounding box)和平移的尺度。在一个示例中,Translation_Scal可以被测量为所有实例的所有平移的最大和最小可能值之间的差异,Pattern_Scal可以被测量为包含所有图案的边界框的对角线距离。在另一示例中,Pattern_Scal可以被测量为x、v和z维度的最大值。
目标之一是在控制最大编码误差的同时分配比特。假设最大允许编码误差是MaxErr。等式(6)应当满足下面的不等式:
>
为了简化,在一个实施例中,假设所有图案使用相同数量的量化比特,并且所有实例平移使用相同数量的量化比特。这样,图案的量化误差可以满足
||Δp||max=MaxErr/3, (8)
并且,实例平移的量化误差可以满足
||ΔT||max=MaxErr/3. (9)
当在等式(8)和(9)中估计出量化误差的上界之后,可以基于图案顶点的边界框的尺度和实例平移估计量化比特的数量。
在一个简化的示例性实施例中,可以假设两个上界是相同的,因此,根据等式(8)和(9),实例平移可以使用与图案相同数量的量化比特。
在另一个示例性实施例中,考虑图案的边界框与实例的边界框之间的尺度差异。假设||Δp||max=||ΔT||max,则平移部分的量化比特的数量可以计算为:
参数Translation_Scal可以在比特流中发送,并且其在编码器以及解码器处变得可用,使得等式(10)可以在编码器以及解码器处使用。根据等式(10),所有实例平移都使用相同的量化参数,其与图案和实例平移的尺度之间的比率有关。
如在图2中所述,相同的旋转量化误差(以角度度量)可能在较大的成分中造成较大的顶点移位。因此,可以根据实例的大小自适应地量化旋转信息的量化参数。例如,诸如更大数量的比特或更小的量化步长大小这样的更精细的量化参数可以用于量化较大实例的旋转部分。
由旋转量化误差造成的顶点坐标误差可以满足
>
即,第i个实例成分的旋转量化误差的上界可以估计为:
>
其中,HalfScali是第i个实例成分的一半尺度(亦即,该实例的包围合的对角线距离的一半)。在一个实施例中,HalfScali可以根据对应的重建图案估计。通过使用可以由编码器和解码器存取的重建图案估计HalfScali,可以在解码器处计算出旋转部分的量化参数,因此,编码器不需要明确地在比特流中指示旋转部分的量化参数。可以从等式(12)不同地估计出Δθmax_i。例如,当在等式(5)中估计更严格的近似时,可以相应地更新等式(12)以及等式(7)和(11)。
在压缩之前,所有的图案都与世界坐标系统对齐。则可以使用相同的量化参数一起编码所有的图案。图案的位置和取向也被编码并记录在比特流中。使用用于对图案进行编码的量化比特的数量(QB_Pattern),可以基于图案顶点的边界框的尺度和旋转角计算出第i个实例的旋转部分的量化比特的数量(QB_Roti),如下:
其中,angle_Scal是旋转角的尺度。在一个示例中,angle_Scal可以被测量为所有实例旋转的最大和最小可能角之间的差异。在另一示例中,设置angle_Scal为2π。
假设Pattern_scal被测量为所有图案的边界框的大小,并且每个欧拉角的可能值是0~2π,则等式(13)变成:
即,当实例更大时(亦即,HalfScali更大),实例的量化比特的数量(QP_Roti)被确定为更大。因此,根据本原理,更大的实例对于其旋转部分得到更精细的量化。
此处假设在等式(14)的变换中没有缩放部分。在旋转角的尺度改变、考虑变换的缩放部分或者不同地测量图案和实例的大小时,应当相应地调整等式(14)。
如上所述,实例的变换矩阵的平移部分和旋转部分的量化参数可以基于用于对图案进行编码的量化参数确定,以便提高压缩效率。在一个示例性实施例中,可以在比特流中指示用于对图案进行编码的量化比特的数量(QB_Pattern),可以使用等式(10)计算实例的变换矩阵的平移部分,并且可以使用等式(14)计算旋转部分的量化比特的数量。
在另一个示例性的实施例中,假设图案顶点、实例平移和实例旋转的重建误差的上界是相同的,亦即,
||ΔP||max=||ΔE||max/3
其中,||ΔE||max是整个模型的量化误差的上界,||ΔP||max是所有图案的量化误差的上界。因此,可以从整个3D输入模型的量化比特的数量计算出用于对图案进行编码的量化比特的数量,如下:
其中,QB_EntireModel是整个3D输入模型的量化比特的数量,并且EntireModel_Scal反映整个3D输入模型的大小。
上面,可以使用3D模型中的所有图案测量Pattern_Scal。在另一个实施例中,单独地压缩图案,并且一起压缩同一图案的实例。所有的图案都可以使用相同的量化参数。另外,在等式(10)和(13)中的Pattern_Scal对应于对应图案的边界框的尺度,并且等式(10)中的Translation_Scal和等式(13)中的angle_Scal分别对应于当前图案的实例的平移和旋转角的尺度。
图3例示了对3D模型的图案和实例进行编码的示例性方法300。方法300开始于步骤305。在步骤310,输入3D模型数据并且执行初始化。还可以输入或者从输入推出诸如质量参数、用于对图案进行编码的量化参数这样的附加数据。在一个示例性的实施例中,初始化步骤可以将重复结构组织成图案和实例,并且产生实例的变换矩阵。在步骤320,对图案进行编码以形成重建图案。在步骤350,确定图案、平移和旋转的尺度。例如,可以将图案的尺度(Pattern_scal)测量为包含所有图案的边界框的对角线距离,平移的尺度(Translation_scal)可以从元数据获得并且可以以数据流发送,并且可以基于角度表示确定旋转尺度(angle_scal,例如,在使用欧拉表示时,将angle_scal设置成2π。
在步骤360,例如使用等式(10),可以确定用于实例成分的变换矩阵的平移部分的量化参数。例如使用等式(14),可以确定变换矩阵的旋转部分的量化参数。然后,在步骤370,对实例的变换矩阵进行编码。在步骤380检查是否还有更多的实例需要处理。如果还有更多的实例要处理,则控制返回到步骤350。否则,控制传递至结束步骤399。
图4例示了对3D模型的图案和实例进行解码的示例性方法400。方法400的输入可以包括比特流,例如使用方法300产生的比特流。方法400开始于步骤405。在步骤410,执行初始化,例如从输入的比特流得出用于对图案进行编码的量化参数。
在步骤420对图案进行解码。在步骤435,确定图案、平移和旋转的尺度。在步骤440,可以确定实例成分的变换矩阵的平移部分和/或旋转部分的量化参数。在步骤450对变换矩阵进行解码。然后,在步骤460例如使用对应的重建图案和解码后的变换矩阵重建实例。在步骤470检查是否还有更多的实例需要处理。如果是,则控制返回到步骤435。否则,控制传递至结束步骤499。
注意,为了对实例进行适当的解码,应当在编码器和解码器处使用对应的方法确定图案、平移和旋转的尺度以及计算量化参数。例如,当由方法300产生的比特流被用作方法400的输入时,步骤435和440应当分别对应于步骤350和360。
在图3和4中,在实例之前对3D模型中的所有图案进行编码或解码。在另一个实施例中,对每个图案的编码/解码可以跟随着对对应的实例的编码/解码。
以上,在给出最大允许误差的情况下论述了如何分配量化比特的数量。另一方面,等式(7)可以用于速率控制,即,用于确定给定比特数量的量化参数以便使解码后的3D模型的质量最优化。
压缩图案的以比特的数量测量的大小可以计算为:
Compr_Pattern=QB_Pattern*Pattern_Ver_Num*Cpv+Pattern_Tri_Num*Cpt,(16)
其中,Pattern_Ver_Num和Pattern_Tri_Num分别是所有图案的顶点的数量和三角形的数量,Cpv和Cpt是例如用于计数熵编码的压缩率的预定值。在一种实现方式中,Cpv=0.2并且Cpt=3。压缩实例的大小可以计算为:
>
其中,Cinsta是预定值。压缩后的独特成分的大小可以计算为:
Compr_UniComp=QB_UniComp*UniComp_Ver_Num*Cpv+UniComp_Tn_Num*Cpt,(18)
其中,QB_UniComp是用于对独特成分进行编码的量化比特的数量,UniComp_Ver_Num和UniComp_Tri_Num分别是独特成分的顶点数量和三角形数量。在一个示例性实施例中,||ΔU||max=||ΔP||max,QB_UniComp可以计算如下:
其中,UniComp_Scale是独特部分的边界框的尺度。独特成分的平移的量化比特可以计算如下:
其中,UniComp_Transl_Scal是所有独特成分的所有平移的边界框的尺度。
然后,压缩后的3D模型的总大小可以计算为:
Compr_EntireModel=Compr_Pattern+Compr_lnsta+Compr_UniComp.(20)
基于等式(10)、(14)和(19),可以根据QB_Pattern的变化得到QB_Translation、QB_Roti或者QB_UniComp。然后,根据等式(10)、(14)和(16-19),可以将Compr_Pattern、Compr_lnsta或者Compr_UniComp表示为QB_Pattern的函数。另外,使用等式(20),可以得到压缩后的3D模型的总大小Compr_EntireModel和QB_Pattern之间的关系。因此,给出期待的压缩后的模型大小Compr_Model,可以决定QB_Pattern。根据QB_Pattern,可以使用MaxErr=3*Pattern_Scal/2QB_Pattern+1计算出编码误差的上界MaxErr。
图5图示了示例性3D模型编码器500的框图。装置500的输入可以包括3D模型、用于对3D模型进行编码的质量参数以及其他元数据。3D模型首先通重复结构探索模块510,其以图案、实例和独特成分的形式输出3D模型。图案编码器520用于压缩图案,独特成分编码器550用于对独特成分进行编码。对于实例,基于用选择的模式对实例成分信息进行编码。如果选择了实例信息组模式,则使用分组实例信息编码器540对实例信息进行编码;否则,使用基本实例信息编码器530对其进行编码。在重复结构检验器560中进一步地检验编码后的成分。如果编码后的成分不满足其质量需求,则将使用独特成分编码器550对其进行编码。在比特流组装器570处组装图案、实例和独特成分的比特流。
为了提高压缩效率,可以平移原始3D模型的所有成分,使得成分的中心对齐。需要对中心的平移进行压缩并且在比特流中指示。可以改善率失真性能,因为成分的边界框可以小得多(在大多数情况下)并且对于相同的编码误差需要更小的量化比特。
另外,可以通过将成分的中心平移至原点产生图案,并且可以将原始成分视为实例。为了提高压缩效率,对于图案成分(对应于图案的成分),在压缩后的比特流中只指示平移。如果没有重复结构或者没有足够的重复结构保证由图案-实例表示带来的比特率节省,则可以将输入的3D模型的所有成分视为独特成分。
图6图示了示例性3D模型解码器600的框图。装置600的输入可以包括3D模型的比特流,例如由编码器500产生的比特流。与压缩后的比特流中的图案相关的信息由图案解码器620解码。与独特成分相关的信息由独特成分解码器650解码。对实例信息的解码还取决于用户选择的模式。如果选择了实例信息组模式,则使用分组实例信息解码器640对实例信息进行解码;否则,使用基本实例信息解码器630对其进行解码。在模型重建模块660处重建解码后的图案、实例信息以及独特成分以产生输出的3D模型。
图7例示了用于产生压缩的比特流的示例性方法700。比特流以头部缓冲开始(PB3DMC_stream_header,710),其包含对压缩后的流进行解码的所有必要信息。信息可以包括:
●在原始模型中是否有独特部分;
●在原始模型中是否有至少一个重复结构;
●在该比特流中是否使用“分组实例变换模式”或“基本实例变换模式”;
●关于原始3D模型的信息;
●关于实例可能有的属性的类型的信息;
●用于压缩几何形状的3D模型压缩方法;以及
●所有3D对象(如有必要,图案以及其他部分)的连通和特性。
如果在原始模型中没有独特成分和重复结构(uni_part_bit==0&&repeat_struc_bit==0),则比特流的剩余部分是使用在PB3DMC_stream_header中指示的3D模型压缩方法压缩后的输入3D模型(730)。否则,则比特流中的下一个部分是所有独特成分的压缩结果(745),如果有一些的话(740)。如果至少有一个重复结构(750),则下一个数据字段是所有图案的压缩结果(760)。取决于在比特流中选取了哪种实例变换包装模式,compr_insta_grouped_data(780)或compr_insta_elementary_data(785)是比特流中的下一个部分。
在表1中,示出了本原理的头部的基本语法和语义。注意,一些数据字段从3DMC扩展[w11455,ISO/IEC 14496-16第4版的最终文本,MPEG-3DGC,第93届MPEG会议,2011年2月]的比特流定义中取得。
表1
ver_num:该32比特的无符号整数包含整个3D模型的顶点的数量。该值可以用于检验解码后的3D模型。
tri_num:该32比特的无符号整数包含整个3D模型的三角形的数量。该值可以用于检验解码后的3D模型。
default_coord_bbox:该1比特的无符号整数指示是否对整个3D模型的几何形状使用默认的边界框。0表示使用另外的边界框,1表示使用默认的边界框。默认的边界框被定义为xmin=0.0,ymin=0.0,zmin=0.0,xmax=1.0,ymax=1.0,并且zmax=1.0。
coord_box:该数据字段包含整个3D模型的几何形状的边界框。几何形状边界框通过(xmin,ymin,zmin,xmax,ymax,zmax)定义。
QP_coord:该5比特的无符号整数指示3D模型几何形状的质量参数。
QP_coord的最小值是3,最大值是31。QP_coord可以对应于等式(10)中的QB_Pattern或等式(15)中的QB_EntireModel。
normal_binding:该2比特的无符号整数指示对3D模型的法线绑定(thebinding of normals)。可容许的值如下表所述。
default_normal_bbox:该1比特的无符号整数应当一直为“0”,其指示将默认的边界框用于整个3D模型的法线。法线的默认边界框被定义为nxmin=0.0,nymin=0.0,nzmin=0.0,nxmax=1.0,nymax=1.0,并且nzmax=1.0。
QP_normal:该5比特的无符号整数指示3D模型几何形状的质量参数。
QP_normal的最小值是3,最大值是31。
color_binding:该2比特的无符号整数指示对3D模型的颜色的绑定。下表示出了可容许的值。
default_color_bbox:该1比特的无符号整数指示是否将默认边界框用于整个3D模型的颜色。0表示使用另外的边界框,1表示使用默认边界框。默认的边界框被定义为rmin=0.0,gmin=0.0,bmin=0.0,rmax=1.0,gmax=1.0,并且bmax=1.0。
color_bbox:该数据字段包含整个3D模型的颜色的边界框。颜色边界框被定义为(rmin,gmin,bmin,rmax,gmax,bmax)。
QP_color:该5比特的无符号整数指示颜色的质量参数。QP_color的最小值是3,最大值是31。
multi_texCoord_num:该5比特的无符号整数给出每个顶点/拐角的纹理坐标的数量。
texCoord_binding:该2比特的无符号整数指示对3D模型的纹理坐标的绑定。
下表示出了可容许的值。
default_texCoord_bbox:该1比特的无符号整数指示是否对纹理坐标使用默认边界框。0表示使用另外的边界框,1表示使用默认的边界框。默认的边界框被定义为umin=0.0,vmin=0.0,umax=1.0并且vmax=1.0。
texCoord_bbox:该数据字段包含整个3D模型的纹理坐标的边界框。纹理坐标边界框被定义为(umin,vmin,umax,vmax)。
QP_texCoord:该5比特的无符号整数指示纹理坐标的质量参数。QP_texCoord的最小值是3,最大值是31。
multi_attribute_num:该5比特的无符号整数指示每个顶点/面/拐角的属性的数量。
attribute_binding:该2比特的无符号整数指示对3D模型的属性绑定。下面的表示出了可容许的值。
default_attribute_bbox:该1比特的无符号整数指示对于属性是否使用默认的边界框。0表示使用另外的边界框,1表示使用默认的边界框。默认的边界框被定义为attribute_min[1..attribute_dim]=0.0,attribute_max[1..attribute_dim]=1.0。
attribute_bbox:该数据字段包含属性的边界框。纹理坐标边界框定义为(attribute_min[1..attribute_dim],attribute_max[1..attribute_dim])。
QP_attribute:该5比特的无符号整数指示属性的质量参数。QP_attribute的最小值是3,最大值是31。
在表2中,对于本原理例示了用于独特部分的示例性语法和语义。
表2
compr_uni_comp_data:该数据字段包含所有独特成分的压缩的几何形状、连通性和属性,其通过由3d_model_compr_mode指示的压缩方法编码。所有独特成分在压缩之前被平移至原点。
compr_uni_comp_transl:该数据字段包含用于所有独特成分的压缩后的平移矢量。首先进行量化,然后进行熵编码,由此对独特成分平移矢量进行压缩。该数据字段使用与compr_uni_comp_data相同的独特成分次序。
bit_num_uni_comp_transl():该函数计算用于基于QP_coord对每个独特成分平移矢量进行量化的比特的数量。
在表3中,对于本原理,例示了用于重复结构的示例性语法和语义。
表3
compr_pattern_data:该数据字段包含所有图案的压缩的几何形状、连通性和属性,其通过由3d_model_compr_mode指示的压缩方法进行编码。
compr_pattern_transl:该数据字段包含所有图案成分的压缩的平移矢量。首先进行量化,然后进行熵编码,由此对图案平移矢量进行压缩。该数据字段使用与compr_pattern_data相同的图案次序。
comprinsta_elementary_data:该数据字段包含用于所有使用“基本实例变换模式”的实例的压缩的变换数据。以字节对齐的方式进行压缩。
comprinsta_grouped_data:该数据字段包含用于所有使用“分组实例变换模式”的实例的压缩的变换数据。以字节对齐的方式进行压缩。
bit_num_pattern_transl():该函数计算用于基于QP_coord对每个图案成分的平移矢量进行量化的比特的数量。
在表4中,对于本原理例示了用于实例的示例性语法和语义。
表4
insta_transl_bbox:该数据字段包含所有平移矢量的边界框,使得可以在压缩实例平移信息时使用量化。包含盒通过insta_transl_xmin,insta_transl_ymin,insta_transl_zmin,insta_transl_xmax,insta_transl_ymax,insta_transl_zmax定义。
compr_elem_insta_patternID:该数据字段包含第i个实例的压缩的图案ID。
elem_insta_filp_flag:该1比特的无符号整数指示第i个实例与对应图案相比是否被翻转。翻转的实例表示实例三角形法线处于对应图案三角形的相反方向上。0表示第i个实例未被翻转,1表示第i个实例被翻转。
elem_insta_reflection_flag:该1比特的无符号整数指示第i个实例的变换是否包括反射。0表示第i个实例的变换不包括反射,1表示第i个实例的变换包括反射。
elem_insta_attribute_header:该数据字段包含第i个实例的属性头部。
compr_elem_insta_transl:该数据字段包含第i个实例的压缩的平移矢量。
compr_elem_insta_rotat_spherical:该数据字段包含球形模式下的第i个实例的压缩的旋转变换。
compr_elem_insta_scaling:该数据字段包含第i个实例的压缩的缩放因子。
compr_elem_insta_error_compen_data:该数据字段包含第i个实例的压缩的编码误差补偿数据。
compr_elem_insta_attribute_data:该数据字段包含第i个实例的压缩的属性数据。
bit_num_insta_transl():该函数计算用于基于QP_coord对实例平移矢量进行量化的比特的数量。
need_error_compensation:该函数确定第i个实例的编码误差是否需要补偿。
bit_num_vertex_coding_error():该函数自适应地计算用于基于QP_coord对第i个实例的每个顶点的编码误差进行量化的比特的数量。
在表5中,对本原理例示了用于旋转角的示例性语法和语义。球形模式下的第i个实例的旋转通过三个角度表示:α、β和γ。
表5
compr_elem_insta_rotat_alpha:该数据字段包含第i个实例的旋转的压缩的α。
compr_elem_insta_rotat_beta:该数据字段包含第i个实例的旋转的压缩的β。
compr_elem_insta_rotat_gamma:该数据字段包含第i个实例的旋转的压缩的γ。
bit_num_rota_alpha():该函数自适应地计算基于QP_coord和对应图案的尺度的用于第i个实例的旋转的α值的比特数量。
bit_num_rota_beta():该函数自适应地计算基于QP_coord和对应图案的尺度的用于第i个实例的旋转的β值的比特数量。
bit_num_rota_gamma():该函数自适应地计算基于QP_coord和对应图案的尺度的用于第i个实例的旋转的γ值的比特数量。
在本文中描述的实现方式可以实现为例如方法或过程、装置、软件程序、数据流或者信号。尽管只在单一形式的实现方式的背景下进行了论述(例如,只作为方法进行了论述),所讨论的特征的实现方式还可以实现为其他形式(例如,装置或程序)。装置例如可以实现为适当的硬件、软件和固件。方法例如可以实现在诸如例如处理器(一般称为处理设备,例如包括计算机、微处理器、集成电路或可编程的逻辑设备)这样的装置中。处理器还可以包括诸如例如计算机、手机、便携/个人数字助理(“PDA”)以及其他便于与终端用户之间进行信息通信的设备这样的通信设备。
本原理提及的“一个实施例”或“实施例”或“一种实现方式”或“实现方式”及其其他变型表示是指结合实施例所述的具体特征、结构、特性等被包括在本原理的至少一个实施例中。因此,在本说明书的各处出现的短语“在一个实施例中”或“在实施例中”或“在一种实现方式中”或“在实现方式中”不一定全部指同一实施例。
另外,该申请或其权利要求书可能提及“确定”各条信息。确定信息可以包括以下中的一项或多项:例如,估计信息,计算信息,预测信息或者从存储器取得信息。
另外,该申请或其权利要求书可能提及“存取”各条信息。存取信息可以包括以下中的一项或多项:例如,接收信息,取得信息(例如,从存储器),存储信息,处理信息,传送信息,移动信息,复制信息,擦除信息,计算信息,确定信息,预测信息或者估计信息。
另外,该申请或其权利要求书可能提及“接收”各条信息。与“存取”一样,接收旨在用作宽泛的术语。接收信息可以包括以下中的一项或多项:例如,存取信息或者取得信息(例如,从存储器)。另外,“接收”典型地以一种或另外的方式被包括在诸如存储信息、处理信息、传送信息、移动信息、复制信息、擦除信息、计算信息、确定信息、预测信息或者估计信息这样的操作期间。
对于本领域的技术人员很明显地,实现方式可以生成各种信号,其被格式化以携带例如可以被存储或传送的信息。信息例如可以包括用于执行方法的指令或由所述实现方式之一生成的数据。例如,可以格式化信号以携带所述实施例的比特流。可以将这样的信号格式化成例如电磁波(例如,使用频谱的射频部分)或基带信号。格式化例如可以包括对数据流进行编码以及对带有编码后的数据流的载波进行调制。信号携带的信息例如可以是模拟或数字信息。众所周知地,信号可以通过各种不同的有线或无线链路传送。信号可以存储在处理器可读取的介质上。
机译: 用于基于3D模型压缩发现重复结构的比特流的方法和装置
机译: 基于重复结构发现的基于3D模型压缩的位流生成的3D方法和装置
机译: 3基于分支区域和结构的虚拟相机设置方法和装置,用于探索3D树状对象