会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 静态图像压缩标准 / 一种视频序列混合编解码的方法和系统

一种视频序列混合编解码的方法和系统

申请号 CN200910088805.5 申请日 2009-07-16 公开(公告)号 CN101610411B 公开(公告)日 2010-12-08
申请人 中国科学技术大学; 发明人 郭立; 袁红星; 郁理;
摘要 本发明视频序列混合编解码的方法,针对多角度拍摄的静态场景视频序列,将输入视频通过图像分割划分成视频对象和背景两个部分。通过基于图像建模技术从输入视频中重构出摄像机参数、对象的三维线框模型和纹理图像,并提取参数进行压缩实现视频对象的压缩编码,而背景则采用现有的标准进行压缩编码。本发明还提供了视频序列混合编解码的系统。本发明视频序列混合编解码的方法和系统的优点是:除了在低码率下编码效率优于H.264外,由于其基于图像建模技术能夠得到完整线框模型,所以还能对整个场景视频序列进行基于内容的混合编解码,并在解码端生成在任意视角下的虚拟图像,可广泛应用于文物保护、商品虚拟展示和浸入式互连体验等领域。
权利要求

1.一种视频序列混合编解码的方法,其特征在于:该方法执行如下步骤:一、对视频序列进行混合编码的步骤

1)视频图像分割的步骤,采用视频图像分割技术将输入视频图像划分为视频对象和背景两个部分,对视频对象部分执行步骤2),对背景部分执行步骤4);

2)提取视频对象参数的步骤,采用基于图像建模的技术重构视频对象的三维参数并执行下一步骤;

3)采用参数编码技术对视频对象的三维参数进行压缩并执行步骤5);

4)采用现有的视频编码标准进行压缩并执行步骤5);

5)输出压缩码流;

二、对视频序列混合编码的压缩码流进行解码的步骤

a)从压缩码流中分别解压出视频对象的三维参数并执行下一步骤;

b)从压缩码流中分别解压出视频对象的背景并执行下一步骤;

c)将视频对象和背景进行融合,实现原始视频的重构。

2.根据权利要求1所述的方法,其特征在于:其中在所述提取视频对象参数的步骤2)中,执行如下步骤:

21)由输入的视频对象中提取摄像机的参数,建立视频对象的三维位置与图像平面上二维位置间的对应关系;

22)采用基于图像重构的方法,由视频对象中重构出三维形状的线框模型;

23)根据三维线框模型的可见性,为每个三角面赋予最佳的颜色信息,并拼成一个纹理图像,计算这些三角面的顶点在纹理图像上的位置,建立三角面顶点与纹理图像间的~映射关系。

3.根据权利要求2所述的方法,其特征在于:其中在所述提取摄像机的参数的步骤21)中,执行如下步骤:

211)从输入视频对象中检测不同角度下的SIFT特征点,并将这些特征点进行匹配;

212)根据RANSAC算法,计算出图像间的基础矩阵,得到摄像机间的相对运动,即得到摄像机相对世界坐标系的旋转量R和平移量t;

213)采用光束法平差对上述坐标系的旋转量R和平移量t进行优化。

4.根据权利要求2或3所述的方法,其特征在于:其中在所述步骤22)中,执行如下步 骤:

221)采用立体匹配的方法,在视频对象表面上或附近处找到一个三维空间点,以该点为中心构造体素,作为种子;

222)以种子体素与视频对象表面相交点所在平面为面构造新的体素,并以新体素作为种子,继续得到与视频对象表面相交的点;

223)重复上述过程,得到所有与视频对象表面相交的体素;

224)采用步进立方体算法,将包围视频对象表面的体素转化为线框模型;

225)经三角面优化输出三维线框模型。

5.根据权利要求4所述的方法,其特征在于:在其中所述步骤23)中,执行如下步骤:

231)采用马尔可夫随机场模型,建立线框模型顶点与所有拍摄视点间的对应关系;

232)将上述模型每个三角面分别映射到二维空间中的等腰直角三角形上;

233)将这些等腰直角三角形拼成四边形,图中灰色区域表示在拼接过程中浪费的空间;

234)对拼接之后的三角形进行颜色填充,形成最终的纹理图像。

6.根据权利要求5所述的方法,其特征在于:其中在所述解压视频对象三维参数的步骤a)中,执行如下步骤:a1)从压缩码流中恢复摄像机参数、三维线框模型和纹理图像;

a2)将纹理图像映射到线框模型上,完成对对象三维形状和颜色的描述;

a3)根据摄像机参数将纹理映射后的线框模型分别投影到原始拍摄视点下,恢复视频对象。

7.一种视频序列混合编解码的系统,其特征在于:包括视频对象编码器(100)和视频对象解码器(200),其中,视频对象编码器(100)包括:对象分割模块(101),用于从视频序列中分割视频对象;

参数提取模块(102):用于从视频对象中重构出摄像机参数、三维线框模型和纹理,以便表示视频序列中待编码的对象;

参数编码模块(103):用于对提取出的参数进行压缩编码,形成压缩码流以便于传输;

背景编码模块(104):用于以现有的H.264标准进行编码压缩;

对象分割模块(101)、参数提取模块(102)和参数编码模块(103)依次相连,对象分割模块(101)和背景编码模块(104)相连,输入的视频序列接至对象分割模块(101),参数编码模块(103)和背景编码模块(104)共同输出编码的码流; 视频对象解码器(200)包括参数解码模块(201)和背景解码模块(202),输入码流经参数解码模块(201)和背景解码模块(202)分别输出的解压后的视频序列。

8.根据权利要求7所述的系统,其特征在于:其中所述参数提取模块(102)包括:摄像机参数提取模块(121),用于摄像机参数提取:根据摄像机的成像模型,通过多目立体匹配的方法提取摄像机从三维空间到二维图像平面上的投影矩阵;

三维线框模型重构模块(122),用于采用体素生长的方法重构出对象三维形状的线框模型;

纹理图像构造模块(123),用于恢复对象的颜色信息,形成最终的纹理图像;

参数编码模块(103)包括:

摄像机参数编码模块(131),用于采用无损熵编码方法压缩提取出摄像机参数;

