一种基于分形和H.264的多目立体视频压缩与解压缩方法
技术领域:
本发明属于视频压缩编码领域,涉及多目立体视频的压缩编码,在保证峰值信噪比PSNR基本保持不变的前提下,极大地降低了运算复杂度和提高压缩比,为多目立体视频编码的实时性应用奠定了基础,进一步提高了分形视频压缩编码的性能。
背景技术:
与以往的视频编码标准相比,H.264具有更好的压缩性能以及面向网络传输的“友好性”。H.264优秀的压缩性能是多种新技术产生效果的积累所致(参见Wiegand T Sullivan,GJ Bjontegard G,et al.Overview of the H.264/AVC video coding standard[J].IEEE Transaction onCircuits and Systems Video Technology,2003,13(7):560-576.),(参见Richardson E G.H.264and MPEG-4video compression video coding for next generation multimedia[M].John Wiley&Sons,2003.),包括4×4的整数变换、多种宏块分割模式、多参考帧和1/4像素精度的运动补偿等。新技术的应用使其具有更高的编码性能,但随之而来的是运算复杂度的大幅度增加。近年来陆续提出了许多对其进行简化和优化的方法。在以往的研究中多是从帧间宏块分割模式选择(参见闫俊海,杨鼎才,王喜民.H.264帧间模式快速预测方法研究[J].微处理机,2010,31(1):67-70.),(参见L.Yang,Y.Keman,J.Li,S.Li.An effective variable block-size earlytermination algorithm for H.264video coding[J].IEEE Transactions on Circuits and Systems forVideo Technology,2005,15(6):784-788.)和运动估计(参见E.A.Al Qaralleh,T.-S.Chang.Fastvariable block size motion estimation by adaptive early termination[J].IEEE Transactions onCircuits and Systems for Video Technology,2006,16(8):1021-1026.),(参见李桂菊,刘刚,梁静秋.H.264快速运动估计方法的改进[J].光学精密工程,2010,18(11):2489-2496.),预测模式选择(参见Y.H.Moon,G.Y.Kim,J.H.Kim.An improved early detection algorithm for all-zeroblocks in H.264video encoding[J].IEEE Transactions on Circuits and Systems for VideoTechnology,2005,15(8):1053-1057.),(参见J.You,W.Kim,J.Jeong.16×16macroblockpartition size prediction for H.264P slices[J].IEEE Transactions on Consumer Electronics,2006,52(4):1377-1383.)等方面对H.264中消耗时间最多的帧间预测环节进行分析和改进,可以达到降低编码复杂度的效果,但是有进一步提高的可能性。
分形理论最初由Mandelbrot于上世纪70年代提出(参见B.Mandelbrot.The FractalGeometry of Nature[M].New York:W.H.Freeman and Company,1982.)。分形编码的数学基础是迭代函数***(IFS)理论。Barnsley首先将分形编码用于交互式图像压缩(参见Michael F.Barnsley,Alan D.Sloan.A better way to compress image[J].Byte Magazine,1988,13(1):215-233.)。Jacqain提出了全自动的分形图像压缩方法(参见Arnaud E.Jacquin.Anovel fractalblocking-coding technique for digital image[A].IEEE International Conference on Acoustics,Speech and Signal Processing[C],1990,4:2225-2228.),(参见Arnaud E.Jacquin.Fractal imagecoding:a review[J].Proceeding of the IEEE,1993,81(10):1451-1465.),该方法采用基于图像分块的方式以局部的仿射变换代替全局的仿射变换。之后,Fisher利用四叉树改进了这一方法(参见Y.Fisher.Fractal Image Compression[J].Fractals,1994,2(3):347-361.),(参见Y.Fisher,E.W.Jacobs.Image compression:A study the iterated transform method[J].Signal Processing,1992,29(3),251-263.),(参见Y.Fisher.Fractal Image Compression:Theory and application todigital images[M].New York:Spring-Verlag,1995,55-77.),大大提高了编码效率,并成为目前分形图像编码中的主流方法。
在此基础之上,一些学者和研究人员把分形图像压缩的方法应用到视频序列的压缩上。Meiqing Wang等提出了综合基于数据立方体和基于帧的分形视频压缩方法(参见MeiqingWang,Choi-Hong Lai.A hybrid fractal video compression method[J].Computers&Mathematicswith Applications,2005,50(3-4):611-621.),(参见Meiqing Wang,Zhehuang Huang,Choi-HongLai.Matching search in fractal video compression and its parallel implementation in distributedcomputing environments[J].Applied Mathematical Modeling,2006,30(8):677-687.),(参见Meiqing Wang,Rong Liu,Choi-Hong Lai.Adaptive partition and hybrid method in fractal videocompression[J].Computers&Mathematics with Applications,2006,51(11):1715-1726.)。其中最为经典和影响较大的参见(C.S.Kim,R.C.Kim,S.U.Lee.Fractal coding of video sequenceusing circular prediction mapping and noncontractive interframe mapping[J].IEEE Transactions onImage Processing,1998,7(4):601-605.)。该方法采用类似于标准视频编码方法所采用的运动估计/补偿技术,该方法利用了相邻帧之间的时间强相关性,对视频序列压缩取得了较好的效果。在CPM和NCIM中,子块域中的每个图像块都由来自相邻帧相同大小的父块域通过运动补偿得到。CPM和NCIM两者间最大的不同在于CPM在解码的过程中需要具备收敛性,而NCIM不需要。但是在循环预测编码(CPM)方法中,为了保证起始帧经过自身的循环解码能够近似收敛到原来的图像,压缩过程需要经过复杂变换、搜索和迭代等,压缩时间和图像质量难以达到要求。目前典型的分形图像和视频压缩方法的运算量很大,编码速度较慢,并且解码的质量有待提高,使得分形图像和视频压缩方法还需要进一步的改进和提高。
多视点视频(Multi-view Video)是一种新型的具有立体感和交互操作功能的视频,通过在场景中放置多台摄像机,记录下多个视点数据,提供给用户以视点选择和场景漫游的交互能力。多视点视频将在自由视点视频、立体电视、立体视频会议、多视点视频点播等数字娱乐领域有着非常广泛的应用前景。随着相机数目的增加,多视点视频的数据量也成倍增加(参见Chun Li,Lini MA.A Study of Multi-view Video Coding Technology[J].Computers&Moderns,2009,1:104-108.)。拍摄场景不同角度的视频信息,利用其中的一个或多个视点信息可以合成任意视点的信息,达到自由视点显示和自由切换任意视点的目的(参见ISO/IECJTC1/SC29/WG111 Call for Evidence on Multi-View Video Coding.DOC.N6720,Palma deMallorca,Spain,2004.),(参见ISO IEC JTC1/SC29/WG111 Survey of Algorithms used forMulti-view Video Coding(MVC).DOC 1.N6909,Hong Kong,China,2005.),(参见ISO/IECJTC1/SC29/WG111 Requirements on Multi-view Video Coding 4.DOC.N7282,Poznan,Poland,2005.)
发明内容:
本发明提出了一种基于分形和H.264的多目立体视频压缩与解压缩方法。其中以中间目为基本层使用MCP原理压缩编码和其它目使用MCP+DCP的原理进行那个进行压缩编码。以三目为例,中间目作为参考目,采用单独的运动补偿预测方式(MCP)进行编码,对I帧采用基于H.264的帧内预测编码,滤波后得到重建帧(作为参考帧),然后对中间目的P帧以已编码帧的重建帧为参考帧进行块运动补偿预测编码,记录块每次最匹配过程的分形参数,将分形参数分别代入压缩迭代函数***中得到P帧的预测帧,滤波后得到重建帧。左目和右目采用MCP加视差补偿预测方式(DCP)进行编码,参考帧可以是本目已编码的前一帧或者,其它目已编码的帧。利用熵编码CALCV压缩每一帧的残差帧和利用有符号指数哥伦布编码压缩分形参数。
一种基于分形和H.264的多目立体视频压缩编码方法,包括以下步骤:
步骤一:如果是左目/右目,转到步骤六。如果是中间目,若是P帧,转到步骤二;若是I帧(第一帧必须为I帧,其它帧可以设置是否为I帧),采用基于H.264的帧内预测编码方式,对于每个当前块在各种可能的预测方式中选择具有最小代价的预测模式存储,完成所有块的预测后可以得到I帧的预测帧。通过原始帧和预测帧之差得到编码端残差帧。残差图像的数据经过DCT、量化之后的系数进行Zig-Zag扫描,然后用熵编码CALVC进行编码写入码流。预测帧和解码端残差帧之和滤波后得到重建图像(可作为参考帧)。判断当前帧是否为最后一帧,如果是最后一帧则结束编码,如果不是最后一帧则返回步骤一开始下一帧的编码。所述I帧为视频序列起始帧或者视频序列中只进行帧内编码的图像帧。
步骤二:若是中间目的P帧,用常规分形的运动补偿预测(MCP)编码,在进行块匹配之前,首先对该帧进行互不重叠的宏块划分,然后计算这些宏块以及经树状划分得到的小块的像素和、像素平方和,以及中间目前一帧重建图像即参考帧中,按照设定步长划分的所有宏块以及经树状划分得到的小块的像素和、像素平方和,同时计算分数像素内插值对应块的像素和、像素平方和,转到步骤三。所述P帧为视频序列中通过其它已编码帧进行预测的图像帧;所述将当前帧划分为固定大小的互不重叠的图像块称为宏块;所述将当前宏块进行树状划分得到的块称为小块;所述当前帧为正在进行压缩的帧,所述参考帧为当前帧的已经编码并重建的前一帧;所述当前帧所有块的集合称为子块域;所述前一帧的所有块的集合称为父块域;所述块DCT变换中的块采用固定大小模式。
步骤三:依次对当前帧的所有宏块进行编码,在参考帧的搜索窗内首先对该宏块进行块匹配;在进行子块与父块的匹配过程中,子块的位置作为父块的起始搜索点,父块的大小与子块的大小相同。利用基于运动矢量场的自适应六边形搜索方法,然后利用分数像素块匹配,搜索分数像素内插值对应小块处的RMS点,搜索出最佳的匹配误差RMS。如果匹配误差RMS小于开始设定的阈值γ,保存当前的迭代函数***系数即IFS系数,转入步骤五得到本块的重建块;否则,依次按照树状结构对该块进行划分,并对各个划分得到的小块利用分数像素块匹配和基于运动矢量场的自适应六边形搜索方法,分别计算匹配误差RMS,如果RMS小于设定阈值γ,则停止划分并记录该小块IFS系数,转入步骤五得到本块的重建块;否则继续划分,直到将当前块划分为预先设定的最小块,记录IFS系数;转入步骤五得到本块的重建块;所述搜索窗为在参考帧中的矩形搜索区域;所述IFS系数包括父块位置(x,y)和比例因子s、偏移因子o;如果当前帧所有的宏块都已编码完毕,所有的重建块组成重建图像(即下一帧的参考帧)。如果且是中间目,则转到步骤四;若是左目/右目,则执行步骤七。
步骤四:残差图像的数据经过DCT、量化之后的系数进行Zig-Zag扫描,然后用熵编码CALVC进行编码写入码流。如果是P帧则还要对所有IFS系数进行有符号指数哥伦布编码;判断当前帧是否为最后一帧,如果是最后一帧结束编码;否则,返回步骤一继续处理下一帧图像。
步骤五:通过保存的IFS系数代入解码方程计算得到预测值,由原始块和预测块之差得到编码端残差块,再将预测块和解码端残差块之和得到重建块。注:解码端残差块是由编码端残差块经过DCT变换、量化、反量化和反DCT变换得到的。转回步骤三编码下一宏块。
步骤六:对左目/右目图像,首先进行互不重叠的宏块划分,然后计算这些宏块以及经树状划分得到的小块的像素和、像素平方和,以及左目/右目前一帧重建图像参考帧,按照设定步长划分的所有宏块以及经树状划分得到的小块的像素和、像素平方和,同时计算分数像素内插值对应块的像素和、像素平方和,以减少块匹配过程中的重复计算,转到步骤三;
步骤七:计算中间目中对应帧图像的参考帧,按照设定步长划分的所有宏块以及经树状划分得到的小块的像素和、像素平方和,同时计算分数像素内插值对应块的像素和、像素平方和,以减少块匹配过程中的重复计算。转到步骤八。
步骤八:首先对与当前子块位置相同的父块进行块匹配,得到RMS,并保存迭代函数***系数,该系数包括父块与子块的相对位移矢量(x,y),比例因子s和偏移因子o;依次对当前帧的所有宏块进行编码,在父块域中的搜索窗内首先对该宏块进行块匹配;在进行子块与父块的匹配过程中,子块的位置作为父块的起始搜索点,父块的大小与子块的大小相同并转入步骤九,执行完步骤九返回之后,如果所得的匹配误差RMS小于开始设定的阈值γ,则保存当前的迭代函数***系数即IFS系数,转入步骤八编码下一宏块;否则,依次按照树状结构对该块进行划分,并对各个划分得到的小块分别转入步骤九,执行完步骤九返回之后计算匹配误差RMS,如果RMS小于设定阈值γ,则停止划分并记录该小块IFS系数,转入步骤八编码下一宏块;否则继续划分,直到将当前块划分为预先设定的最小块,转入步骤九计算RMS,执行完步骤九返回之后记录IFS系数,转入步骤八编码下一宏块;最后与步骤六所得结果比较,选择误差最小的作为预测结果;所述搜索窗为在参考帧中的矩形搜索区域;所述IFS系数包括父块位置(x,y)和比例因子s、偏移因子o;如果当前帧所有的宏块都已编码完毕,则转到步骤十;
步骤九:充分利用分数像素块匹配和视差分布约束条件:将上一个视差估计矢量作为为当前帧的搜索中心,在水平方向沿初始点的右侧进行搜索,在搜索过程中进行跳跃式搜索;点匹配完之后,向右间隔三个点进行搜索,进行比较,直到找到最小的RMS;然后对分数像素位置进行相同的操作,比较得到更小的RMS,结束DCP搜索过程;
步骤十:残差图像的数据经过DCT、量化之后的系数进行Zig-Zag扫描,然后用熵编码CALVC进行编码写入码流。如果是P帧则还要对所有IFS系数进行有符号指数哥伦布编码;判断当前帧是否为最后一帧,如果是最后一帧结束编码;否则,返回步骤一继续处理下一帧图像。
所述一种基于分形和H.264的多目立体视频压缩编码方法,处理的视频序列为YUV格式,分别对3个分量中的每个采用上述十个步骤进行处理。
所述步骤三中基于运动矢量场的自适应六边形搜索方法,充分根据分形编码的特点,具体如下:
1)在小十字模式中的五个搜索点中搜索最小匹配误差所在点;应用块匹配准则搜索,如果最小匹配误差点在小十字模式的中心,此时即得到最终要求的最佳匹配误差;否则,转入步骤2);
2)以步骤1)搜索到的最小匹配误差点为中心构造新的小十字模式,应用块匹配准则,搜寻3个新的搜索点;再搜索最小匹配误差点,如果搜索到的最小匹配误差点在小十字模式的中心,即得到最终要求的最佳匹配误差;否则,进入步骤3);
3)搜索大十字模式3个还没有搜索到的点,应用块匹配准则,搜索新的最小匹配误差点,以作为下一步搜索的中心;
4)以上一步的最小匹配误差点为中心,构造六边形搜索模式,应用块匹配准则搜索,找出新的最小匹配误差点,如果该点在六边形的中心,进入步骤5);否则,继续步骤4),直到最小匹配误差点在六边形的中心;
5)以步骤4)所搜索到的位于六边形的中心的最小匹配误差点为中心,构造小十字搜索模式,应用块匹配准则搜索,找出最小匹配误差点,即得到最终要求的最佳匹配误差。
所述步骤四中P帧中分形系数的编码包括以下三个步骤:
1)如果当前块是处于中间目I帧后的第一个P帧内,且是P帧的第一块,则按照有符号的指数哥伦布编码方式编码预测P帧所产生的所有分形系数;
2)如果当前块是处于中间目I帧后的第一个P帧内,但是不是P帧的第一块,则编码当前块与前一块的分形系数之差。如果当前块与前一块的预测方式不同,则按照4×4块的划分方式编码;
3)如果当前块不是处于中间目I帧后的第一个P帧内,则编码当前块与前一帧相同位置块的分形系数之差。如果两者的预测方式不同,则按照4×4块的划分方式编码。
4)如果当前块是处于左目/右目的帧内,则编码当前块与中间目相同位置块的分形系数之差。如果两者的预测方式不同,则按照4×4块的划分方式编码。
所述步骤六中对宏块采用树状划分,块匹配采用匹配误差准则,子块与父块的匹配误差RMS为:
其中参数s和o分别为:
其中,N为子块和父块像素的个数,ri为子块的像素值,di为父块的像素值;
计算当前宏块在参考帧中的块匹配误差RMS,其中ri是子块的像素值,di是父块的像素值;如果RMS小于预先设定的阈值γ,记录IFS系数,IFS系数包括匹配块的位移矢量(x,y)和公式7,8中的s和o,处理下一宏块;否则,对当前宏块进行树状划分,计算划分后小块的RMS,如果小于阈值γ,则停止划分,否则继续划分,直到子块达到预先设定的最小块为止。
所述步骤九中视差分布约束条件如下,以右目为例:
外极线约束;对于中间目中的图像上的一点,通过相对定向参数找出右目中的图像上与其对应的极线,其对应点在上述极线上搜索;对于平行***的视差搜索,只需沿扫描线,进行x方向的搜索即可;最佳匹配点位于偏振线上即水平线上;在立体平行摄像***中,沿水平方向进行DCP搜索;
两摄像机在同一时刻观看空间同一特征点P(xc,yc,zc),在中间目中的图像和右目中的图像的坐标分别为pleft=(Xleft,Yleft),pright=(Xright,Yright);其中点P(xc,yc,zc)与两个光心所确定的平面称为偏振平面,偏振平面与左右图像的交线称为偏振线;由几何关系得到,其中:f表示摄像机的焦距,B为两摄像机的投影中心连线的距离,即基线距,zc为世界坐标系下特征点P的Z坐标:
2)方向性约束;对于同一个景物,其透视投影中间目中的图像相对于右目中的图像局部地向左移动。同一空间点在两图像平面中的投影位置差矢量即视差由此可知视差D是深度z的函数,表示相对深度,对于同一特征点,其透视投影中间目中的图像是右目中的图像沿水平负向的局部平移;同一空间点在右目中的图像上的图像坐标比在中间目中的图像上的图像坐标偏右,在搜索时沿一个方向进行。
3)空域相关性与时域相关性:而连续变化视差场中的视差矢量有很强的相关性,即同一帧内视差矢量之间存在相关性;对于相邻两帧图像,仅有少数像素发生了运动,多数像素的位置并没有变化;对于位置不变的像素来说,其视差基本不变,在进行视差估计时,用前一帧图像的对应视差矢量作为搜索起始点进行小范围内的搜索,从而快速找到实际视差矢量。
处理的多目立体视频序列为YUV格式,分别对3个分量中的每个采用上述十个步骤进行处理。
一种基于分形和H.264的多目立体视频解压缩方法,其特征在于包含以下步骤:
步骤Ⅰ:首先读入中间目压缩信息,包括压缩帧数,每帧图像的宽和高,I帧压缩质量和***I帧的间隔;
步骤Ⅱ:判断解码帧是否为I帧,若是I帧转入步骤Ⅲ,否则转入步骤Ⅳ;
步骤Ⅲ:对于I帧,读入码流得到I帧的残差帧数据,经过反量化和反变换得到解码端残差帧,再与解码端预测帧进行相加之后得到重建帧,帧数加一转入步骤Ⅷ;
步骤Ⅳ:对于P帧,计算中间目前一帧中按照设定步长划分的所有宏块以及经树状划分得到的小块的像素和、像素平方和,然后从码流中读入该帧所有宏块的划分方式、每一个小块的迭代函数***系数和残差帧数据,其中由各迭代函数***系数分别计算出解码端的预测块形成解码端的预测帧,残差帧数据经过反量化和反变换得到解码端残差帧。解码端残差帧与预测帧之和得到重建帧;
步骤Ⅴ:从码流中读入左目/右目信息,包括每块的划分方式,每一个小块的迭代函数***系数和残差帧数据、参考帧号;计算左目/右目前一帧和中间目对应帧中按照设定步长划分的所有宏块以及经树状划分得到的小块的像素和、像素平方和,由各迭代函数***系数分别计算出解码端的预测块形成解码端的预测帧,残差帧数据经过反量化和反变换得到解码端残差帧。解码端残差帧与预测帧之和得到重建帧。转入步骤Ⅵ;
步骤Ⅵ:判断此时所有帧是否都已解码,若都解码完毕,结束解码过程,否则转入步骤Ⅱ。
对于每一个宏块进行解压缩时,首先判断该宏块在编码时的划分方式,对于每一个子块,首先在父块域找到与该子块相对应的区域,然后利用下面的公式获得该子块的像素值:
ri=s·di+o (5)
其中ri为待解码子块的像素值,di为父块域中的像素值,s为比例因子,o为偏移因子。
在基于分形和H.264的多目立体视频解码过程中,中间目用常规单目的运动补偿预测(MCP)编码,左目/右目的每个图像块通过运动补偿预测(MCP)和视差补偿预测(DCP)两种方式进行预测,从中选择误差较小的一种作为预测结果。
处理的多目立体视频序列为YUV格式,分别对3个分量中的每个采用上述六个步骤进行处理。
本发明所提出的基于分形和H.264多目立体视频压缩方法的优点在于:
(1)本方法中间目用分形预测的方式预测P帧,用基于H.264帧内预测的方式预测I帧;其它目,采用选择目间视差补偿预测和帧间运动补偿预测中的最优来编码。且采用传递残差帧的方式,既降低了码流,又提高解码质量。
(2)本方法中间目I帧后首个P帧的分形参数的传递采用与首块间的差值传递,其他P帧的分形参数采用与参考帧的差值传递。这样就避免了码流的大量增加。其它目则采用与参考目的差值传递。分形预测主要是以16×16像素为单位进行编码,可以减少码流。
(3)本方法在进行子块的块匹配之前,计算当前帧互不重叠的宏块及其经树状划分之后得到的小块的像素和与像素平方和。在参考帧中,按照匹配步长分别计算各宏块以及经树状划分以后得到的小块的像素和与像素平方和。这样就避免了在块匹配过程中出现重复计算的弊端,大大节约了子块的匹配时间。
(4)本方法在分形编码方法中引入了分数像素块匹配技术,对于很多块,在一个内插到半像素精度的区域进行搜索可能会找到更好的匹配,为了获得更精确的运动向量和更高的压缩比。
(5)本方法中,在进行DCP编码方式时,充分利用视差分布约束条件,包括外极线约束、方向性约束和空域相关性与时域相关性三个方面,对DCP搜索方式进行了简化运算。
附图说明:
图1(a)为本发明一种基于分形和H.264的多目立体视频压缩与解压缩方法的压缩流程图;
图1(b)为本发明一种基于分形和H.264的多目立体视频压缩与解压缩方法的P帧预测编码压缩流程图;
图1(c)为本发明一种基于分形和H.264的多目立体视频压缩与解压缩方法的解压缩流程图;
图1(d)为本发明一种基于分形和H.264的多目立体视频压缩与解压缩方法的基于运动矢量场的自适应六边形搜索方法流程图;
图2为4×4亮度块的9种预测方式;
图3为16×16亮度块和8×8色度块的四种预测模式;
图4(a)为本发明一种基于分形和H.264的多目立体视频压缩与解压缩方法对宏块的四种划分模式图;
图4(b)为本发明一种基于分形和H.264的多目立体视频压缩与解压缩方法对宏块的划分模式四进一步进行划分的四种划分模式图;
图5为本发明一种基于分形和H.264的多目立体视频压缩与解压缩方法的MCP和DCP结构示意图;
图6(a)为多目立体视频序列“ballroom”的第10帧左目原始图像;
图6(b)为多目立体视频序列“ballroom”的第10帧中间目原始图像;
图6(c)为多目立体视频序列“ballroom”的第10帧右目原始图像;
图6(d)为本发明一种基于分形和H.264的多目立体视频压缩与解压缩方法编解码多目立体视频序列“ballroom”的第10帧左目解压缩图像;
图6(e)为本发明一种基于分形和H.264的多目立体视频压缩与解压缩方法编解码多目立体视频序列“ballroom”的第10帧中间目解压缩图像;
图6(f)为本发明一种基于分形和H.264的多目立体视频压缩与解压缩方法编解码多目立体视频序列“ballroom”的第10帧右目解压缩图像;
图7为Zig-Zag的扫描方式示意图。
具体实施方式:
下面将结合附图对本发明方法作进一步的详细说明,仅以亮度分量Y为例,色差分量U和V的压缩步骤与亮度分量相同。
本发明提出了一种基于分形和H.264多目立体视频压缩与解压缩方法。其中以中间目为基本层使用MCP原理压缩编码和其它目使用MCP+DCP的原理分别进行编码。中间目的I帧(起始帧必须为I帧,其它帧可以设定是否为I帧)采用基于H.264的帧内预测编码,滤波后得到重建帧(作为基本层和增强层的参考帧),P帧进行块运动补偿预测(MCP)编码,计算与子块域和父块域相关子块的像素和与像素平方和,同时计算分数像素内插值对应块的像素和、像素平方和,在前一帧重建帧搜索窗中寻找最相似的匹配块,记录块每次最匹配过程的分形参数,将分形参数分别代入压缩迭代函数***中得到P帧的预测帧,滤波后得到重建帧。其它目的起始帧采用视差补偿预测(DCP)的方式从基本层的I帧进行预测;而P帧采用MCP和DCP两种方式选择误差最小的作为预测结果进行编码。利用熵编码CALCV压缩I帧和P帧的残差帧和利用有符号指数哥伦布编码压缩分形参数。如附图1(a)所示,一种基于分形和H.264的多目立体视频压缩编码方法,所述I帧为视频序列起始帧或者视频序列中只进行帧内编码的图像帧;所述宏块为将当前帧划分为固定大小的互不重叠的图像块;所述小块为将当前宏块进行树状划分得到的块;所述当前帧为正在进行压缩的帧,所述参考帧为已经编码并重建的帧,可以为当前帧的前一帧或者相邻目的同一帧;所述当前帧所有块的集合称为子块域;所述前一帧的所有块的集合称为父块域。以多目立体视频序列“ballroom.yuv”的前10帧为例。包括以下步骤:
步骤一:对于左目/右目,转到步骤六。对于中间目,首先判断是否为I帧,如果不是,转到步骤二;如果是I帧,采用H.264视频编码标准中的I帧帧内图像压缩方法。其中4×4亮度块有9种预测方式如附图2,16×16亮度块和8×8色度块有四种预测模式如附图3。每个宏块的预测要对各种可能的宏块预测模式进行搜索,采用基于率失真优化(RDO)的模式判决方法,编码器对每个宏块所有可能的模式分别计算率失真代价,然后对它们进行比较。选择率失真代价最小的模式为最佳模式。率失真代价函数J定义如下:
J(s,c,MODE|QP,λMODE)=SSD(s,c,MODE|QP)+λMODE*R(s,c,MODE|QP) (6)
得到预测帧后转到步骤四处理残差帧的编码问题和步骤五得到重建帧之后,再转到步骤一的开始进行下一帧的处理;
步骤二:若为P帧,对当前P帧图像进行互不重叠的16×16宏块划分,分别计算当前帧互不重叠的16×16,16×8,8×16,8×8,8×4,4×8,4×4的小块的像素和与像素的平方和。然后分别计算参考帧也就是前一帧的解压缩图像中以1为步长的大小分别为16×16,16×8,8×16,8×8,8×4,4×8,4×4的小块的像素和与像素的平方和,以减少块匹配过程中的重复计算。从第一个宏块开始处理,依次对当前帧的所有16×16宏块进行编码,转入步骤三;
步骤三:依次对当前帧的所有16×16宏块进行编码,在父块域中的搜索窗内对整个宏块进行块运动估计/补偿;在进行子块与父块的匹配过程中,子块的位置作为父块的起始搜索点,父块的大小与子块的大小相同。
如附图1(d)利用基于运动矢量场的自适应六边形搜索方法,然后利用分数像素块匹配,搜索分数像素内插值对应小块处的RMS点,搜索出最佳的匹配误差RMS。如果匹配误差RMS小于开始设定的阈值γ,保存当前的迭代函数***系数即IFS系数,转入步骤五得到本块的重建块;否则,依次按照树状结构对该块进行划分。
匹配的依据是分形迭代函数***原理,简要介绍一下分形图像压缩的数学基础迭代函数***(IFS:Iterative Function System)理论。设D是Rn欧氏空间的子集,ω为D →D的映射,如果存在一个实数C,0≤C<1,使得对于Rn上的度量d,满足对任意x,y∈D,有d(ω(x),ω(y))≤C(d(x,y)),则称ω为压缩映射,实数C称为ω的压缩因子。完备的度量空间(X,d)以及n个压缩映射ωi:X→X(其压缩因子分别为C1,C2,…Cn)一起,就组成一个迭代函数***(Iterated Function System),简称IFS,记作{X:ω1,ω2…,ωn}。C=max(C1,C2,…,Cn)称为IFS的压缩因子。因此{R2:ω1,ω2,ω3}就是一个IFS。
分形图像压缩中,一般的匹配准则是RMS,即:
其中s,o分别为:
其中,N为子块和父块像素的个数,ri为子块的像素值,di为父块的像素值。
首先设定子块的匹配误差阈值γ=tol×tol×no,其中tol根据不同的子块大小而改变,大的子块tol就越大,小的子块tol就小。在本例中,我们取16×16宏块的tol为10.0,8×8子块的tol为8.0,4×4子块的tol为6.0,no为当前子块属于该视频对象区域的像素个数。
设定16×16宏块的匹配误差阈值γ16=10.0×10.0×no,在参考帧的父块域中以当前子块的位置开始在15×15的搜索窗内对整个宏块进行块匹配,如果匹配误差RMS小于开始设定的阈值γ16,则保存当前的IFS系数包括比例因子s,偏移o,父块相对于当前子块的坐标偏移x,y,返回步骤三的开始,继续下一宏块的匹配。否则,按照树状结构对该宏块进行划分,对宏块的划分有四种模式,如附图4(a),模式一为一个16×16小块,模式二为两个8×16的小块,模式三为两个16×8的小块,模式四为四个8×8的小块。
1、首先按模式二的划分计算,利用分数像素块匹配和基于运动矢量场的自适应六边形搜索方法,若模式二中两个小块都满足RMS<γ16,则保存当前的IFS系数包括比例因子s,偏移o,以及父块相对于当前子块的坐标偏移x,y,并停止块的划分,转到5;
2、否则按模式三划分,利用分数像素块匹配和基于运动矢量场的自适应六边形搜索方法,若模式三中两个小块都满足RMS<γ16,则保存当前的IFS系数包括比例因子s,偏移o,以及父块相对于当前子块的坐标偏移x,y,并停止块的划分,转到5;
3、否则按照模式四对当前宏块进行划分,利用分数像素块匹配和基于运动矢量场的自适应六边形搜索方法,此时匹配误差阈值设置为γ8=8.0×8.0×no,如果模式四中的4个小块都满足RMS<γ8,则保存当前的IFS系数包括比例因子s,偏移o,以及父块相对于当前子块的坐标偏移x,y,并停止块的划分,转到5;
4、否则对模式四中的每一个小块按照附图4(b)中的模式划分顺序进行划分,可依次划分为1个8×8的小块,2个4×8的小块,2个8×4的小块,4个4×4的小块。这里只对第一个8×8小块的匹配过程进行阐述,其它3个8×8小块的匹配过程与第一个相同,不再赘述。首先按照2个4×8的小块划分,进行块匹配,如果两个子块的匹配误差RMS全部小于γ8时,则保存当前的IFS系数包括比例因子s,偏移o,以及父块相对于当前子块的坐标偏移x,y,并停止块的划分。否则,按照2个8×4的划分方式进行块的划分,对这两个子块进行块匹配,如果两个子块的匹配误差RMS全部小于γ8时,则保存当前的IFS系数包括比例因子s,偏移o,以及父块相对于当前子块的坐标偏移x,y,并停止块的划分。否则,对该子块划分为4个4×4的小块,同时匹配误差阈值设为γ4=6.0×6.0×no,对四个小块分别进行块匹配,并分别记录每个子块的IFS系数包括比例因子s,偏移o,以及父块相对于当前子块的坐标偏移x,y,并停止块的划分,转到5;
5、返回步骤三,继续下一宏块的编码。
如果是中间目,则转到步骤四;若是左目/右目,则执行步骤七。
步骤四:残差图像的数据经过DCT、量化之后的系数进行Zig-Zag扫描,然后用熵编码CALVC进行编码写入码流。如果是P帧则还要对所有IFS系数进行有符号指数哥伦布编码;判断当前帧是否为最后一帧,如果是最后一帧结束编码;否则,返回步骤一继续处理下一帧图像。
其中DCT变换是以4×4的亚宏块为单位进行的,具体过程如下:
其中,X是4×4残差块, Y是经过DCT变换后的块。再对Y进行量化参数QP=28时的量化,量化步长Qstep=16,量化公式为:Yij是矩阵Y中的转换系数,Zij是输出的量化系数。round()为取整函数(其输出为与输入数值最接近的整数)。然后按照Zig-Zag的扫描(如附图7)重排序后经过熵编码CALVC后生成压缩比特流。残差量化系数经过反量化和反DCT变换得到解码端残差帧。解码端残差帧和预测帧之和得到重建帧,可以作为下一帧的参考帧。
步骤五:通过保存的IFS系数代入解码方程计算得到预测值,由原始块和预测块之差得到编码端残差块,再将预测块和解码端残差块之和得到重建块。注:解码端残差块是由编码端残差块经过DCT变换、量化、反量化和反DCT变换得到的。转回步骤三编码下一宏块。
步骤六:对于左目/右目,首先进行互不重叠的16×16宏块划分,分别计算当前帧互不重叠的16×16,16×8,8×16,8×8,8×4,4×8,4×4的小块的像素和与像素的平方和。然后分别计算参考帧也就是前一帧的解压缩图像中以1为步长的大小分别为16×16,16×8,8×16,8×8,8×4,4×8,4×4的小块的像素和与像素的平方和,同时计算分数像素内插值对应16×16,16×8,8×16,8×8,8×4,4×8,4×4的小块的像素和、像素平方和,以减少块匹配过程中的重复计算。附图5为多目立体视频编码的MCP和DCP结构示意图,左目/右目中,每个宏块使用DCP从中间目中预测,使用MCP从当前目的前一帧预测。编码器首先在左目/右目的前一帧中搜索,选择最匹配的D块;从第一个宏块开始处理,依次对当前帧的所有16×16宏块进行编码,转入步骤三;
步骤七:然后编码器在中间目对应帧的解压缩图像中以1为步长的大小分别为16×16,16×8,8×16,8×8,8×4,4×8,4×4的小块的像素和与像素的平方和,同时计算分数像素内插值对应16×16,16×8,8×16,8×8,8×4,4×8,4×4的小块的像素和、像素平方和,进行搜索选择最匹配的D块。从第一个宏块开始处理,依次对当前帧的所有16×16宏块进行编码,转入步骤八;附图6(a)、(b)和(c)为多目立体视频序列“ballroom”第10帧左目、中间目和右目原始图像,附图6(d)、(e)和(f)为多目立体视频序列“ballroom”第10帧左目、中间目和右目解压缩图像。
附图6(d)中,对应平均PSNR=37.47dB,平均码流Bit=83730bit,平均时间Time=3781ms;附图6(e)中,对应平均PSNR=37.27dB,平均码流Bit=90032bit,平均时间Time=3780ms;附图6(f)中,对应平均PSNR=37.49dB,平均码流Bit=83022bit,平均时间Time=3772ms。可以看出:基于分形和H.264的多目视频压缩方法的解码图像质量很好。相比于传统单独的分形视频编码方法有很大的提高。转到步骤八。
步骤八:首先对与当前子块位置相同的父块进行块匹配,得到RMS,并保存迭代函数***系数,该系数包括父块与子块的相对位移矢量(x,y),比例因子s和偏移因子o;依次对当前帧的所有宏块进行编码,在父块域中的搜索窗内首先对该宏块进行块匹配;在进行子块与父块的匹配过程中,子块的位置作为父块的起始搜索点,父块的大小与子块的大小相同并转入步骤十,执行完步骤十返回之后,如果所得的匹配误差RMS小于开始设定的阈值γ,则保存当前的迭代函数***系数即IFS系数,转入步骤九编码下一宏块;否则,依次按照树状结构对该块进行划分,并对各个划分得到的小块分别转入步骤十,执行完步骤十返回之后计算匹配误差RMS,如果RMS小于设定阈值γ,则停止划分并记录该小块IFS系数,转入步骤九编码下一宏块;否则继续划分,直到将当前块划分为预先设定的最小块,转入步骤十计算RMS,执行完步骤十返回之后记录IFS系数,转入步骤九编码下一宏块;最后与步骤六所得结果比较,选择误差最小的作为预测结果;所述搜索窗为在参考帧中的矩形搜索区域;所述IFS系数包括父块位置(x,y)和比例因子s、偏移因子o;如果当前帧所有的宏块都已编码完毕,则转到步骤十;
步骤九:充分利用分数像素块匹配和视差分布约束条件:将上一个视差估计矢量作为当前帧的搜索中心,在水平方向沿初始点的右侧进行搜索,在搜索过程中进行跳跃式搜索;点匹配完之后,向右间隔三个点进行搜索,进行比较,直到找到最小的RMS;同时对分数像素位置进行相同的操作,比较得到更小的RMS。
视差分布约束条件包括:
1)外极线约束;对于中间目中的图像上的一点,通过相对定向参数找出左目/右目中的图像上与其对应的极线,其对应点在上述极线上搜索;对于平行***的视差搜索,只需沿扫描线,进行x方向的搜索即可;最佳匹配点位于偏振线上即水平线上;在立体平行摄像***中,沿水平方向进行DCP搜索;
两摄像机在同一时刻观看空间同一特征点P(xc,yc,zc),在中间目中的图像和左目/右目中的图像的坐标分别为pleft=(Xleft,Yleft),pright=(Xright,Yright);其中点P(xc,yc,zc)与两个光心所确定的平面称为偏振平面,偏振平面与左右图像的交线称为偏振线;由几何关系得到,其中:f表示摄像机的焦距,B为两摄像机的投影中心连线的距离,即基线距,zc为世界坐标系下特征点P的Z坐标:
2)方向性约束;对于同一个景物,其透视投影中间目中的图像相对于左目/右目中的图像局部地向左移动。同一空间点在两图像平面中的投影位置差矢量即视差由此可知视差D是深度z的函数,表示相对深度,对于同一特征点,其透视投影中间目中的图像是左目/右目中的图像沿水平负向的局部平移;同一空间点在左目/右目中的图像上的图像坐标比在中间目中的图像上的图像坐标偏右,在搜索时沿一个方向进行。
3)空域相关性与时域相关性:而连续变化视差场中的视差矢量有很强的相关性,即同一帧内视差矢量之间存在相关性;对于相邻两帧图像,仅有少数像素发生了运动,多数像素的位置并没有变化;对于位置不变的像素来说,其视差基本不变;在进行视差估计时,用前一帧图像的对应视差矢量作为搜索起始点进行小范围内的搜索,从而基于分形和H.264找到实际视差矢量;
结束DCP搜索过程;
步骤十:残差图像的数据经过DCT、量化之后的系数进行Zig-Zag扫描,然后用熵编码CALVC进行编码写入码流。如果是P帧则还要对所有IFS系数进行有符号指数哥伦布编码;判断当前帧是否为最后一帧,如果是最后一帧结束编码,否则,返回步骤一继续处理下一帧图像。
处理的多目立体视频序列为YUV格式,分别对3个分量中的每个采用上述十个步骤进行处理。
如附图1(c)所示,一种基于分形和H.264的多目立体视频解压缩方法,包括以下步骤:
步骤Ⅰ:首先读入中间目压缩信息,包括压缩帧数,每帧图像的宽和高,I帧压缩质量和***I帧的间隔;
步骤Ⅱ:判断解码帧是否为I帧,若是I帧转入步骤Ⅲ,否则转入步骤Ⅳ;
步骤Ⅲ:对于I帧,读入码流得到I帧的残差帧数据,经过反量化和反变换得到解码端残差帧,再与解码端预测帧进行相加之后得到重建帧,帧数加一转入步骤Ⅷ;
步骤Ⅳ:对于P帧,计算中间目前一帧中按照设定步长划分的所有宏块以及经树状划分得到的小块的像素和、像素平方和,然后从码流中读入该帧所有宏块的划分方式、每一个小块的迭代函数***系数和残差帧数据,其中由各迭代函数***系数分别计算出解码端的预测块形成解码端的预测帧,残差帧数据经过反量化和反变换得到解码端残差帧。解码端残差帧与预测帧之和得到重建帧;
步骤Ⅴ:从码流中读入左目/右目信息,包括每块的划分方式,每一个小块的迭代函数***系数和残差帧数据、参考帧号;计算左目/右目前一帧和中间目对应帧中按照设定步长划分的所有宏块以及经树状划分得到的小块的像素和、像素平方和,由各迭代函数***系数分别计算出解码端的预测块形成解码端的预测帧,残差帧数据经过反量化和反变换得到解码端残差帧。解码端残差帧与预测帧之和得到重建帧。转入步骤Ⅵ;
步骤Ⅵ:判断此时所有帧是否都已解码,若都解码完毕,结束解码过程,否则转入步骤Ⅱ。
按照每一宏块进行解码,对于每一个宏块进行解压缩时,首先判断该宏块在编码时的划分方式,对于每一个子块,首先在父块域找到与该子块相对应的区域,然后利用下面的公式获得该子块的像素值:
ri=s·di+o (12)
其中ri为待解码子块的像素值,di为父块域中的像素值,s为比例因子,o为偏移因子。
在基于分形和H.264的多目立体视频解码过程中,中间目用常规单目的运动补偿预测(MCP)编码,左目/右目的每个图像块通过运动补偿预测(MCP)和视差补偿预测(DCP)两种方式进行预测,从中选择误差较小的一种作为预测结果。
处理的多目立体视频序列为YUV格式,分别对3个分量中的每个采用上述六个步骤进行处理。
本方法选择Visual C++6.0作为所述方法的实现语言,CPU为CoreTM 2QuadQ9300,2.50GHz主频,内存大小为3.46G,对标准测试立体视频序列“ballroom.yuv”进行了基于分形和H.264的多目立体视频编码实验。
对“ballroom.yuv”多目立体视频序列1~10帧采用JMVM8.0和本发明所提出的基于分形和H.264的多目立体视频压缩方法进行编码结果的平均值如表1所示。从表1可以看到,对“ballroom.yuv”多目立体视频序列,采用基于分形和H.264的多目立体视频压缩方法的搜索时间仅为JMVM8.0的35%,码率降为原来的48%,PSNR值减少了0.51dB。
表1多目立体视频序列压缩性能均值对比
对“ballroom.yuv”多目立体视频序列左、中和右三个通道1~10帧进行了实验,大小为640×480像素,YUV 4:2:0制式的多目立体视频序列主要从视频图像重建质量、码率和压缩时间三方面对二者进行对比。其中重建帧质量用峰值信噪比(PSNR)表示。本发明中MCP方法的水平和垂直搜索范围都是[-7,7],本发明所提快速DCP水平搜索范围[0,6]。
根据H.264和分形视频编码方法的优点,将其应用到多目立体视频编码领域,并根据视差分布约束条件和视频运动特点,提出了一种新的视差估计和运动估计方法,同时运用了分数像素块匹配。通过仿真实验可以得到,该方法在保证PSNR变化很小的前提下,极大地降低了运算复杂度,同时大大降低了码率,为多目立体视频编码的实时性应用奠定了基础。
本发明根据现代视频编解码***H.264解码图像质量高,时间短,码率低的要求,提出了基于分形预测编码的对H.264中P帧预测进行改进的视频编码***。并充分利用分形图像特征、运动和视差分布约束条件、分数像素块匹配,在搜索方法上提出了新的改进,使得搜索时间大大减少,从而运算的复杂度和时间都降低了;同时压缩比大大提高,使得空间的利用率越来越高。在分形编码中,解码质量和编码时间一直都是最为关注的问题,也是比较难解决的方面。本方法针对这方面,进行了深入的挖掘和思考,同时也取得了很好的效果,为以后的研究打下了良好的基础,也指明了一定的方向。