法律状态公告日
法律状态信息
法律状态
2019-10-08
专利权的转移 IPC(主分类):H04N19/184 登记生效日:20190917 变更前: 变更后: 申请日:20111125
专利申请权、专利权的转移
2018-10-16
授权
授权
2014-12-17
实质审查的生效 IPC(主分类):H04N19/184 申请日:20111125
实质审查的生效
2014-08-06
公开
公开
技术领域
本发明涉及基于3D模型压缩算法的重复性结构发现的比特流语法和语义,用于生成表示3D模型的比特流的方法和设备,以及用于处理该表示3D模型的比特流的方法和设备。
背景技术
在实际应用中,很多3D模型由大量连接的组件构成。并且这些多向连接的3D模型通常包含以各种变换的重复性结构,如图所示。用于此类3D模型的高效压缩方法应当能够提取存在于重复性结构中的冗余。
本发明的拥有人还共同拥有K.Cai,Y.Jin和Z.Chen的名为“EfficientCompression Scheme for Large3D Engineering Models”的PCT申请(WO2010149492),该申请教导如下3D模型的压缩方法:其由很多小型到中型的连接组件构成并且具有在各种位置、尺寸和朝向上重复的几何结构特征,其教导通过引用具体地合并于此。此方法发现了在各种位置、朝向和缩放因子上重复的结构。然后,3D模型整理为“模式-实例”的表示。模式是对应重复性结构的代表性几何结构。属于重复性结构的连接组件称为对应模式的实例并由它们的变换表达,即,关于该模式的位置、朝向和可能的缩放因子。实例的朝向用笛卡尔坐标系中的(x0,y0,z0)和(x1,y1,z1)表示的2个正交轴或球坐标系中的(alpha,beta,gamma)来表示。
本发明的所有人还共同拥有K.Cai,W.Jing和J.Tian的名为“BitstreamSyntax and Semantics of Repetitive Structure Discovery Based3D ModelCompression Algorithm”的PCT申请(PCT/CN2011/076991),该申请教导用于压缩实例变换数据的两种方法。
发明内容
然而,存在提供可以处理诸如法线、颜色和纹理坐标之类的3D模型属性并可以压缩其变换包括反射变换的实例的方法和设备的需要。
因此,本原理提供可以用来压缩诸如法线、颜色和纹理坐标之类的3D模型属性并压缩其变换包括反射变换的实例并生成包括此信息的比特流的方法和设备。
本原理提供用于生成表示3D模型的比特流的方法,包括:访问与关联于一些结构的模式的实例有关的信息,该信息包括与每一个相应模式关联的模式识别符和变换信息;并生成表示实例的比特流,包括以下面描述的第一格式和第二格式之一布置(dispose)在比特流中的模式识别符和模式变换数据。本原理还提供用于执行这些步骤的设备。比特流还可以包括与多个模式关联的信息以及以第一格式和第二格式之一的与该多个模式关联的相应信息。
本原理还提供用于处理表示3D模型的比特流的方法,包括:确定该比特流是否包括与关联于结构的模式的实例有关的信息,该信息包括以如下描述的第一格式或第二格式的模式识别符和与该模式关联的变换信息;响应于确定步骤访问关联于模式的模式识别符和变换信息;并且解码该模式识别符和该变换信息以生成3D模型数据。本原理还提供用于进行上述步骤的设备。比特流还可以包括与多个模式关联的信息以及以第一格式和第二格式之一的与该多个模式关联的相应信息。
本原理还提供在其上存储了用于根据上述方法生成或处理比特流的指令的计算机可读存储介质。
本原理还提供在其上存储了根据上述方法生成的比特流的计算机可读存储介质。
附图说明
图1示出了具有大量连接组件和重复性结构的示例性3D模型;
图2示出了包括用于根据基于重复性结构发现的压缩算法,A3DMC,来确定比特流的结构的步骤的示例性处理;
图3示出了与本原理有关的示例性编码器;而
图4示出了与本原理有关的示例性解码器。
具体实施方式
在重复性结构发现期间仅检查几何结构。一个实例可以或与对应模式共享属性数据或具有其自身的属性数据。如果实例不与模式共享属性,则该实例的属性将被分别压缩。
实例信息可以被划分为四个部分,反射部分、旋转部分、平移(translation)部分以及可能的缩放部分。该四个部分被分别压缩。
全部模式被压缩在一起以便于实现更多的比特率节约。在解码期间,模式需要在恢复实例之前彼此分离。
图3和4示出了适合于实现本原理的各个方面的示例性编码器和解码器。编码器和解码器的细节在申请人的共有PCT申请WO2010149492和PCT/CN2011/076991中提供,而那里的描述在此通过引用而显式地合并到本申请中。如本领域技术人员将明白的,CODEC可以用硬件、软件或固件以及这些方式的组合来实现,以便对在其中要求这样的3D渲染的各种环境提供灵活性。除其它之外,专用集成电路(ASIC)、可编程阵列逻辑电路、分立半导体电路以及可编程数字信号处理电路、计算机可读介质(易失性或非易失性)可以全部被用来实现本发明。这些均为本发明的可能实现方式的非限制示例,并且本领域技术人员将明白其他实施例也可以是可行的。
两个实例压缩方式
尽管我们希望比特流嵌入全部实例数据,但是我们还希望其高效并且解决其中有时比特流尺寸或解码效率或错误恢复最重要的若干应用。
因而,我们提出如何在比特流中放置(put)模式的一个实例的数据(即,其模式ID、其反射变换部分(F)、其平移变换部分(T)、其旋转变换部分(R)及其缩放变换部分(S))的两个选项,例如,该ID为模式压缩数据流中的模式的实际位置,1对应第一模式,2对应第二模式,…。它们均具有它们的优缺点。
选项(A)基本实例数据方式(ID、F、T、R、S、ID、F、T、R、S…):使用此方式,一个实例的模式ID、反射变换部分、平移变换部分、旋转变换部分和缩放变换部分在比特流中一起打包(pack)。
优点:
●抗误码。解码器可以在丢失一些实例的变换的情况下恢复。
●在线解码。这意味着实例可以在压缩比特流的实际读取期间逐一解码。不存在等待完成读取整个压缩比特流的需要。
●更高的编解码速度。
●编解码不需要缓冲。
缺点:
●相对更大的压缩3D模型尺寸。
选项(B)分组实例数据方式(ID、ID、F、F、T、T、R、R、S、S):使用此方式,信息被基于信息类型分组到一起,即,一个实例的模式ID、反射变换部分、平移变换部分、旋转变换部分和缩放变换部分在比特流中一起打包。
优点:
●相对较小的压缩3D模型尺寸。
缺点:
●解码器不再抗误码。
●离线解码。这意味着解码器仅可以在读取整个压缩比特流之后开始解码。
●较低的编解码速度。
●缓冲是必要的。
当前的比特流定义将包括以上两个选项两者。然后,用户可以选择更适于其应用的一个。特定实现可以选择仅实现两个实例数据方式中的一个。对于这种情况,比特流定义将相应地改变。细节请参考“比特流语法和语义”章节。
因为实例可以具有更大的解码误差,该误差定义为原始组件和从模式以及实例变换中恢复的组件之间的距离,因此比特流的一些数据字段定义为表示压缩实例解码误差以确保解码的3D模型质量。是否压缩实例的解码误差例如基于质量要求。
实例变换的压缩
如下所述,实例变换可以划分为四个部分,反射部分(Refle)、旋转部分(Rotat)、平移部分(Transl)、和可能的缩放部分。
如在W.Jiang、K.Cai和T.Luo的名为“Method and Apparatus for ReflectiveSymmetry Based3D Model Compression”的PCT申请(以申请号提交)中所述,反射部分可以用1位标志表示。
旋转部分是3×3矩阵。旋转部分的3列(或行)是单位正交向量。为了解决有时解码效率或解码误差最重要的若干应用,我们提出如何压缩旋转部分的两个选项。两者均具有其自身的优缺点。
选项(A)笛卡尔方式。在笛卡尔坐标系中,旋转部分可以用(x0,y0,z0)和(x1,y1,z1)的2个正交轴表示,并且例如如W.Jiang、K.Cai和J.Tian的名为“Conditional Error Correction in Orientation AX's Encoding”的PCT申请(PCT/CN2011/077277)中所述地压缩。
优点:
●更高的编解码速度
缺点:
●相对较低精度的解码的3D模型。
选项(B)球面方式。使用此方式,旋转部分可以例如通过“ComputingEuler Angles from a Rotation Matrix”(Greg Slaubaugh,1999,报告)而
转换为欧拉角(alpha,beta,gamma),并例如如在W.Jiang、K.Cai和J.Tian的名为“Orientation Encoding”的PCT申请(PCT/CN2011/077271)中所描述地被压缩。
优点:
●更高精度的解码的3D模型
缺点:
●相对较慢的编解码速度。
当前比特流定义将包括以上两个选项两者。然后,用户可以选择更适于其应用的一个。特定实现可以选择仅实现两个实例旋转压缩方式中的一个。对于这种情况,比特流定义将相应地改变。细节请参考“比特流语法和语义”章节。
平移部分用向量(x,y,z)表示(伪平移向量)。虽然使用分组实例变换模式,但是全部伪实例平移向量通过基于八叉树(OT)分解的压缩算法压缩,例如,通过使用在W.Jiang、K.Cai和Z.Chen的名为“A Model AdaptiveEntropy Coding for Octree Compression”的PCT申请(PCT/CN2011/077279)中所描述的方法,其在八叉树数据结构中迭代地细分全部伪实例平移向量的边界框。我们用8位长的占用码表示每一个八叉树节点细分,而该占用码使用1位标志来表示子节点是否为非空。描述八叉树的占用码序列通过广度首次遍历八叉树而生成。我们通过将其划分为若干间隔并用不同的概率模型压缩它们而将占用码序列压缩。因为实例可以具有我们称为复制平移向量的极度接近的伪平移向量,所以比特流的一些数据字段定义为表示该复制平移向量。
缩放部分由实例的统一缩放因子S表示并且通过对浮点数的无损压缩算法而压缩,例如,通过M.Isenburg等人2005年7月在《Computer-AidedDesign》第8期37卷第869-877页中的“Lossless Compression of PredictedFloating-Point Geometry”。
实例属性的压缩
在特定应用中,除几何结构之外,3D模型通常还具有各种属性,诸如法线、色彩和纹理坐标之类。要求实例具有相同的模式属性将限制可以发现的重复性结构的数量并降低A3DMC的压缩率。因此,我们仅在重复性结构发现期间检查几何结构且实例可以具有与对应模式的属性不同的属性。
当使用基本实例数据方式时,定义一个数据字段以表示如何从比特流得到实例的属性。
情况A:实例共享模式属性数据并且不需要数据字段来表示其属性。
情况B:实例具有其自身属性并需要单独的数据字段来在比特流中表示其属性。
一个实例的属性数据(P)跟随该实例的其他数据,即,(ID、F、T、R、S、P、ID、F、T、R、S、P…)当使用分组实例数据方式时,全部实例应当或共享模式属性数据或具有它们自身的属性数据。比特流的实例数据部分就像(ID、ID、F、F、T、T、R、R、S、S、P、P)。我们使用相同的ISO/IEC14496-16的3D模型属性数据字段定义。
压缩比特流的通常结构
图2中示出了我们的基于重复性结构发现的压缩算法(A3DMC)的压缩比特流的通常结构的分解。比特流以首部缓存(A3DMC_stream_header)开始,其包含用于解码压缩流的必需信息:在原始模型中是否存在至少一个重复性结构的信息、用于压缩几何结构的3D模型压缩方法、全部3D对象的连接性和属性(如果必要的话模式和其他部分)、在该比特流中是否使用“分组实例变换方式”或“基本实例变换方式”的信息、是否存在不重复的原始模型的一些部分(我们称为独特部分)的信息、实例解码误差是否将被补偿的信息、实例可能具有的属性类型的信息等。
如果在原始模型中不存在重复性结构(repeat_struc_bit!=1),则比特流的左部分是使用A3DMC_stream_header中指示的3D模型压缩方法的压缩输入3d模型。否则,比特流中的下一部分是全部模式的压缩结果。取决于在此比特流中选择何种实例变换打包方式,compr_insta_grouped_data或compr_insta_elementary_data是比特流中的下一部分。如果在原始3D模型中存在独特部分,则附加compr_uni_part_data。否则,比特流结束。
比特流语法和语义
语法功能、分类和描述符的说明
除了已经在SC3DMC说明中使用的语法功能、分类和描述符之外,我们还将使用以下两个:
f(n):对每一个符元使用n位(从左到右书写)的固定长度编码位字符串。n取决于每一个符元的码长
ev(v):熵编码的(例如,算术编码)的语法要素,包括可能的配置符元。
比特流语法和语义
A3DMC_stream类
语法
语义
A3DMC_stream_header:包含首部缓存。
A3DMC_stream_data:包含数据缓存。
A3DMC_stream_header类
语法
语义
repeat_struc_bit:1位无符号整数,指示在3D模型中是否存在多于特定量的重复性结构。0表示没有重复性结构而1表示重复性结构。
3d_model_compr_mode:2位无符号整数,指示用来压缩模式、独特部分和如果不包括重复性结构时的原始3D模型的3d模型压缩方法。
QP:5位无符号整数,指示质量参数。QP的最小值为3,最大值为31。
pattern_num:8位无符号整数,在小于255时指示全部模式的数量。pattern_num的最小值为1。
pattern_num_2:16位无符号整数,在不小于255时指示全部模式的数量。在此情况下,总模式数量为(pattern_num_2+255)
instance_num:16位无符号整数,在小于65535时指示全部实例的数量。instance_num的最小值为1。
instance_num_2:32位无符号整数,在不小于65535时指示全部实例的数量。在此情况下,总实例数量为(instance_num_2+65535)
insta_trans_elem_bit:1位无符号整数,指示在此比特流中是否使用“分组实例变换方式”或“基本实例变换方式”。0表示“分组实例变换方式”而1表示“基本实例变换方式”。
insta_rotat_mode_bit:1位无符号整数,指示实例旋转变换的编码方式。0表示球面方式而1表示笛卡尔方式。
use_scaling_bit:1位无符号整数,指示实例变换是否包括缩放因子。1表示缩放因子包括在实例变换中而0表示没有。当大多数实例的缩放因子等于1.0时,实例变换不包括缩放因子。然后,全部实例必须具有与对应模式相同的尺寸。
uni_part_bit:1位无符号整数,指示在原始3d模型中是否存在独特部分。0意味着不存在独特部分而1意味着存在独特部分。如果uni_part_bit等于0,则还意味着在模式实例压缩数据之后紧接比特流的尾部。
error_compensate_enable_bit:1位无符号整数,指示在比特流中是否存在一些实例的压缩解码误差的数据字段。0意味着在比特流中不存在实例的压缩解码误差的数据字段而1意味着在比特流中存在一些实例的压缩解码误差的数据字段。
property_enable_bits:4位标志,其中,每一位表示是否编码了对应的属性(例如,法线、颜色、纹理坐标)。0意味着对应属性未被编码而1意味着被编码了。位和属性之间的关系如下表所示。
A3MDC_stream_data类
语法
语义
compr_repeat_struc_data:包含压缩3d模型,其包括重复性结构。
compr_3d_model_data:包含压缩3d模型,其不具有重复性结构并通过由3d_model_compr_mode指示的压缩方法编码。
compr_repeat_struc_data类
语法
语义
compr_pattern_data:包含全部模式的压缩几何结构、连接性和属性,其通过由3d_model_compr_mode指示的压缩方法编码。
compr_insta_elementary_data:包含使用“基本实例变换方式”的全部模式实例的压缩实例变换数据。其以字节对准的方式压缩。
compr_insta_grouped_data:包含使用“分组实例变换方式”的全部模式实例的压缩实例变换数据。其以字节对准的方式压缩。
compr_uni_part_data:包含压缩的独特部分数据,其通过由3d_model_compr_mode指示的压缩方法编码。
compr_insta_elementary_data类
语法
语义
insta_transl_bbox:包含平移向量数据的最小值和最大值,以使得可以在压缩实例平移信息时使用量化。
compr_elem_insta_patternID:包含第i个实例的压缩模式ID。
elem_insta_share_pattern_property_bit:1位无符号整数,指示第i个实例是否与对应模式共享属性。0意味着第i个实例不与对应模式共享属性并且其属性需要被压缩。1意味着第i个实例与对应模式共享属性。
elem_insta_reflection_flag:1位无符号整数,指示第i个实例的变换是否包括反射。0意味着第i个实例的变换不包括反射而1意味着第i个实例的变换包括反射。
compr_elem_insta_transl:包含第i个实例的的压缩平移向量。
compr_elem_insta_rotat_cartesian:包含笛卡尔方式的第i个实例的压缩旋转变换。
compr_elem_insta_rotat_spherical:包含球面方式的第i个实例的压缩旋转变换。
compr_elem_insta_scaling:包含第i个实例的压缩缩放因子。
cmpr_elem_insta_normal_header:包含第i个实例的压缩法线的首部。详细定义参考ISO/IEC14496-165.2.1.3。
compr_elem_insta_normal_data:包含第i个实例的压缩法线。详细定义参考ISO/IEC14496-165.2.1.3。
cmpr_elem_insta_color_header:包含第i个实例的压缩颜色的首部。详细定义参考ISO/IEC14496-5.2.1.3。
compr_elem_insta_color_data:包含第i个实例的压缩颜色。详细定义参考ISO/IEC14496-165.2.1.3。
cmpr_elem_insta_texture_header:包含第i个实例的压缩纹理坐标的首部。详细定义参考ISO/IEC14496-165.2.1.3。
compr_elem_insta_texture_data:包含第i个实例的压缩纹理坐标。详细定义参考ISO/IEC14496-165.2.1.3。
elem_insta_error_compensate_flag:1位无符号整数,指示比特流的下一部分是否是第i个实例的压缩解码误差。0意味着比特流的下一部分不是第i个实例的压缩解码误差而1意味着比特流的下一部分是第i个实例的压缩解码误差
compr_elem_insta_error_compen_header:包含第i个实例的压缩解码误差的首部。
compr_elem_insta_error_compen_data:包含第i个实例的压缩解码误差。
bit_num_insta_transl():基于QP计算每一个伪实例平移向量的比特数量。
compr_elem_insta_rotat_cartesian类
语法
语义
在笛卡尔方式中第i个实例的旋转变换由2个正交轴(x0,y0,z0)和(x1,y1,z1)表示。
compr_elem_insta_rotat_x0:包含第i个实例的旋转的压缩x0。
compr_elem_insta_rotat_y0:包含第i个实例的旋转的压缩y0。
elem_insta_rotat_z0_sgn:1位无符号整数,指示用于使用x0和y0计算z0所需的z0的符号。0为“-”而1为“+”。
compr_elem_insta_rotat_z0_res:包含可能不精确的所计算的z0的压缩残差。
compr_elem_insta_rotat_w:包含第i个实例的旋转的压缩第三坐标w,其取决于x0和y0可以是x1,y1或z1。
elem_insta_rotat_sgn_v:1位无符号整数,指示第5个坐标v的符号,其取决于w可以是x1或y1,该符号为使用x0,y0,z0和w计算v所需。0为“-”而1为“+”。
compr_elem_insta_rotat_z1_res:包含可能不精确的所计算的z1的压缩残差。
need_compensate_z0():确定第i个实例的旋转的所计算的z0是否需要被补偿。如果第i个实例的旋转的所计算的z0需要被补偿则返回“真”而如果第i个实例的旋转的所计算的z0不需要被补偿则返回“假”
need_compensate_z1():确定第i个实例的旋转的所计算的z1是否需要被补偿。如果w不是z1且第i个实例的旋转的所计算的z1需要被补偿则返回“真”而如果w是z1且第i个实例的旋转的所计算的z1不需要被补偿则返回“假”
bit_num_rotat_cartesian():基于QP在笛卡尔坐标系中对每一个旋转值计算比特数。
bit_num_rotat_res_cartesian():基于QP在笛卡尔坐标系中对每一个旋转残差值计算比特数。
compr_elem_insta_rotat_spherical类
语法
语义
通过3个角(alpha,beta和gamma)表示球面方式中第i个实例的旋转
compr_elem_insta_rotat_alpha:包含第i个实例的旋转的压缩alpha。
compr_elem_insta_rotat_beta:包含第i个实例的旋转的压缩beta。
compr_elem_insta_rotat_gamma:包含第i个实例的旋转的压缩gamma。
bit_num_rotat_alpha():基于QP对每一个alpha值计算比特数
bit_num_rotat_beta():基于QP对每一个beta值计算比特数
bit_num_rotat_gamma():基于QP对每一个gamma值计算比特数
compr_insta_grouped_data类
语法
语义
compr_insta_patternlD_header:全部实例的压缩模式ID的16位首部。此数据字段在使用固定长度编解码器或熵编解码器时未使用,该固定长度编解码器或熵编解码器可以自动地对编码patternlD_data确定压缩比特流长度。
compr_insta_patternlD_data:包含全部实例的压缩模式ID。
insta_reflection_flag_data:包含全部实例的反射标志。以字节对准的方式压缩。
compr_insta_transl_header:全部实例的压缩平移向量的16位首部。此数据字段在使用固定长度编解码器或熵编解码器时未使用,该固定长度编解码器或熵编解码器可以自动地对编码transl_data确定压缩比特流长度。
compr_insta_transl_data:包含全部实例的压缩伪平移向量。参见4.9中的完整描述。
compr_insta_rotat_header:全部实例的压缩旋转变换部分的16位首部。此数据字段在使用固定长度编解码器或熵编解码器时未使用,该固定长度编解码器或熵编解码器可以自动地对编码rotat_data确定压缩比特流长度。
compr_insta_rotat_data:包含全部实例的压缩旋转变换部分。以字节对准的方式压缩。参见4.10中的完整描述。
compr_insta_scaling_header:全部实例的压缩缩放因子的16位首部。此数据字段在使用熵编解码器时未使用,该熵编解码器可以自动地对编码scaling_data确定压缩比特流长度。
compr_insta_scaling_data:包含全部实例的压缩缩放因子。
insta_share_pattern_property_bit:1位无符号整数,指示是否全部实例与模式共享属性。9意味着全部实例不与模式共享属性且它们的属性要被压缩。1意味着全部实例与模式共享属性。
compr_insta_normal_header:包含全部实例的压缩法线的首部。详细定义参考ISO/IEC14496-165.2.1.3。
compr_insta_normal_data:包含全部实例的压缩法线。详细定义参考ISO/IEC14496-165.2.1.3。
compr_insta_color_header:包含全部实例的压缩颜色的首部。详细定义参考ISO/IEC14496-165.2.1.3。
compr_insta_color_data:包含全部实例的压缩颜色。详细定义参考ISO/IEC14496-165.2.1.3。
compr_insta_texcoord_header:包含全部实例的压缩纹理坐标的首部。详细定义参考ISO/IEC14496-165.2.1.3。
compr_insta_texcoord_data:包含全部实例的压缩纹理坐标。详细定义参考ISO/IEC14496-165.2.1.3。
insta_error_compen_flag_data:包含全部实例的elem_insta_error_compenate_flag。
compr_elem_insta_error_compen_header:包含第i个实例的压缩解码误差的首部。
compr_elem_insta_error_compen_data:包含第i个实例的压缩解码误差。
compr_insta_transl_data类
语法
语义
num_node:16位无符号整数,指示八叉树节点的数量。
num_dupli_leaf:8位无符号整数,指示包含复制实例平移向量的八叉树叶子节点的数量,该八叉树叶子节点被称为复制叶子节点。
dupli_leaf_id:包含在八叉树的广度首次遍历序列中的第i个复制叶子节点的索引。
num_dupli_insta_transl:4位无符号整数,指示落入第i个复制八叉树叶子节点的复制实例平移向量的数量。
num_interval_bound:8位无符号整数,指示整个八叉树占用码序列的间隔边界的数量。
reserved_bits:包含出于字节对准目的的一些ISO保留比特。
interval_bound_id:包含第i个间隔边界的索引。
occup_p0_symbols:包含用字母表的通用集压缩的八叉树节点的占用码。
occup_p1_symbols:包含用字母表的子集压缩的八叉树节点的占用码。
compr_insta_rotat_data类
语法
实现可以选择仅实现两个实例数据打包方式的一个。对于这种情况,在A3DMC_stream_header中的insta_trans_elem_bit应当从比特流定义中移除。如果实现选择了基本实例数据方式,则compr_insta_grouped_data应当从比特流定义中移除。如果实现选择了分组实例数据方式,则compr_insta_elementary_data应当从比特流定义中移除。
实现可以选择仅实现两个实例旋转压缩方式的一个。对于这种情况,在A3DMC_stream_header中的insta_rotat_mode_bit应当从比特流定义中移除。如果实现选择了笛卡尔方式用于压缩实例旋转,则compr_elem_insta_rotat_spherical应当从比特流定义中移除。如果实现选择了球面方式,则compr_elem_insta_rotat_cartesian应当从比特流定义中移除。
实现可以选择对于全部实例的压缩模式ID、平移变换部分、旋转变换部分和缩放因子在比特流中不包括首部。对于这种情况,应当从比特流定义中移除compr_insta_patternID_header、compr_insta_transl_header、compr_insta_rotat_header和compr_insta_scaling_header。
因此,根据本原理,使用重复性结构发现来表示3D模型,并且生成并编码根据上述语法的比特流以处理诸如法线、颜色和纹理坐标之类的3D模型属性,并且压缩其变换包括反射变换的实例。访问模型数据,确定模式ID和变换信息以及属性信息。根据上述格式之一,模式ID、变换信息和属性信息被分组在一起,以生成表示3D模型的比特流。
除其他之外,本原理提供以下特征和优势:
1.我们的基于重复性结构发现的压缩算法的压缩比特流语法和语义;
2.使得基本实例或分组实例数据选项均在比特流中为可能的解决方案;
3.解码器,适配于从对应模式属性数据或从对应数据字段之一中获得实例属性数据;
4.编码器,适配于根据质量要求压缩实例的解码误差;
5.解码器,适配于通过向从解码模式和解码实例变换恢复的组件增加解压缩的编码误差来获得最终实例组件;
6.编码器,适配于将全部模式压缩在一起;
7.解码器,适配于在恢复实例之前分离模式;
8.编码器,适配于分别压缩实例变换的四个部分,即,反射、旋转、平移和可能的缩放部分;
9.将一个实例变换的旋转部分压缩为2个正交轴或欧拉角;以及
解码器,适配于从对应的解码的反射、平移、旋转和可能的缩放部分恢复实例的变换矩阵,如图4所示。
这里描述的实现可以例如以方法或处理、设备、软件程序、数据流或信号来实现。即使仅在实现的单一形式的背景下讨论(例如,仅作为方法来讨论),讨论的特征的实现还可以以其他形式实现(例如,设备或程序)。设备可以例如以恰当的硬件、软件和固件来实现。方法可以例如在诸如例如处理器之类的设备中实现,该处理器通常指代处理装置,例如包括计算机、微处理器、集成电路或可编程逻辑器件。处理器还包括通信装置,诸如例如计算机、手机、便携式/个人数字助理(“PDA”)和促进在终端用户之间的信息通信的其他装置。
对本原理的“一个实施例”或“实施例”或“一个实现”或“实现”的引用及其其他变型意味着结合实施例描述的特定特征、结构、特性等被包括在本原理的至少一个实施例中。因此,措辞“在一个实施例中”或“在实施例中”或“在一个实现中”或“在实现中”的出现以及在贯穿说明书的各种地方出现的任何其他变型不必须全部指代相同的实施例。
另外,此申请或其权利要求可以指代“确定”各种信息片段。确定信息可以包括例如估计信息,计算信息,预测信息或从存储器取回信息中的一个或多个。
此外,此申请或其权利要求可以指代“访问”各种信息片段。访问信息可以包括例如接收信息,(例如,从存储器)取回信息,存储信息,处理信息,传送信息,移动信息,复制信息,擦除信息,计算信息,确定信息,预测信息或估计信息中的一个或多个。
另外,此申请或其权利要求可以指代“接收”各种信息片段。如同“访问”,接收意图为一个宽泛的术语。接收信息可以包括例如访问信息,或(例如,从存储器)取回信息中的一个或多个。此外,无论怎样,在例如诸如存储信息,处理信息,传送信息,移动信息,复制信息,擦除信息,计算信息,确定信息,预测信息或估计信息的操作期间内通常涉及“接收”。
对于本领域技术人员显然的是,实现可以产生多种格式化的信号来携带可能例如被存储或传送的信息。信息可以例如包括用于执行方法的指令或由所描述的实现之一产生的数据。例如,可以格式化信号以将用于写入或读取所述实施例的语法的规则作为数据携带,或将由所述实施例写入的实际语法值作为数据携带。这样的信号可以例如格式化为电磁波(例如,使用频谱的射频部分)或格式化为基带信号。格式化可以例如包括编码数据流和用编码的数据流调制载波。信号携带的信息可以例如是模拟或数字信息。如已知的,信号可以通过多种不同的有线或无线链接传送。信号可以存储在处理器可读的介质上。
机译: 如何生成基于重复结构发现的3D模型压缩和设备的比特流
机译: 基于重复结构发现的3D模型压缩生成比特流的方法和装置
机译: 基于重复结构发现的3D模型压缩生成比特流的方法和装置