MPEG三维网格编码模块(132),用于采用MPEG4中的3DMC工具压缩重构出的三维线框模型;

纹理图像编码模块(133),用于采用JPEG编码方法压缩提取出纹理图像;

其中,摄像机参数提取模块(121)与摄像机参数编码模块(131)相连,三维线框模型重构模块(122)与MPEG三维网格编码模块(132)相连,纹理图像构造模块(123)与和纹理图像编码模块(133)相连;视频序列输入摄像机参数提取模块(121)、三维线框模型重构模块(122)和纹理图像构造模块(123),摄像机参数编码模块(131)、MPEG三维网格编码模块(132)和纹理图像编码模块(133)经编码压缩模块(105)输出码流。

9.根据权利要求7或8所述的系统,其特征在于:其中所述参数解码模块(201)包括摄像机参数解码模块(2011)、网格解码模块(2012)、纹理图像解码模块(2013)和纹理映射模块(2014),其中,网格解码模块(2012)、纹理图像解码模块(2013)与纹理映射模块(2014)分别相连,码流经编码解压模块(2001)输入至摄像机参数解码模块(2011)和网格解码模块(2012)、纹理图像解码模块(2013),摄像机参数解码模块(2011)和纹理映射模块(2014)经3D空间到2D空间投影模块(2015)输出视频对象。

说明书全文

一种视频序列混合编解码的方法和系统

技术领域

[0001] 本发明涉及视频压缩技术领域,特别涉及一种视频序列混合编解码的方法和系统。

背景技术

[0002] 目前,尽管视频在网络和无线设备上已经得到普及,低比特率的视频编码方法仍然是值得探讨的技术问题。
[0003] 国际标准化组织(ISO)和国际技术联合会(ITU-T)从上世纪八十年代末起制定了一系列的针对不同应用场合、不同传输码率、不同图像格式和不同图像质量要求的国际标准。H.264这个标准已于2003年3月份正式被ITU-T通过并在国际上正式颁布,与H.263或MPEG4相比,在同样质量下,其码率能降低一半左右,从而在国际上受到了广泛地重视和欢迎。
[0004] H.264和以前的标准(如H.261、H.263、MPEG-1、MPEG-4)中的编码器功能块的组成并没有什么区别,都是建立在香农信息论基础上的,其中用到的方法如预测编码,变换编码或者矢量量化等都是考虑到信号的随机特性来进行压缩的,其压缩码率受到率失真理论的限制,在一定图像质量下,码率不可能很低。这些现有的方法是以块(block)为基本单位处理压缩图像的,在低码率场合下不可避免的要产生方块效应。于是,相继又涌现出了一些低码率编码的方法,如模型基编码(model-based coding)、基于语义的编码等。其中模型基编码是基于内容编码技术的一个分支。
[0005] 当前的视频编码标准都是基于波形的编码,H.264视频编码标准几乎达到了基于波形编码方法效率的极限。这种传统的视频编码方法是利用基于平移的运动块信源模型和颜色参数来描述物体的。然而,这种信源模型并不符合物体的实际行为。基于内容的编码方法认识到了这一问题。该方法企图把视频帧分成对应于不同物体的区域,并分别编码这些物体。对于每个物体,除了运动和纹理信息外还必须传输形状信息。对于某些特定内容的视频,基于内容的编码方法能够达到非常高的编码效率,所需的比特数比基于波形的编码方法所需的比特数少得多。特别是在视频序列中的物体种类已知的情况下,可采用预先定义好的三维线框模型对物体进行编码。由于能够自适应于物体的形状,使用预先定义的线框模型,就可以显著增加编码效率。这种编码技术又称为模型基编码,在视频电话会议的人脸编码中取得了极大的成功,MPEG4为此专门设计了人脸的三维模型。
[0006] 模型基编码是一种综合图像分析和计算机图形学的高效的压缩编码方法。模型基方法考虑物体的3D特性来描述图像。其编码方法有3D模型和2D模型,3D模型需要建立对象的3D参数;2D模型则是一种通用的方法,它无需知道3D参数,常使用形变三角形来分割图像并基于运动模型用仿射变换来压缩图像。2D模型中还包括基于区域分割及运动补偿的编码方法。3D模型法需要物体的三维参数,从图像中获得这些参数非常困难,所以就被限定在对特定的图像类进行编码。模型基编码和传统的编码方式有本质的不同。它不是把图像信号作为一个统计模型来考虑,而是作为一个结构模型,利用结构化的方式来描述图像组成,因此能使恢复的图像维持较高的视觉质量,有效地克服了传统编码方式在低码率下产生严重方块效应等问题,是一种在低码率条件下高质量压缩方法。
[0007] MPEG-4针对视频会议、可视电话等低码率应用场合,引入了人脸模型,利用模型基编码技术实现低码率的压缩。MPEG-4事先建立好人脸的三维模型和一些表情和动作参数,编码时只是传输人脸的表情和动作;解码端根据这些参数对人脸的模型进行变形。MPEG-4中人脸模型基编解码器结构如图14所示。
[0008] MPEG-4这种编码模型在视频电话会议中取得了极大的成功,然而这种方法需要预知视频内容,也就是说在编码时已知视频包含了人脸;另外该方法要事先建立好三维模型,即人脸的模型。
[0009] 总之,建立在香农信息论基础上的H.264视频编码标准压缩码率受到率失真理论的限制,在一定图像质量下,码率不可能很低;而MPEG-4中的模型基编码方案虽然可以满足低码率的要求,但是需要预知视频的内容,事先建立好对象的模型。对于整个大场景,尤其上从多个角度拍摄得到的未知内容静态场景视频序列,基于图像建模技术通常不能得到完整线框模型。也就是说,基于内容的编码难以对整个场景进行建模还是现有技术的一个难题,探索和解决低比特率视频编码的新方法是目前面临的重要课题。

发明内容

