一种三维网格序列的配准及压缩方法

文档序号:6542901阅读:260来源:国知局
一种三维网格序列的配准及压缩方法
【专利摘要】本发明公开一种三维网格序列的配准及压缩方法,其能够去除网格序列在帧间拓扑信息上的冗余性,大大地提高对网格序列的压缩效率,从而降低存储空间。这种三维网格序列的配准及压缩方法,包括步骤:(1)基于视频的帧间编码来配准一个三维网格序列;(2)用开源软件7-Zip无损压缩所有的I帧的顶点和面片数据;通过压缩相邻帧之间的顶点残差数据来压缩P帧和B帧的顶点数据,而P帧和B帧的面片数据将与I帧共享;(3)用开源软件7-Zip对步骤(b)的压缩文件进行解压,然后重建。
【专利说明】一种三维网格序列的配准及压缩方法
【技术领域】
[0001]本发明属于多媒体【技术领域】,具体地涉及一种三维网格序列的配准及压缩方法。【背景技术】
[0002]随着计算机图形学技术的飞速发展,三维网格已被广泛地应用于计算机图形学的应用中。因此,为了更高效地存储和传输三维网格数据,对三维网格的表达和压缩便成为了一个非常重要的研究环节。
[0003]一个三维网格的数据通常可以由以下几个部分组成:顶点、边、面片以及一些属性信息如法向量、纹理坐标和纹理颜色等。最简单的三维网格往往只用记录顶点和面片数据。通常,顶点的坐标信息被称为三维网格的几何信息,顶点的连接信息也即面片数据被称为二维网格的拓扑彳目息。已有的二维网格压缩算法通常都是针对二维网格的几何/[目息和拓扑信息来进行压缩的,这些压缩算法往往用于压缩静态的单一网格,利用的是三维网格数据在几何或拓扑信息上的空间相关性。而对于动态的三维网格序列,如果我们仅仅用这些方法对序列中的每个网格单独压缩,那么存在于序列中各帧之间的时间相关性就会被浪费掉,这将使得对一个网格序列的压缩效率大大降低。
[0004]获取三维网格数据的方式通常可以划分为两种,一种是通过计算机程序人工生成三维网格模型;另一种是通过用一些如Cyberware三维扫描仪或多视点摄像机等专业感知设备捕获现实世界中的物体来获得三维网格数据。对于前一种获取方式,通常可以人工地控制三维网格的顶点连接性以使产生的三维网格序列具有时间一致性,即序列中的所有网格的顶点连接信息一致。而对于后一种获取方式,在同一个序列中的不同帧的原始网格数据的顶点连接信息通常是不同的。因此,在存储三维网格数据时,必须将序列中的所有三维网格的面片数据都存储下来。如果网格序列是一个三维动画,相邻帧的顶点连接性往往是十分相似的,这时在压缩网格序列数据的过程中这种在顶点连接信息上的时间冗余一定是可以通过某种方法去除的。
[0005]三维人脸配准是一种将不同三维人脸网格的顶点对齐的技术,即找到网格与网格之间的顶点对应关系。当将配准算法应用于一个三维人脸模型的序列时,由于找到了序列上所有网格之间的顶点对应关系,即所有网格在相同下标下的顶点都是对应的,所以序列中的所有网格也就获得了相同的顶点连接信息,即可以共享相同的面片数据。这样的结果恰恰能够满足去除之前提到的网格序列在顶点连接信息上的冗余数据的要求。
[0006]有人提出了一种基于薄板样条(thin plate spine, TPS)变换的非刚性三维人脸配准方法。本质上,TPS是一种径向基函数,它的基函数为:
[0007]Φ =r2logr
[0008]其中r是笛卡尔坐标系中两个点的欧拉距离。TPS变换的形式如下
[0009]f (P) =Pd+Kw
[0010]其中P是一个顶点集中顶点的齐次坐标矩阵;d和w分别是非仿射变换矩阵和仿射变换矩阵,K是关于TPS基函数的矩阵。该配准方法是先对参考三维网格进行TPS变换,然后再通过用K维二叉搜索树(KD-tree)搜索变换后的三维网格中的所有顶点在目标三维网格中的最邻近点来匹配参考网格和目标网格之间的对应顶点。这个配准方法可以在两个网格之间获得较好的配准效果。但是当配准一个人脸网格序列时,因为只从序列中选出一个网格作为参考网格,所以当目标网格距离该参考网格越来越远时,对目标网格的配准效果往往会越来越差。

【发明内容】

[0011]本发明的技术解决问题是:克服现有技术的不足,提供一种三维网格序列的配准及压缩方法,其能够去除网格序列在帧间拓扑信息上的冗余性,大大地提高对网格序列的压缩效率,从而降低存储空间。
[0012]本发明的技术解决方案是:这种三维网格序列的配准及压缩方法,包括以下步骤:
[0013](I)基于视频的帧间编码来配准一个三维网格序列;
[0014](2)用开源软件7-Zip无损压缩所有的I帧的顶点和面片数据;通过压缩相邻帧之间的顶点残差数据来压缩P帧和B帧的顶点数据,而P帧和B帧的面片数据将与I帧共
[0015](3)用开源软件7-Zip对步骤(b)的压缩文件进行解压,然后重建。
[0016]本发明将配准过程和视频编码技术中的帧间编码思想结合在一起,通过设定和视频的帧间编码中类似的帧间编码结构,用一种更复杂的方式来配准一个人脸网格序列,从而获得更好的配准效果;在配准完毕后,由于所有网格的顶点已被对齐,一方面相邻帧网格之间的各对应顶点的坐标残差会比较小,这时可以对顶点的残差数据进行时频变换和量化后再采用无损的文本压缩程序编码,另一方面所有网格都共享一个面片数据,所以可以只保存并编码一个面片数据;因此本发明能够去除网格序列在帧间拓扑信息上的冗余性,大大地提高对网格序列的压缩效率,从而降低存储空间。
【专利附图】

【附图说明】
[0017]图1示出了用两个参考帧网格共同配准目标帧网格的过程;
[0018]图2是五种GOF结构的示意图;
[0019]图3示出了对5种GOF结构的配准结果压缩的平均Mesh PSNR曲线;
[0020]图4示出了对5种GOF结构的配准结果压缩的压缩比曲线;
[0021]图5示出了本发明的三维人脸网格编码方法编码端实施例的流程图;
[0022]图6示出了本发明的三维网格人脸编码方法解码端实施例的流程图。
【具体实施方式】
[0023]这种三维网格序列的配准及压缩方法,包括以下步骤:
[0024](I)基于视频的帧间编码来配准一个三维网格序列;
[0025](2)用开源软件7-Zip无损压缩所有的I帧的顶点和面片数据;通过压缩相邻帧之间的顶点残差数据来压缩P帧和B帧的顶点数据,而P帧和B帧的面片数据将与I帧共[0026](3)用开源软件7-Zip对步骤(b)的压缩文件进行解压,然后重建。
[0027]本发明将配准过程和视频编码技术中的帧间编码思想结合在一起,通过设定和视频的帧间编码中类似的帧间编码结构,用一种更复杂的方式来配准一个人脸网格序列,从而获得更好的配准效果;在配准完毕后,由于所有网格的顶点已被对齐,一方面相邻帧网格之间的各对应顶点的坐标残差会比较小,这时可以对顶点的残差数据进行时频变换和量化后再采用无损的文本压缩程序编码,另一方面所有网格都共享一个面片数据,所以可以只保存并编码一个面片数据;因此本发明能够去除网格序列在帧间拓扑信息上的冗余性,大大地提高对网格序列的压缩效率,从而降低存储空间。
[0028]优选地,如图5所示,步骤(a)中包括以下分步骤:
[0029](a.1)设置一种帧组GOF结构和I帧周期;
[0030](a.2)根据此GOF结构分析整个三维网格序列,设置每一帧的帧类型和参考帧序号;
[0031](a.3)按照此设置对整个三维网格序列进行全局配准。
[0032]优选地,如图5所示,步骤(b)包括以下分步骤:
[0033](b.1)将三维网格序列中的总帧数、I帧周期和量化步长写入二进制码流文件头;
[0034](b.2)对三维网格序列按帧出现顺序进行逐帧编码:如果当前帧是I帧,将顶点数和面片数分别用2字节无符号整型保存,顶点数据每个坐标值用8字节双精度保存,面片数据每个顶点下标用2字节无符号整型保存,并一起写入二进制码流文件中;如果是P帧或B帧,对其与前一帧的重建结果的顶点坐标残差进行保留两位小数精度取整、一维Haar DffT变换和量化,将量化结果每个元素用2字节存储并写入到二进制文件中,再将过程反过来重建当前帧网格;
[0035](b.3)用开源软件7-Zip对二进制码流文件进行无损压缩成7z格式作为最终压缩结果。
[0036]优选地,如图6所示,步骤(C)包括以下分步骤:
[0037](c.1)用7-Zip对7z格式压缩文件解压,得到二进制码流文件;
[0038](c.2)读出码流文件中的头部信息,包括三维网格序列的总帧数、I帧周期和量化步长;
[0039](c.3)根据读出的头部信息对三维网格序列中每一帧进行解码重建:如果当前帧是I帧,先读出分别占用两个字节的顶点数和面片数,在根据顶点数和面片数直接读出固定字节数的内容作为此I帧的顶点和面片数据;如果当前帧是P帧或B帧,先按之前已读出的顶点数读出指定字节数的内容作为顶点残差数据,然后按照编码时的逆过程进行解码重建当前帧网格的顶点数据,而面片数据和之前的I帧面片数据一样。
[0040]以下更详细地说明本发明:
[0041]1.改进的三维人脸网格序列非刚性配准方法
[0042]如果我们将一个三维人脸网格序列当做一个三维视频,其中每一帧都是一个三维网格,那么和视频编码技术中类似,在配准过程中人脸网格序列可以被分为三种类型,即I中贞、P巾贞和B巾贞。并且如视频编码技术中的GOP(group of pictures) —样,三维网格序列也被划分成多个组,在下面的叙述中将称它们为GOF (group of frames,巾贞组)。
[0043]如我们所知道的,在视频编码标准中,GOP的结构可以有多种,并且可以在配置文件中设置,在一种GOP结构中,每一个P巾贞和B巾贞都有若干个参考巾贞。而在本发明的方案中,GOF的结构比视频编码标准中的GOP结构要简单一些,每个P帧或B帧网格至多拥有两个参考帧,并且没有其它的参数——GOF的作用仅仅在于设置各个帧在做配准时的参考帧。用两个参考帧F1和F2配准帧Fn的过程如下:
[0044]I)分别求解由两个参考帧到目标帧的TPS变换fi; i=l, 2并将变换应用于参考帧的所有顶点得到变换后的顶点集P/,i=l, 2 ;
[0045]2)计算两个变换顶点集的如下形式的所有线性组合:
[0046]P’ =a.P1, +b.P2'
[0047]其中a, b=0, 0.1,0.2,...1并且满足a+b=l。对于每个线性组合结果P;,j=l,2,...11,在目标帧Fn中搜索并得到最邻近顶点集P/’作为P/的对应顶点集,并计算P/和P/’各对应点的距离,然后挑出具有最小平均距离的P/’作为配准结果。图1为此过程的示意图。
[0048]需要注意的一个关键的问题是,在本发明的方案中,一个目标帧的所有参考帧都必须具有相同的顶点连接性,这意味着所有的I帧都必须是向后方向做配准的,而不是像在视频编码标准中的GOP那样有的I帧会向前预测。因此,我们将每个I帧都放到一个GOF的前面,而不是放到GOF之中。此外,该方案共设计并采用了 5种GOF结构,详细的介绍如下:
[0049]DIPPP...IPPP...(I),在这种GOF结构中,所有的GOF都仅包含P中贞,每个P帧都是由其之前的I帧配准。
[0050]2)IPPP...1PPP...(2),在这种GOF结构中,所有的GOF都仅有P帧,但是每个P帧都是由其前一帧来配准的。
[0051]3)ΙΡΡΡ...IPPP...(3),在这种GOF结构中,所有的GOF都仅有P帧,但是每个P帧都可能由其前一个P帧和之前的I帧共同作为参考帧来配准。
[0052]4) IBPBP...1BP...,在这种GOF结构中,每个BP序列构成一个GOF。P帧由其前面的I帧(如果是在这个I帧后面的第一个GOF中)或者前一个GOF中的P帧配准;B帧由其前面的I帧或P帧和相同GOF中的P帧共同作为参考帧来配准.[0053]5) IBBBPBBBP...1BBBP...,在这种 GOF 结构中,每个 BBBP 序列构成一个 GOF。P 帧的情况与第4种GOF结构一样,由其前面的I帧或P帧配准;三个B帧的配准顺序为P0C2,I然后3,每个B帧都是由其最近的两个已经配准过的I帧、P帧或者B帧作为参考帧来配准。
[0054]由于I帧不在任何GOF之中,而是被置于某一个GOF的前面,并且作为该GOF中的P帧或者B帧的参考帧,因此,I帧的出现间隔必须等于GOF的长度的整数倍加I。图2中是上述几种GOF结构类型的图示说明。
[0055]2.压缩配准后的人脸网格序列的方法
[0056]对一个人脸网格序列配准后,两个I帧之间的所有帧都具有相同的顶点连接性,即与前一个I帧具有相同的面片数据,这就意味着这些网格在同一个下标的顶点都是对应的,并且两个相邻的网格之间的顶点残差会很小。所以,本发明用开源软件7-Zip无损压缩所有的I帧的顶点和面片数据;通过压缩相邻帧之间的顶点残差数据来压缩P帧和B帧的顶点数据,而它们面片数据将与I帧共享。我们将序列中的所有帧以I帧作为间隔划分为若干个组,由配准过程可知每个组中的所有帧都具有相同的面片数据。对于每个组,首先将I帧的顶点数、面片数以及顶点和面片数据写入二进制码流文件,然后按照如下步骤编码P帧和B帧的顶点数据:
[0057]I)计算当前帧和其前一帧的重建结果之间的顶点坐标残差。注意第一帧的前一帧是I中贞。
[0058]2)按照指定的小数位精度将残差数据量化为整数。
[0059]3)对取整后的顶点残差数据的三个笛卡尔坐标分量分别做一维离散小波变换(一维 DWT)。
[0060]4)按指定的量化步长对一维DWT的结果再次进行量化。
[0061]5)将量化后的结果以及在解码时需要用到的如量化步长等信息保存到一个二进制码流文件。
[0062]6)按上述过程的逆过程进行解压重建。
[0063]由于P帧和B帧的编码结果是量化后的数据,此时二进制码流结果中会有大量的冗余数据,所以最后要对二进制码流文件再用开源软件7-Zip进行无损压缩成7z格式作为最终的压缩结果。
[0064]为了验证改进的配准方案和编码框架的有效性,我们在BU3D_FE三维人脸数据库上进行了实验。BU3D_FE中的原始人脸网格通过Cyberware激光扫描仪扫描真实人脸获得,每个网格拥有30000多个顶点和6000多个三角面片。我们将所有网格的顶点和面片数据都存储到OFF格式的网格文件中,每个网格文件的字节数在2500KB左右。我们分别使用之前提到的5中GOF结构以及10、15、20、25、30、40、50这7种量化步长测试本发明中的人脸配准和压缩方法。做小波变换时采用的小波是Haar小波。对于每种GOF结构,I帧的周期都被设为17,也就是每17帧后出现一个I帧。为了方便起见,我们挑出了人脸数据库中的某一套人脸表情模型序列,并拿其中的表情变化比较明显的20帧做实验,这意味着其中只有两个I帧需要存储面片数据。
[0065]为了评估配准和压缩方法的效果,我们采用一种针对三维网格的峰值信噪比(Peak Signal to Noise Ratio,PSNR)来度量重建网格的客观质量。这种用于三维网格的PSNR (下文称之为Mesh PSNR)的定义如下:
[0066]psnr=20.1g10 (peak/d)
[0067]其中peak为三维网格模型的包围盒对角线长度,d是原始网格与重构网格之间的Hausdorff距离,由MESH工具计算得出。
[0068]图3中显示了分别对5种GOF结构的配准结果在7个量化步长下的压缩解压结果的各帧平均Mesh PSNR曲线。从图2中我们可以看出使用用多于一个参考帧来配准P帧或B帧的GOF结构做配准的效果比使用只用一个参考帧来配准P帧的GOF结构做配准的效果要好。值得注意的是,随着量化步长的增加,虽然图3显示平均Mesh PSNR结果只有很小幅度的下降甚至有时上升,但是在图5中可以看出网格的真实重建质量却有明显的下降。
[0069]图4显示了分别对5种GOF结构的配准结果压缩的压缩比曲线。与图3 —起比较,我们可以看出5种GOF结构的Mesh PSNR结果和压缩比结果并不一致。图中显示第二种GOF结构的压缩结果的压缩比最大,但是其MeshPSNR结果却最低;而第一种GOF结构的结果却同时具有低压缩比和低MeshPSNR。
[0070]编码端实施例[0071]图5为本发明编码端实施例的结构示意图,具体包括:
[0072]1.按改进的配准方案对三维人脸网络序列进行全局配准
[0073]具体过程为:首先按照与视频编码标准中类似的形式设置一种改进的GOF结构(实验结果显示第5种效果最好,可以选择这种GOF结构)和I帧出现周期intra_period。具体的GOF结构的参数设置例子如表1。然后根据此GOF结构分析整个网格序列,设置每一帧的帧类型和参考帧序号。最后按照此设置对整个网格序列进行全局配准。
[0074]
【权利要求】
1.一种三维网格序列的配准及压缩方法,其特征在于:包括以下步骤: (a)基于视频的帧间编码来配准一个三维网格序列; (b)用开源软件7-Zip无损压缩所有的I帧的顶点和面片数据;通过压缩相邻帧之间的顶点残差数据来压缩P帧和B帧的顶点数据,而P帧和B帧的面片数据将与I帧共享; (c)用开源软件7-Zip对步骤(b)的压缩文件进行解压,然后重建。
2.根据权利要求1所述的方法,其特征在于:步骤(a)中包括以下分步骤: (a.1)设置一种帧组GOF结构和I帧周期; (a.2)根据此GOF结构分析整个三维网格序列,设置每一帧的帧类型和参考帧序号; (a.3)按照此设置对整个三维网格序列进行全局配准。
3.根据权利要求2所述的方法,其特征在于:步骤(b)包括以下分步骤: (b.1)将三维网格序列中的总帧数、I帧周期和量化步长写入二进制码流文件头; (b.2)对三维网格序列按帧出现顺序进行逐帧编码:如果当前帧是I帧,将顶点数和面片数分别用2字节无符号整型保存,顶点数据每个坐标值用8字节双精度保存,面片数据每个顶点下标用2字节无符号整型保存,并一起写入二进制码流文件中;如果是P帧或B帧,对其与前一帧的重建结果的顶点坐标残差进行保留两位小数精度取整、一维Haar DWT变换和量化,将量化结果每个元素用2字节存储并写入到二进制文件中,再将过程反过来重建当前帧网格; (b.3)用开源软件7-Zip对二进制码流文件进行无损压缩成7z格式作为最终压缩结果O
4.根据权利要求3所述的方法,其特征在于:步骤(c)包括以下分步骤: (c.1)用7-Zip对7z格式压缩文件解压,得到二进制码流文件; (c.2)读出码流文件中的头部信息,包括三维网格序列的总帧数、I帧周期和量化步长; (c.3)根据读出的头部信息对三维网格序列中每一帧进行解码重建:如果当前帧是I帧,先读出分别占用两个字节的顶点数和面片数,在根据顶点数和面片数直接读出固定字节数的内容作为此I帧的顶点和面片数据;如果当前帧是P帧或B帧,先按之前已读出的顶点数读出指定字节数的内容作为顶点残差数据,然后按照编码时的逆过程进行解码重建当前帧网格的顶点数据,而面片数据和之前的I帧面片数据一样。
【文档编号】G06T9/00GK103927746SQ201410133394
【公开日】2014年7月16日 申请日期:2014年4月3日 优先权日:2014年4月3日
【发明者】施云惠, 王一山, 胡永利, 丁文鹏 申请人:北京工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1