[0010] 本发明的目的,是解决现有技术存在的上述问题,提供一种可以对整个场景的视频序列进行基于内容的混合编解码的方法和系统。
[0011] 为达到上述目的,本发明提供了一种视频序列混合编解码的方法,该方法执行如下步骤:
[0012] 一、对视频序列进行混合编码的步骤
[0013] 1)视频图像分割的步骤,采用视频图像分割技术将输入视频图像划分为视频对象和背景两个部分,对视频对象部分执行步骤2),对背景部分执行步骤4);
[0014] 2)提取视频对象参数的步骤,采用基于图像建模的技术重构视频对象的三维参数并执行下一步骤;
[0015] 3)采用参数编码技术对视频对象的三维参数进行压缩并执行步骤5);
[0016] 4)采用现有的视频编码标准进行压缩并执行步骤5);
[0017] 5)输出压缩码流。
[0018] 二、对视频序列混合编码的压缩码流进行解码的步骤
[0019] a)从压缩码流中分别解压出视频对象的三维参数并执行下一步骤;
[0020] b)从压缩码流中分别解压出视频对象的背景并执行下一步骤;
[0021] c)将视频对象和背景进行融合,实现原始视频的重构。
[0022] 本发明视频序列混合编解码的方法,其中在所述提取视频对象参数的步骤2)中,执行如下步骤:
[0023] 21)由输入的视频对象中提取摄像机的参数,建立视频对象的三维位置与图像平面上二维位置间的对应关系;
[0024] 22)采用基于图像重构的方法,由视频对象中重构出三维形状的线框模型;
[0025] 23)根据三维线框模型的可见性,为每个三角面赋予最佳的颜色信息,并拼成一个纹理图像,计算这些三角面的顶点在纹理图像上的位置,建立三角面顶点与纹理图像间的一一映射关系。
[0026] 本发明视频序列混合编解码的方法,其中在所述提取摄像机的参数的步骤21)中,执行如下步骤:
[0027] 211)从输入视频对象中检测不同角度下的SIFT特征点,并将这些特征点进行匹配;
[0028] 212)根据RANSAC算法,计算出图像间的基础矩阵,得到摄像机间的相对运动,即得到摄像机相对世界坐标系的旋转量R和平移量t;
[0029] 213)采用光束法平差对上述坐标系的旋转量R和平移量t进行优化。
[0030] 本发明视频序列混合编解码的方法,其中在所述步骤22)中,执行如下步骤:
[0031] 221)采用立体匹配的方法,在视频对象表面上或附近处找到一个三维空间点,以该点为中心构造体素,作为种子;
[0032] 222)以种子体素与视频对象表面相交点所在平面为面构造新的体素,并以新体素作为种子,继续得到与视频对象表面相交的点;
[0033] 223)重复上述过程,得到所有与视频对象表面相交的体素;
[0034] 224)采用步进立方体算法,将包围视频对象表面的体素转化为线框模型;
[0035] 225)经三角面优化输出三维线框模型。
[0036] 本发明视频序列混合编解码的方法,在其中所述步骤23)中,执行如下步骤:
[0037] 231)采用马尔可夫随机场模型,建立线框模型顶点与所有拍摄视点间的对应关系;
[0038] 232)将上述模型每个三角面分别映射到二维空间中的等腰直角三角形上;
[0039] 233)将这些等腰直角三角形拼成四边形,图中灰色区域表示在拼接过程中浪费的空间;
[0040] 234)对拼接之后的三角形进行颜色填充,形成最终的纹理图像。
[0041] 本发明视频序列混合编解码的方法,其中在所述解压视频对象三维参数的步骤a)中,执行如下步骤:
[0042] a1)从压缩码流中恢复摄像机参数、三维线框模型和纹理图像;
[0043] a2)将纹理图像映射到线框模型上,完成对对象三维形状和颜色的描述;
[0044] a3)根据摄像机参数将纹理映射后的线框模型分别投影到原始拍摄视点下,恢复视频对象。
[0045] 为达到上述目的,本发明提供了一种视频序列混合编解码的系统,包括视频对象编码器和视频对象解码器,其中,视频对象编码器包括:
[0046] 对象分割模块,用于从视频序列中分割视频对象;
[0047] 参数提取模块:用于从视频对象中重构出摄像机参数、三维线框模型和纹理,以便表示视频序列中待编码的对象;
[0048] 参数编码模块:用于对提取出的参数进行压缩编码,形成压缩码流以便于传输;和
[0049] 背景编码模块:用于以现有的H.264标准进行编码压缩;
[0050] 对象分割模块、参数提取模块和参数编码模块依次相连,对象分割模块和背景编码模块相连,输入的视频序列接至对象分割模块,参数编码模块和背景编码模块共同输出编码的码流;
[0051] 视频对象解码器包括参数解码模块和背景解码模块,输入码流经参数解码模块和背景解码模块分别输出的解压后的视频序列。
[0052] 本发明视频序列混合编解码的系统,其中所述参数提取模块包括:
[0053] 摄像机参数提取模块,用于摄像机参数提取:根据摄像机的成像模型,通过多目立体匹配的方法提取摄像机从三维空间到二维图像平面上的投影矩阵;
[0054] 三维线框模型重构模块,用于采用体素生长的方法重构出对象三维形状的线框模型;
[0055] 纹理图像构造模块,用于恢复对象的颜色信息,形成最终的纹理图像;
[0056] 参数编码模块包括:
[0057] 摄像机参数编码模块,用于采用无损熵编码方法压缩提取出摄像机参数;
[0058] MPEG三维网格编码模块,用于采用MPEG4中的3DMC工具压缩重构出的三维线框模型;
[0059] 纹理图像编码模块,用于采用JPEG编码方法压缩提取出纹理图像;
[0060] 其中,摄像机参数提取模块与摄像机参数编码模块相连,三维线框模型重构模块与MPEG三维网格编码模块相连,纹理图像构造模块与和纹理图像编码模块相连。视频序列输入摄像机参数提取模块、三维线框模型重构模块和纹理图像构造模块,摄像机参数编码模块、MPEG三维网格编码模块和纹理图像编码模块经编码压缩模块输出码流。
[0061] 本发明视频序列混合编解码的系统,其中所述参数解码模块包括摄像机参数解码模块、网格解码模块、纹理图像解码模块和纹理映射模块,其中,网格解码模块、纹理图像解码模块与纹理映射模块分别相连,码流经编码解压模块输入至摄像机参数解码模块和网格解码模块、纹理图像解码模块,摄像机参数解码模块和纹理映射模块经3D空间到2D空间投影模块输出视频对象。
[0062] 本发明视频序列混合编解码的方法和系统的优点在于:由于本发明对于未知内容的视频采用模型基的编码方案,采用三维线框模型表示对象的三维形状,用纹理表示对象的颜色信息,从视频中提取出视频对象的三维参数,包括摄像机投影参数、对象的三维形状和颜色信息,得到了低码率的码流。同时,由于得到了对象的三维信息,因此解码端可以生成对象在任意视角下的图像,最后,可以根据对象的三维信息生成各种视频特效,例如光照、变形等,解决了对整个场景的视频序列进行基于内容的混合编解码的问题,可广泛应用于文物保护、商品虚拟展示和浸入式互连体验等领域。

附图说明

[0063] 图1为本发明视频序列混合编解码的系统中视频对象编码器的方框图;
[0064] 图2为本发明视频序列混合编解码的系统中视频对象解码器的方框图;
[0065] 图3为图1中参数提取模块的方框图;
[0066] 图4为图1中参数编码模块的方框图;
[0067] 图5为本发明视频序列混合编解码中的编码流程图;
[0068] 图6是提取视频对象三维参数的流程图;
[0069] 图7为提取摄像机参数流程图;
[0070] 图8为重构三维线框模型流程图;
[0071] 图9为提取纹理图像的流程图;
[0072] 图10为三维模型三角面和二维平面中等腰直角三角形间的映射关系图;
[0073] 图11为二维平面上三角形拼接的效果图;
[0074] 图12为本发明视频序列混合编解码中的解码流程图;
[0075] 图13为在码率为160kb/s时本发明与H.264一个测试序列某一帧解码图像质量的对比图。
[0076] 图14为MPEG-4人脸模型基编解码器结构;
[0077] 图15为可见外壳构造流程图。
[0078] 下面结合附图对本发明进行说明。

具体实施方式

[0079] 对于未知内容的视频,采用模型基的编码方案,关键是要从视频中提取出视频对象的三维参数,包括摄像机投影参数、对象的三维形状和颜色信息。本发明采用三维线框模型表示对象的三维形状,用纹理表示对象的颜色信息。得到这些信息后就可以采用模型基的编码方法。鉴于前述现有技术所存在的问题,本发明针对从多个角度拍摄得到的未知内容静态场景视频序列,提出一种基于参数的混合编解码方法。考虑到大场景难以建模而对象相对容易重构,将输入视频通过图像分割划分成视频对象和背景两个部分。通过基于图像建模的技术从输入视频中重构出摄像机参数、对象的三维线框模型和纹理图像用于表示视频对象,并对这些提取出的参数进行压缩实现视频对象的编码;而背景则采用现有的标准进行压缩,如H.264。
[0080] 本发明视频序列混合编解码的方法,该方法执行如下步骤:
[0081] 一、如图5所示,对视频序列进行混合编码的步骤是:
[0082] 1)视频图像分割的步骤,采用视频图像分割技术将输入视频图像划分为视频对象和背景两个部分,对视频对象部分执行步骤2),对背景部分执行步骤4)。这里,对象分割可以采用通常的分水岭算法、基于图切割的算法等。
[0083] 2)提取视频对象参数的步骤,采用基于图像建模的技术重构视频对象的三维参数并执行下一步骤;
[0084] 3)采用参数编码技术对视频对象的三维参数进行压缩并执行步骤5);
[0085] 4)采用现有的视频编码标准进行压缩并执行步骤5);
[0086] 5)输出压缩码流。
[0087] 二、如图12所示,对视频序列混合编码的压缩码流进行解码的步骤是:
[0088] a)从压缩码流中分别解压出视频对象的三维参数并执行下一步骤;
[0089] b)从压缩码流中分别解压出视频对象的背景并执行下一步骤;
[0090] c)将视频对象和背景进行融合,实现原始视频的重构。
[0091] 下面对本发明视频序列混合编解码的方法中主要步骤进行深入说明。
[0092] 在上述提取视频对象参数的步骤2)中,如图6所示,执行如下步骤:
[0093] 21)由输入的视频对象中提取摄像机的参数,建立视频对象的三维位置与图像平面上二维位置间的对应关系;
[0094] 22)采用基于图像重构的方法,由视频对象中重构出三维形状的线框模型;
[0095] 23)根据三维线框模型的可见性,为每个三角面赋予最佳的颜色信息,并拼成一个纹理图像,计算这些三角面的顶点在纹理图像上的位置,建立三角面顶点与纹理图像间的一一映射关系。
[0096] 在本发明视频序列混合编解码的方法中,摄像机参数表示物体三维位置向图像平面上投影得到二维位置的关系,可以用针孔摄像机模型模拟真实摄像机的成像过程,假设T T三维空间点P的齐次坐标为[XYZ1],其在图像平面上的投影点p的齐次坐标为[xy1],则它们之间存在如下的关系:
[0097] λ[xy1]T=K[Rt][XYZ1]T
[0098] 上式中λ为任意的非零常数;R是3×3的旋转矩阵,t为平移矢量,R和t称为摄像机的外部参数,表示摄像机坐标系和世界坐标系间的相对位置关系;K称为摄像机的内部参数,是个3×3的上三角矩阵,定义如下:
[0099]
[0100] 式中fx和fy为焦距长度;(px,py)表示基点(principle point)在图像平面上的坐标,分别为图像宽度和高度的一半;s为偏斜因子,一般认为是0。
[0101] 本发明假设相机在拍摄过程中焦距是不变的,因此摄像机的内部参数是已知的,只需要提取出摄像机的外部参数,这里,摄像机参数提取就是要恢复K、R和t,通常采用多目立体匹配的方法。
[0102] 在上述提取摄像机的参数的步骤21)中,如图7所示,多目立体匹配的方法执行如下步骤:
[0103] 211)从输入视频对象中检测不同角度下的SIFT特征点,并将这些特征点进行匹配;
[0104] 212)根据RANSAC算法,计算出图像间的基础矩阵,得到摄像机间的相对运动,即得到摄像机相对世界坐标系的旋转量R和平移量t;
[0105] 213)采用光束法平差(bundle adjustment)对上述坐标系的旋转量R和平移量t进行优化。
[0106] 在由视频对象中恢复三维线框模型时,视频对象的三维表面被视为一个等值面,表面包围的区域内部所有点的函数值均小于零,而包围区域之外所有点的函数值都大于零。
[0107] 在上述三维线框模型重构的步骤22)中,如图8所示,执行如下步骤:
[0108] 221)采用立体匹配的方法,在视频对象表面上或附近处找到一个三维空间点,以该点为中心构造体素,作为种子。
[0109] 可见外壳是物体三维形状的一个上界估计。物体的可见外壳在数学上可以等价成包围物体表面的一个等值面,用f(X)=0表示,其中X=(x,y,z)为空间点的坐标。可见外壳包围区域内部的每个点满足f(X)<0;而包围区域之外的点则满足f(X)>0。可见外壳的体构造方法就是在包围盒中将等值面f(X)=0包围区域之外的所有体素切割掉。通过特征点的多目立体匹配,可获得与特征点对应的3D空间点,这些3D空间点位于物体表面之上或附近处。以其中某个点为中心构造体素,则该体素将与等值面f(X)=0相交。
[0110] 222)以该体素为种子,在等值面上生长直到遍历整个表面,则可获得所有与等值面相交的体素。为此,以种子体素与视频对象表面相交点所在平面为面构造新的体素,并以新体素作为种子,继续得到与视频对象表面相交的点。
[0111] 223)重复上述过程,得到所有与视频对象表面相交的体素。因此,通过立体匹配构造种子体素,再用体素生长的方法可实现可见外壳的构造。
[0112] 具体的流程如图15所示,主要包括初始化、多目立体匹配、体素生长、三角化和自适应采样。初始化用于设置初始种子的大小、建立体素链表和三角面链表,分别用于存储生成的体素和体素转化成的三角面。多目立体匹配通过特征点的检测、匹配得到初始种子体素的中心位置;体素生长则在等值面上进行遍历找到所有和等值面相交的体素;三角化根据体素和等值面相交的情况,通过查找表将体素表示转化成三角面表示。自适应采样根据种子体素处的曲率大小调整由种子体素生成的体素大小,曲率变化大的地方体素较小,而曲率变化小的地方体素较大。
[0113] 224)采用步进立方体算法,将包围视频对象表面的体素转化为线框模型。
[0114] 225)经三角面优化输出三维线框模型。
[0115] 本发明视频序列混合编解码的方法,采用可见外壳(visual hull)近似表示物体的三维形状,用体素生长的方式来实现三维形状的重构,在另外的实施例中,也可以采用其他的重构方法,例如多目立体重构(multi-view stereo reconstruction)。
[0116] 在重构视频对象的三维形状时,为了完全表示视频对象,还需提取视频对象的颜色信息,本发明视频序列混合编解码的方法用纹理图像表示对象的颜色信息。在另外的实施例中,也可以采用其他的重构方法。
[0117] 在上述提取纹理图像的步骤23中,执行如下步骤:
[0118] 231)如图9所示,采用马尔可夫随机场模型,建立线框模型顶点与所有拍摄视点间的最佳对应关系。
[0119] 建立网格顶点和视点间的对应关系本质上是个标记过程。对于网格M而言,建立顶点序列V={v1,…,vm}和视点间{1,…,n}的对应关系,就是求解标记矢量L={l1,…,mlm}∈{1,…,n},其中lj(j=1,…,m)表示第j个顶点对应的最佳视点。最终生成的纹理图像质量取决于两个因素。一是顶点的法线矢量和从顶点到对应视点的有向线段之间的夹角,显然夹角越小说明对应视点下的摄像机越正对着该顶点;二是相邻顶点对应不同视点时产生的接缝现象。算法的目标就是要在这两个影响因素间取个最佳折中,使得每个视点尽量和其最佳视点相对应,同时相邻顶点间尽量对应相同的视点。基于这个目标,建立代价函数如下:
[0120] E(L)=Edata(L)+wEsmooth(L)
[0121] 式中第一项对应将视点分配给顶点的代价,称为数据代价;第二项是相邻顶点间分配不同视点时的代价,称为平滑代价,w为平滑代价的权重系数。通过最小这个代价函数,可以得到一个最优的标记矢量L={l1,…,lm},从而确定了每个顶点对应的最佳视点。
[0122] 算法根据顶点的法线矢量和从顶点到对应视点的有向线段之间的夹角来定义数据代价,具体如下式所示:
[0123]
[0124] 式中 表示顶点vj的法线矢量和从vj到视点li的有向线段之间的夹角。平滑代价定义如下:
[0125]
[0126] 式中N(j)是与顶点vj相邻的所有顶点构成的集合,函数e(●,●)用于度量颜色的差异。
[0127] 式(3)中的代价函数是个典型的离散多标记马尔可夫随机场。对这一问题的求解,采用多路图切割算法(Multiway Graph Cuts)。多路图切割算法有两种方法,即α扩张和α交换。α扩张方法性能较好,但需要平滑代价中的函数e(●,●)满足如下正则条件:
[0128] e(Pri(vk),Pri(vl))+e(Prj(vk),Prk(vl))
[0129] ≤e(Pri(vk),Prk(vl))+e(Pri(vk),Pri(vl))
[0130] 由于定义的颜色差异度量函数在颜色空间是满足上式的,因此可用α扩张求解。
[0131] 建立起顶点和视点间的对应关系后,需要将网格中的每个三角面映射到二维平面上的三角形。本发明对网格中每个三角面创建一个等腰直角纹理三角形,然后根据一定的规则将这些直角三角形拼接成四边形,最后对这些四边形进行颜色填充,形成纹理图像。
[0132] 232)如图10所示,将上述模型每个三角面分别映射到二维空间中的等腰直角三角形上。
[0133] 首先要确定三角面对应的直角三角形的大小。将三角面投影到其所有可见的视点图像平面上,求得最大的投影三角形面积。选择直角三角形的边长,使得其面积等于或刚刚大于三角面的最大投影面积。得到每个三角面对应直角三角形的大小后,可建立三角面和二维平面上直角三角形二者之间的一一对应关系,图10给出了这种对应关系的示意图。
[0134] 图10中三角形ΔT0T1T2为网格中某个三角面,Δt0t1t2为其在二维空间对应的直角三角形。对于Δt0t1t2中的像素点x,其在ΔT0T1T2上对应的3D点X的坐标计算方法如下:
[0135] X=w0T0+w1T1+w2T2
[0136] w1=u/(N-1)
[0137] w2=v/(N-1)
[0138] w0=1-w1-w2
[0139] 其中,(u,v)表示点x在以t0为原点,t1-t0为横轴,t2-t0为纵轴的坐标系中的坐标;N为Δt0t1t2直角边上的像素个数。通过式中X就可以求出直角三角形中每个像素点在三角面上的对应点。
[0140] 233)如图11所示,将这些等腰直角三角形拼成四边形,图中灰色区域表示在拼接过程中浪费的空间。
[0141] 为了提高存储效率,得到每个三角面对应的直角三角形后,需要将这些三角形拼成正方形。将网格中的三角面分成四类。第一类是具有相同大小直角三角形的相邻三角面;第二类是对应不同大小直角三角形的相邻三角面;第三类是具有相同大小直角三角形的不相邻三角面;第四类是剩余的所有三角面。按照从第一类到第三类的优先级顺序,将直角三角形拼成四方形。对于第二类三角面,将较小的三角形边长扩大为较大三角形的边长。对于第三类三角面,为了避免不相邻三角面在对角线上的颜色损伤,拼接时四边形对角线区域加倍。然后对拼接成的四边形和剩余的直角三角形按照边长的大小进行降序排列。按照从大到小,从左到右的顺序,将这些四边形和剩余的三角形排列在一个二维区域,如果已到达区域的边界,则另起一行。拼接结果的示意效果如图11所示,图中灰色区域表示在拼接过程中浪费的空间。
[0142] 234)如图10所示,对拼接之后的三角形进行颜色填充,形成最终的纹理图像。三角形顶点对应像素点的颜色等于其在线框模型中对应三角面顶点在分配视点图像平面上投影得到的像素点颜色,而三角形边上和包围区域内像素点的颜色值由其在线框模型中三角面上对应点在三个顶点分配视点图像平面上投影点颜色的重心坐标权重插值得到。
[0143] 为了得到最终的纹理图像,需要对拼接成的二维区域进行颜色填充。这里采用了基于重心坐标权重的颜色插值方法。如图10所示,为了确定像素点x的颜色,首先求出x在对应三角面ΔT0T1T2上的点X;然后将X分别投影到顶点T0、T1和T2对应的视点图像Ii、Ij和Ik上;最后将这三个投影点的颜色进行权重平均作为像素点x处的颜色。假设颜色用color(●)表示,ΔT0T1T2的面积为A,ΔXT1T2、ΔXT2T0和ΔXT0T1的面积分别为a、b和c,则像素点x的颜色计算公式如下:
[0144]
[0145] 在上述解压视频对象三维参数的步骤a)中,如图12所示,执行如下步骤:
[0146] a1)从压缩码流中恢复摄像机参数、三维线框模型和纹理图像;
[0147] a2)将纹理图像映射到线框模型上,完成对对象三维形状和颜色的描述;
[0148] a3)根据摄像机参数将纹理映射后的线框模型分别投影到原始拍摄视点下,恢复视频对象。
[0149] 在以图13为实施例的一个视频序列混合编解码过程中,每一帧视频图像对应一个摄像机拍摄视点,提取出的摄像机参数包括内部参数(焦距和基点)和外部参数(旋转矩阵和平移矢量),反映了从3维空间向2维图像平面上的投影关系。提取出的摄像机参数数据如下,其中“//”表示注释。
[0150] 300//视频帧数
[0151] hat_texture.jpg//纹理图像名称
[0152] 640 480//视频图像分辨率
[0153] 884.253662//摄像机焦距
[0154] 318.299835 244.023193//基点坐标
[0155] -0.081671 -0.995944 0.037743//第1帧图像对应摄像机的3行3列旋转矩阵第1行
[0156] -0.634454 0.022747 -0.772625//第1帧图像对应摄像机的3行3列旋转矩阵第2行
[0157] 0.768634 -0.087047 -0.633739//第1帧图像对应摄像机的3行3列旋转矩阵第3行
[0158] -5.136273 5.179986 178.007614//第1帧图像对应摄像机的平移矢量[0159] ……
[0160] 0.880977 0.140073 -0.451950//第300帧图像对应摄像机的3行3列旋转矩阵第1行
[0161] -0.038059 -0.931104 -0.362764//第300帧图像对应摄像机的3行3列旋转矩阵第2行
[0162] -0.471626 0.336788 -0.814950//第300帧图像对应摄像机的3行3列旋转矩阵第3行
[0163] 3.691115 1.803580 156.440475//第300帧图像对应摄像机的平移矢量[0164] 提取出的三维形状存储成网络上通用的3D文件格式——VRML2.0。三维形状由顶点和三角面组成,下面给出了三维形状数据。
[0165] #VRML V2.0 utf8//vrml文件格式标志符
[0166] geometry IndexedFaceSet{
[0167] coord Coordinate{
[0168] point[
[0169] -2.000000 -30.098499 2.000000,//第1个顶点的空间坐标x,y,z[0170] -4.000000 -30.324100 0.000000,//第2个顶点的空间坐标[0171] -2.000000 -30.759001 0.000000,//第3个顶点的空间坐标[0172] ……
[0173] 4.000000 4.000000 34.160400
[0174] ]
[0175] }
[0176] coordIndex[
[0177] 0,1,2,-1,//第1个三角面:0,1,2表示第1个,第2个和第3个顶点构成三角面,-1是标志符
[0178] 3,4,5,-1,//第2个三角面
[0179] 6,7,8,-1,//第3个三角面
[0180] ……
[0181] 4080,4081,4082,-1,
[0182] ]
[0183] }
[0184] 对摄像机参数采用经典的熵编码进行压缩,编码后的数据如下所示。
[0185] 52 61 72 21 1A 07 00 CF 90 73 00 00 0D 00 00 00
[0186] 00 00 00 00 D3 7A 74 20 90 2F 00 0C 19 00 00 75
[0187] 4B 00 00 02 64 B5 D9 96 2F 7E B4 3A 1D 33 0A 00
[0188] ……
[0189] 49 CD 2B 70 C6 A5 69 9F 1C CB 6E B8 BF FF 20 C4
[0190] 3D 7B 00 40 07 00
[0191] 对于三维形状数据,采用MPEG-4提供的三维网格编码工具进行压缩,编码后的数据如下所示。
[0192] 00 20 E0 3C 1D FF 24 7C 1F 8E 1E 50 00 80 00 81
[0193] 0A 0D AD E1 56 40 02 00 81 80 00 80 00 87 A0 FF
[0194] FB C7 EF F6 89 CA 50 00 30 00 80 00 31 00 80 71
[0195] ……
[0196] 19 40 26 08 D4 68 A2 D3 5B 82 89 16 A9 76 84 B8
[0197] 31 E9 46 F5 6E 56 60 5D A7 FF FF
[0198] 采用经典的JPEG压缩技术对提取出的颜色参数即纹理图像进行编码,输出数据如下所示。
[0199] FF D8 FF E0 00 10 4A 46 49 46 00 01 01 00 00 01
[0200] 00 01 00 00 FF DB 00 43 00 02 01 01 01 01 01 02
[0201] 01 01 01 02 02 02 02 02 04 03 02 02 02 02 05 04
[0202] ……
[0203] A0 02 8A 28 A0 02 8A 28 A0 02 8A 28 A0 02 8A 28
[0204] A0 02 8A 28 A0 0F FF D9
[0205] 用AA AA AA A0表示摄像机编码数据起始标志符,AA AA AA A1表示三维形状编码数据起始标志符,AA AA AA A2表示纹理图像编码数据起始标志符,混合后的数据如下所示。
[0206] AA AA AA A0 52 61 72 21 1A 07 00 CF 90 73 00 00
[0207] 0D 00 00 00 00 00 00 00 D3 7A 74 20 90 2F 00 0C
[0208] 19 00 00 75 4B 00 00 02 64 B5 D9 96 2F 7E B4 3A
[0209] ……
[0210] 49 CD 2B 70 C6 A5 69 9F 1C CB 6E B8 BF FF 20 C4
[0211] 3D 7B 00 40 07 00 AA AA AA A1 00 20 E0 3C 1D FF
[0212] 24 7C 1F 8E 1E 50 00 80 00 81 0A 0D AD E1 56 40 02
[0213] 00 81 80 00 80 00 87 A0 FF FB C7 EF F6 89 CA 50 00
[0214] ……
[0215] 19 40 26 08 D4 68 A2 D3 5B 82 89 16 A9 76 84 B8
[0216] 31 E9 46 F5 6E 56 60 5D A7 FF FF AA AA AA A2 FF
[0217] D8 FF E0 00 10 4A 46 49 46 00 01 01 00 00 01 00 01
[0218] 00 00 FF DB 00 43 00 02 01 01 01 01 01 02 01 01 01
[0219] 02 02 02 02 02 04 03 02 02 02 02 05 04
[0220] ……
[0221] A0 02 8A 28 A0 02 8A 28 A0 02 8A 28 A0 02 8A 28
[0222] A0 02 8A 28 A0 0F FF D9
[0223] 颜色参数实际上是为三维形状的每个三角面填充颜色,为便于存储和压缩,这些三角面拼成四边形,从而将这些颜色形成纹理图像。
[0224] 根据标志符AA AA AA A0,AA AA AA A1,AA AA AA A2从码流中分别得到摄像机编码数据、三维形状编码数据和纹理图像编码数据。
[0225] 摄像机参数的数据解码
[0226] 因为摄像机编码采用的是无损的熵编码,因此解码后的数据和原始数据完全一样,如下所示。
[0227] 300//视频帧数
[0228] hat_texture.jpg//纹理图像名称
[0229] 640 480//视频图像分辨率
[0230] 884.253662//摄像机焦距
[0231] 318.299835 244.023193//基点坐标
[0232] -0.081671 -0.995944 0.037743//第1帧图像对应摄像机的3行3列旋转矩阵第1行
[0233] -0.634454 0.022747 -0.772625//第1帧图像对应摄像机的3行3列旋转矩阵第2行
[0234] 0.768634 -0.087047 -0.633739//第1帧图像对应摄像机的3行3列旋转矩阵第3行
[0235] -5.136273 5.179986 178.007614//第1帧图像对应摄像机的平移矢量[0236] ……
[0237] 0.880977 0.140073 -0.451950//第300帧图像对应摄像机的3行3列旋转矩阵第1行
[0238] -0.038059 -0.931104 -0.362764//第300帧图像对应摄像机的3行3列旋转矩阵第2行
[0239] -0.471626 0.336788 -0.814950//第300帧图像对应摄像机的3行3列旋转矩阵第3行
[0240] 3.691115 1.803580 156.440475//第300帧图像对应摄像机的平移矢量[0241] 解码出的网格数据如下所示。与图中的原始三维形状数据相比,点的空间坐标有些差异,而三角面完全一样。这是因为点的坐标采用了有损的编码方法,而三角面则是无损的。
[0242] #VRML V2.0utf8
[0243] geometry IndexedFaceSet{
[0244] coord Coordinate{
[0245] point[
[0246] -2.0755 -30.1789 1.9591
[0247] -4.0667 -30.3716 -0.0321
[0248] -2.0755 -30.8212 -0.0321
[0249] -0.0843 -31.0782 -0.0321
[0250] ……
[0251] 3.9624 3.9286 34.0754
[0252] ]
[0253] }
[0254] coordIndex[
[0255] 0 1 2 -1
[0256] 3 4 5 -1
[0257] 6 7 8 -1
[0258] 9 10 11 -1
[0259] ……
[0260] 4080 4081 4082 -1
[0261] ]
[0262] }
[0263] 纹理图像解码后就是标准的JPEG图像。
[0264] 纹理映射实际上是将上述三维形状中的每个三角面和图11建立起一一映射关系,从而可以利用OpenGL或D3D通过光栅化绘制出三维形状的颜色。三维形状和纹理图像间的一一映射关系是通过纹理坐标实现的,其数据格式如下所示。
[0265] #VRML V2.0utf8
[0266] geometry IndexedFaceSet{
[0267] coord Coordinate{
[0268] point[
[0269] -2.0755 -30.1789 1.9591
[0270] -4.0667 -30.3716 -0.0321
[0271] -2.0755 -30.8212 -0.0321
[0272] -0.0843 -31.0782 -0.0321
[0273] ……
[0274] 3.9624 3.9286 34.0754
[0275] ]
[0276] }
[0277] coordIndex[
[0278] 0 1 2 -1
[0279] 3 4 5 -1
[0280] 6 7 8 -1
[0281] 9 10 11 -1
[0282] ……
[0283] 4080 4081 4082 -1
[0284] ]
[0285] texCoord TextureCoordinate{//纹理坐标
[0286] point[
[0287] 0.0503 0.5170//第1个顶点的纹理坐标
[0288] 0.0386 0.5053//第2个顶点的纹理坐标
[0289] 0.0474 0.4916//第3个顶点的纹理坐标
[0290] ……
[0291] 0.0581 0.4799
[0292] ]
[0293] }
[0294] }
[0295] 上图中纹理坐标都归一化到[0,1]区间范围内了。要计算顶点在纹理图像上的位置,只需要将纹理坐标的横坐标和纵坐标分别乘以纹理图像的宽度和高度后取整。
[0296] 下面以实施例说明本发明视频序列混合编解码的系统。
[0297] 本发明视频序列混合编解码的系统的设备可以是个人计算机、服务器或移动设备等。如图1所示,本发明采用对象分割技术将视频对象从背景中分离出来,然后通过基于图像建模技术分别得到摄像机参数、三维线框模型和纹理图像,最后将这些提取的参数进行压缩编码形成码流。对应的实施过程如图3所示。解码端从码流中分别恢复摄像机参数、三维线框模型和纹理图像,然后将纹理图像映射到三维模型上,最后利用摄像机参数将纹理映射后的线框模型分别投影到原始拍摄视点下就恢复了原始的视频对象。对应的实施过程如图4所示。与MPEG-4中模型基编码系统相比,本发明视频序列混合编解码的系统不需要事先建立好对象的三维模型,而是从视频中利用基于图像建模的技术重构对象的三维模型,因此可以对未知内容的视频采用模型基的编码技术。
[0298] 本发明视频序列混合编解码的系统,包括视频对象编码器100和视频对象解码器200。其中,如图1所示,视频对象编码器100包括:
[0299] 对象分割模块101,用于从视频序列中分割视频对象;
[0300] 参数提取模块102:用于从视频对象中重构出摄像机参数、三维线框模型和纹理,以便表示视频序列中待编码的对象;
[0301] 参数编码模块103:用于对提取出的参数进行压缩编码,形成压缩码流以便于传输;和
[0302] 背景编码模块104:用于以现有的标准,如H.264进行编码压缩。
[0303] 对象分割模块101、参数提取模块102和参数编码模块103依次相连,对象分割模块101和背景编码模块104相连,输入的视频序列接至对象分割模块101,参数编码模块103和背景编码模块104共同输出编码的码流;
[0304] 其中,如图2所示,视频对象解码器200包括参数解码模块201和背景解码模块202,输入码流经参数解码模块201和背景解码模块202分别输出的解压后的视频序列。
[0305] 如图3所示,上述视频对象的参数提取模块102包括:
[0306] 摄像机参数提取模块121,用于摄像机参数提取:根据摄像机的成像模型,通过多目立体匹配的方法提取摄像机从三维空间到二维图像平面上的投影矩阵;
[0307] 三维线框模型重构模块122,用于采用体素生长的方法重构出对象三维形状的线框模型;
[0308] 纹理图像构造模块123,用于恢复对象的颜色信息,形成最终的纹理图像。
[0309] 如图3所示,参数编码模块103包括:
[0310] 摄像机参数编码模块131,用于采用无损熵编码方法压缩提取出摄像机参数;
[0311] MPEG三维网格编码模块132,用于采用MPEG4中的3DMC工具压缩重构出的三维线框模型;
[0312] 纹理图像编码模块133,用于采用JPEG编码方法压缩提取出纹理图像。
[0313] 其中,摄像机参数提取模块121与摄像机参数编码模块131相连,三维线框模型重构模块122与MPEG三维网格编码模块132相连,纹理图像构造模块123与和纹理图像编码模块133相连。视频序列输入摄像机参数提取模块121、三维线框模型重构模块122和纹理图像构造模块123,摄像机参数编码模块131、MPEG三维网格编码模块132和纹理图像编码模块133经编码压缩模块105输出码流。
[0314] 如图4所示,上述视频对象的参数解码模块201包括摄像机参数解码模块2011、网格解码模块2012、纹理图像解码模块2013和纹理映射模块2014。其中,网格解码模块2012、纹理图像解码模块2013与纹理映射模块2014分别相连,码流经编码解压模块2001输入至摄像机参数解码模块2011和网格解码模块2012、纹理图像解码模块2013,摄像机参数解码模块2011和纹理映射模块2014经3D空间到2D空间投影模块2015输出视频对象。
[0315] 在码率为160kb/s时,本发明与H.264以一个测试序列某一帧解码图像为例,进行了解码图像质量的对比。如图13所示,其中,13-1为原始图像,13-2为H.264解码图像,13-3为本发明解码图像。从图中看出,H.264方法丢失了大部分细节信息,解码出的图像比较模糊;而本发明解码出的图像几乎和原始图像完全一样。
[0316] 以上所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明涉及精神的前提下,本领域普通工程技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明的权利要求书确定的保护范围内。