专利名称:一种视频编解码方法
技术领域:
本发明涉及多媒体通信领域的视频压缩编解技术,尤其是涉及一种视频编码方法和一种视频解码方法。
背景技术:
在传统的视频编码标准中,如MPEG或者ITU-T的H.26x系列,都是在编码端利用序列帧之间的统计相关性来进行帧间预测编码的,为了能够较准确的预测当前帧,现行的这些标准中无一例外的使用了运动估计算法,因为运动估计算法复杂度高,所以导致视频编码器复杂度一般比解码器的复杂度高5到10倍。这种不对称的视频编码方案对于视频点播和直播等应用是非常适合的,因为在这些应用中对于视频数据是一次压缩多次播放,终端的任务只是进行复杂度较低的视频解码即可。然而,一些应用或许是相反的情况,例如在无线视频传感器网络或卫星视频通信等应用中,需要低处理能力的终端处理器把视频数据进行现场的视频编码,然后发送给中心服务器,此时传统的视频编码方案就很难胜任,而是需要一种低编码复杂度的视频编码方案来适应终端的低处理能力。
随着视频通信技术的发展,传统的基于编码端运动估计的混合视频编码技术在一些特殊应用领域很难胜任,为此分布式信源编码(Distributed SourceCoding)理论得到了越来越多学者的关注,分布式编码是一种全新的视频压缩编码框架,其理论基础自20世纪70年代以来就已建立。它是一种编码结构上的创新,主要用于解决传统视频编码在视频通信中遇到的编码复杂度高、可伸缩性差和容错能力差等问题。UC伯克利大学的R.Ramchandran领导的小组开发了分布式视频编码系统PRISM。在PRISM系统中为了在解码端能够准确地构造帧间宏块的边信息(Side Information),在编码过程中通过传输一些CRC(循环冗余校验)比特来实现解码端的运动估计。
虽然PRISM系统在编码过程中CRC比特可以指导解码端进行较准确的运动估计,但CRC比特本身并不能用来重建图像,其中还存在信息冗余,导致视频编码的效率降低,严重影响到视频通信的效果。
发明内容
本发明目的在于提供一种视频编码方法,以降低视频编码端的信息冗余,从而提高视频编码的效率和视频通信效果。
为解决上述问题,本发明提出了一种视频编码方法,对输入的视频编码数据进行分类编码,包括帧间编码模式和帧内编码模式,在进行帧间编码模式时,包括如下步骤对所述输入帧间编码宏块的系数进行变换和量化,然后对所述量化后的系数按频率进行重排,对所述重排系数的前N1个位平面进行编码,对重排前系数的N1位平面之后的所有位平面进行编码。
其中,对所述输入帧间编码宏块的系数进行的变换是离散余弦变换DCT变换。
其中,在进行帧间编码模式时,包括具体步骤如下步骤A,将输入的宏块划分为相应的4×4块,并对每一个4×4块系数进行DCT变换和相应的量化;步骤B,对步骤A中得到的量化后的DCT系数进行重排;步骤C,对步骤B中重排后的DCT系数的前N1个位平面进行位平面编码,得到位平面码流;步骤D,对步骤A中得到的量化后的DCT系数的N1个位平面之后的所有位平面进行编码,得到校验码流。
其中,所述步骤A中相应的量化,具体指根据码流选择量化尺度进行量化。
其中,所述步骤B具体步骤如下步骤B1,对当前宏块中各组量化后的4×4DCT系数按照ZIAZIG扫描的方式进行扫描,并对扫描后的系数按照频率进行相应的编号;
步骤B2,把每组4×4DCT系数中相同编号的系数排在一起,组成新的宏块系数。
其中,所述步骤C中的编码方法采用JPEG2000标准中的EBCOT算法、EZBC算法或SPIHT算法中的一种编码方法。
其中,所述步骤C中N1可以选取固定常数或根据该帧图像的自身特性自适应选取N1。
其中,所述根据该帧图像的自身特性自适应选取N1具体指采用公式N1=log10T+0.5,选取N1其中表示向下取整数函数运算符,T为当前宏块与前一帧对应位置的宏块之间像素差的绝对值之和。
其中,所述步骤D中编码方法采用Turbo Code编码、LDPC编码或IRA编码中的一种编码方法。
其中,在所述步骤A之前还包括根据视频图像的运动程度、及视频图像的纹理、细节等因素对输入的图像数据帧进行宏块划分,分成16×16宏块、16×8宏块、8×16宏块或8×8宏块等宏块类型,将划分后的宏块作为帧间编码的输入。
其中,在所述步骤D之后还包括将宏块类型码流、步骤C中得到的该宏块N1位平面码流和步骤D中得到的校验信息码流共同组成最终的所述当前宏块的编码码流。
其中,对所述输入帧间编码宏块的系数进行的变换是Hadamard变换或整数变换。
本发明还提出了一种视频解码方法,解析输入的视频解码码流,判断当前宏块的类型,进行相应类型的解码,在进行帧间解码模式时,所述输入的视频解码码流包括N1位平面码流和校验码流,包括如下步骤对所述输入的N1位平面码流进行解码、反量化和反变换,得到N1位平面的重构数据;利用所述N1位平面的重构数据对所述输入的校验码流进行解码,得到当前宏块N1位平面之后的所有位平面重构数据;将所示的两个重构数据合并,并对所述合并后的数据进行反量化和反变换。
其中,在进行帧间解码模式时,具体包括如下步骤步骤E,对所述输入的N1位平面码流进行相应的解码,其解码方法与编码端的编码方法相对应;步骤F,对步骤E中解码后的系数进行重排,其重排的方法与编码端采用的重排方法相对应,得到对应的各个重排后的4×4块系数;步骤G,对步骤F中得到的各个4×4块系数进行反量化和反变换,得到当前宏块的前N1位平面的变换系数的重构数据;步骤H,针对步骤G中所述的重构数据在参考帧内进行运动估计和运动补偿,得到此条件下当前宏块的最优参考块;步骤I,把步骤H中得到的最优参考块和所述输入的校验码流一起送入校验码流解码器进行解码,得到当前宏块N1位平面之后的所有位平面重构数据;步骤J,把步骤F得到的重排系数和步骤I中得到的当前宏块N1位平面之后的所有位平面重构数据进行合并,并对所述合并后的数据进行反量化和反变换。
其中,所述步骤I中的解码器和在编码端中使用的编码器相对应,包括Turbo Code解码器、LDPC解码器码或IRA解码器。
本发明还提出了一种帧间编码方法,包括如下步骤步骤A,将输入的宏块划分为相应的4×4块,并对每一个4×4块系数进行变换和相应的量化;步骤B,对步骤A中得到的量化后的变换系数进行重排;步骤C,对步骤B中重排后的变换系数的前N1个位平面进行位平面编码,得到位平面码流;步骤D,对步骤A中得到的量化后的变换系数的N1个位平面之后的所有位平面进行编码,得到校验码流。
本发明还提出了一种帧间解码方法,输入的视频解码码流包括N1位平面码流和校验码流,包括如下步骤步骤E,对所述输入的N1位平面码流进行相应的解码,其解码方法与编码端的编码方法相对应;步骤F,对步骤E中解码后的系数进行重排,其重排的方法与编码端采用的重排方法相对应,得到对应的各个重排后的4×4块系数;步骤G,对步骤F中得到的各个4×4块系数进行反量化和反变换,得到当前宏块的前N1位平面的变换系数的重构数据;步骤H,针对步骤G中所述的重构数据在参考帧内进行运动估计和运动补偿,得到此条件下当前宏块的最优参考块;步骤I,把步骤H中得到的最优参考块和所述输入的校验码流一起送入校验码流解码器进行解码,得到当前宏块N1位平面之后的所有位平面重构数据;步骤J,把步骤F得到的重排系数和步骤I中得到的当前宏块N1位平面之后的所有位平面重构数据进行合并,并对所述合并后的数据进行反量化和反变换。
本发明有益效果如下本发明由于在帧间编码过程中对重排的DCT系数采用了子带编码的方法得到部分码流数据,此数据在解码端即作为解码图像的一部分,又用来指导解码端的运动估计,从而降低了视频编码端的计算复杂度,提高了视频编码的效率和视频通信效果,同时在保证本方案在编码端复杂度较低的情况下,在解码端也得到较高的重建图像质量。
图1为本发明视频编码方法中帧间编码帧编码的主要实现原理流程图;图2为本发明视频编码方法中对量化后的DCT系数进行重排的示意图;图3为本发明视频编码方法中DCT系数的位平面示意图;图4为本发明视频编码方法中帧间编码输出码流结构的示意图;图5为本发明视频编码方法的主要实现原理流程图;
图6为本发明视频解码方法的主要实现原理流程图;图7为本发明视频解码方法中帧间解码的主要实现原理流程图;图8为本发明视频解码方法中对解码后的系数进行重排的示意图。
具体实施例方式
本发明的视频编码方法是通过在详细分析现有技术分布式信源编码方案所存在缺陷的基础上而提出的,现有的分布式信源编码方案中CRC比特可以指导解码端进行较准确的运动估计,但CRC比特本身并不能用来重建图像,其中还存在信息冗余,本发明通过重排宏块的离散余弦变换(Discrete CosineTransform,DCT)系数,并通过子带编码的方法产生高位平面的部分编码信息,这部分信息既是重建图像的一部分,同时也可以指导解码端进行运动估计。
因此,本发明的视频编码方法的核心思想在于根据分布式信源编码的基本原理,首先对输入的宏块进行分类,在进行帧间编码模式时,先对帧间编码宏块的系数进行DCT变换和量化,然后对量化后的系数按频率进行重排,利用子带编码技术对重排系数的前N1个位平面进行编码,最后对N1位平面之后的所有位平面进行编码,得到校验信息码流。此N1位平面编码信息在解码端作为重建图像的一部分信息的同时,并指导解码端进行运动估计来获得更高质量的边信息,此边信息与校验信息一起来解码剩余位平面,进而得到完整的重建帧间宏块。
下面结合各个附图,对能够实现上述特点的本发明视频编码方法的具体实施过程进行详细的阐述。
请参阅图5,该图是本发明视频编码方法的主要实现原理流程图,即对输入的宏块进行分类编码,其主要实现过程包括如下步骤首先计算当前宏块与前一帧对应位置的宏块之间的各像素对应差的绝对值之和T,并根据T判断编码类型并编码(在这里Tskip和Tintra分别为两个预先设定的阈值)1)、如果T小于Tskip,则当前宏块不需要编码,定义为SKIP类型,并传比特0到解码端;2)、如果T大于Tintra,则当前宏块类型定义为Intra类型,按帧内宏块进行编码(与传统编码方式相同,即4×4DCT变换、量化和熵编码),并传比特10到解码端;3)、否则,当前宏块类型定义为Inter类型,按帧间方式进行编码,其编码过程如上所述步骤S100——步骤S600,并传比特11到解码端。
请参阅图1,该图是本发明视频编码方法中帧间编码帧编码的主要实现原理流程图,其主要实现过程包括如下步骤步骤S100,输入宏块;对输入的图像数据帧进行宏块划分,可以根据视频图像的运动程度、及视频图像的纹理、细节等因素来划分图像数据帧,分成16×16宏块、16×8宏块、8×16宏块或8×8宏块等宏块类型,将划分后的宏块作为帧间编码的输入。
步骤S200,4×4DCT变换和量化;对步骤S100中所输入的宏块划分为相应的4×4宏块,并对每一个4×4宏块系数进行DCT变换,在DCT变换后对其进行相应的量化,其中可以根据码流选择量化尺度。
步骤S300,对量化后的DCT系数进行重排;对步骤S200中得到的所有量化后的DCT系数进行重排,具体重排过程如下步骤S301,对各组量化后的4×4DCT变换系数按照“之字形”(ZIAZIG)扫描的方式进行扫描,按照扫描后的频率进行编号(从1到16),如图2.(a)所示;步骤S302,为便于后面的系数编码,把每组DCT系数相同频率的系数排在一起(相同的频率具有相同的特征);假设步骤S100中将图像数据帧划分为16×16宏块,则每一个16×16宏块总共有16组4×4DCT宏块,则把每组DCT系数中相同频率的系数排在一起,如图2.(b)所示的方式。
步骤S400,对前N1个位平面(Bit-plane)进行位平面编码,得到位平面码流(DCT系数按照二进制方式从高到低排列,所有系数的相同的二进制位构成一个位平面)如图3所示,对重排后的DCT系数的前N1个位平面(Bit-plane)进行位平面编码,通过子带编码得到前N1个位平面的编码码流。其中,子带编码方法可以采用JPEG2000标准中的EBCOT算法、EZBC算法或SPIHT算法等编码方法,N1可以取固定常数,例如N1等于5;也可以根据该帧图像的自身特性自适应选取,其公式如下N1=log10T+0.5,其中表示向下取整数,T为当前宏块与前一帧对应位置的宏块之间的绝对差。
步骤S500,对重排前的DCT系数的N1个位平面之后的所有位平面进行编码,得到校验码流;对于得到的所有组DCT系数的N1位平面之后的所有位平面可以按照Turbo Code编码、LDPC编码或IRA编码中的一种方法进行编码,从而得到校验信息码流。
步骤S600,输出位平面码流和校验码流;宏块类型码流、将该宏块的N1位平面码流和校验信息码流共同组成最终的该宏块的编码码流,其码流结构如图4所示,即宏块类型码流最先,然后N1位平面码流,最后是校验信息码流。
在解码端,与上述视频编码方法中相对应的视频解码方法,如图6所示,包括下述步骤对输入的视频编码数据流首先进行码流解析,分析其编码宏块的编码类型1)、如果编码宏块类型为SKIP类型,则将当前宏块的前一帧对应位置处的数据直接拷贝到当前宏块的对应位置处,即不需要进行解码处理;2)、如果编码宏块类型为Intra类型,则按帧内宏块进行解码得到相关的原始视频数据,即熵解码、反量化和4×4DCT反变换等;3)、如果编码宏块类型为Inter类型,则按帧间宏块进行解码得到相关的原始视频数据,其解码过程如图7所示步骤S10,视频输入;输入该宏块的视频编码数据流,其中包括N1位平面码流和校验信息码流。
步骤S20,N1位平面解码;对步骤S10中输入的N1位平面码流进行相应的解码。其解码方法与编码端在步骤S400中进行的编码方法相对应,即如果子带编码方法采用JPEG2000标准中的EBCOT算法,则编码端也采用对应的JPEG2000标准中的EBCOT解码算法进行解码。
步骤S30,对解码后的系数进行重排;对步骤S20中得到的系数进行重排的方法与编码端在步骤S300中采用的重排方法相对应,如图8所示,得到对应的各个重排后的4×4块系数。
步骤S40,对重排后的系数进行反量化和DCT反变换;对步骤S30中得到的各个4×4块系数进行反量化和DCT反变换,从而得到当前宏块的前N1个DCT系数的重构数据。
步骤S50,在参考帧内进行运动估计得到最优参考块;针对步骤S40中得到的当前宏块的前N1个DCT系数的重构数据在参考帧内进行运动估计和运动补偿,运动估计和补偿方法可以是DS、MVFAST等算法,得到此条件下当前宏块的最优参考块。
步骤S60,利用最优参考块中的边信息和视频输入中的校验码流进行校验解码;把步骤S50中得到的最优参考块和步骤S10中输入的校验码流一起送入校验码流解码器(所使用的解码器和在编码端步骤S500中使用的编码方式相对应,如Turbo Code解码器、LDPC解码器码或IRA解码器)进行解码,得到当前宏块N1位平面之后的所有位平面重构数据。
步骤S70,把位平面解码后的重排系数和校验系数进行相加;把位平面解码后的重排系数(步骤S30中得到的各个4×4块系数)和步骤S60中得到的校验系数相加,得到当前宏块的所有位平面的值。
步骤S80,反量化和DCT反变换;对步骤S70中得到当前宏块的所有位平面的值进行反量化和DCT反变换,得到当前宏块的重构数据。
步骤S90,输出得到的当前宏块的重构数据。
需要指出,本发明中针对编码宏块的系数进行的变换是DCT变换,本领域人员可以理解,该变换也可以是其它变换方法,如Hadamard变换、整数变换等。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种视频编码方法,对输入的视频编码数据进行分类编码,包括帧间编码模式和帧内编码模式,其特征在于,在进行帧间编码模式时,包括如下步骤对所述输入帧间编码宏块的系数进行变换和量化,然后对所述量化后的系数按频率进行重排,对所述重排系数的前N1个位平面进行编码,对重排前系数的N1位平面之后的所有位平面进行编码。
2.如权利要求1所述的方法,其特征在于,对所述输入帧间编码宏块的系数进行的变换是离散余弦变换DCT变换。
3.如权利要求2所述的方法,其特征在于,在进行帧间编码模式时,包括具体步骤如下步骤A,将输入的宏块划分为相应的4×4块,并对每一个4×4块系数进行DCT变换和相应的量化;步骤B,对步骤A中得到的量化后的DCT系数进行重排;步骤C,对步骤B中重排后的DCT系数的前N1个位平面进行位平面编码,得到位平面码流;步骤D,对步骤A中得到的量化后的DCT系数的N1个位平面之后的所有位平面进行编码,得到校验码流。
4.如权利要求3所述的方法,其特征在于,所述步骤A中相应的量化,具体指根据码流选择量化尺度进行量化。
5.如权利要求3所述的方法,其特征在于,所述步骤B具体步骤如下步骤B1,对当前宏块中各组量化后的4×4 DCT系数按照ZIAZIG扫描的方式进行扫描,并对扫描后的系数按照频率进行相应的编号;步骤B2,把每组4×4 DCT系数中相同编号的系数排在一起,组成新的宏块系数。
6.如权利要求3所述的方法,其特征在于,所述步骤C中的编码方法采用JPEG2000标准中的EBCOT算法、EZBC算法或SPIHT算法中的一种编码方法。
7.如权利要求3所述的方法,其特征在于,所述步骤C中N1可以选取固定常数或根据该帧图像的自身特性自适应选取N1。
8.如权利要求7所述的方法,其特征在于,所述根据该帧图像的自身特性自适应选取N1具体指采用公式N1=log10T+0.5」,选取N1其中表示向下取整数函数运算符,T为当前宏块与前一帧对应位置的宏块之间像素差的绝对值之和。
9.如权利要求3所述的方法,其特征在于,所述步骤D中编码方法采用TurboCode编码、LDPC编码或IRA编码中的一种编码方法。
10.如权利要求3所述的方法,其特征在于,在所述步骤A之前还包括根据视频图像的运动程度、及视频图像的纹理、细节等因素对输入的图像数据帧进行宏块划分,分成16×16宏块、16×8宏块、8×16宏块或8×8宏块等宏块类型,将划分后的宏块作为帧间编码的输入。
11.如权利要求3所述的方法,其特征在于,在所述步骤D之后还包括将宏块类型码流、步骤C中得到的该宏块N1位平面码流和步骤D中得到的校验信息码流共同组成最终的所述当前宏块的编码码流。
12.如权利要求1所述的方法,其特征在于,对所述输入帧间编码宏块的系数进行的变换是Hadamard变换或整数变换。
13.一种视频解码方法,解析输入的视频解码码流,判断当前宏块的类型,进行相应类型的解码,其特征在于,在进行帧间解码模式时,所述输入的视频解码码流包括N1位平面码流和校验码流,包括如下步骤对所述输入的N1位平面码流进行解码、反量化和反变换,得到N1位平面的重构数据;利用所述N1位平面的重构数据对所述输入的校验码流进行解码,得到当前宏块N1位平面之后的所有位平面重构数据;将所示的两个重构数据合并,并对所述合并后的数据进行反量化和反变换。
14.如权利要求13所述的方法,其特征在于,在进行帧间解码模式时,具体包括如下步骤步骤E,对所述输入的N1位平面码流进行相应的解码,其解码方法与编码端的编码方法相对应;步骤F,对步骤E中解码后的系数进行重排,其重排的方法与编码端采用的重排方法相对应,得到对应的各个重排后的4×4块系数;步骤G,对步骤F中得到的各个4×4块系数进行反量化和反变换,得到当前宏块的前N1位平面的变换系数的重构数据;步骤H,针对步骤G中所述的重构数据在参考帧内进行运动估计和运动补偿,得到此条件下当前宏块的最优参考块;步骤I,把步骤H中得到的最优参考块和所述输入的校验码流一起送入校验码流解码器进行解码,得到当前宏块N1位平面之后的所有位平面重构数据;步骤J,把步骤F得到的重排系数和步骤I中得到的当前宏块N1位平面之后的所有位平面重构数据进行合并,并对所述合并后的数据进行反量化和反变换。
15.如权利要求14所述的方法,其特征在于,所述步骤I中的解码器和在编码端中使用的编码器相对应,包括Turbo Code解码器、LDPC解码器码或IRA解码器。
16.一种帧间编码方法,其特征在于,包括如下步骤步骤A,将输入的宏块划分为相应的4×4块,并对每一个4×4块系数进行变换和相应的量化;步骤B,对步骤A中得到的量化后的变换系数进行重排;步骤C,对步骤B中重排后的变换系数的前N1个位平面进行位平面编码,得到位平面码流;步骤D,对步骤A中得到的量化后的变换系数的N1个位平面之后的所有位平面进行编码,得到校验码流。
17.一种帧间解码方法,其特征在于,输入的视频解码码流包括N1位平面码流和校验码流,包括如下步骤步骤E,对所述输入的N1位平面码流进行相应的解码,其解码方法与编码端的编码方法相对应;步骤F,对步骤E中解码后的系数进行重排,其重排的方法与编码端采用的重排方法相对应,得到对应的各个重排后的4×4块系数;步骤G,对步骤F中得到的各个4×4块系数进行反量化和反变换,得到当前宏块的前N1位平面的变换系数的重构数据;步骤H,针对步骤G中所述的重构数据在参考帧内进行运动估计和运动补偿,得到此条件下当前宏块的最优参考块;步骤I,把步骤H中得到的最优参考块和所述输入的校验码流一起送入校验码流解码器进行解码,得到当前宏块N1位平面之后的所有位平面重构数据;步骤J,把步骤F得到的重排系数和步骤I中得到的当前宏块N1位平面之后的所有位平面重构数据进行合并,并对所述合并后的数据进行反量化和反变换。
全文摘要
本发明公开了一种视频编码方法,涉及多媒体通信领域的视频压缩编解技术,用以降低视频编码端的信息冗余,从而提高视频编码的效率和视频通信效果。本发明的视频编码方法,在进行帧间编码模式时,包括如下步骤对所述输入帧间编码宏块的系数进行变换和量化,然后对所述量化后的系数按频率进行重排,对所述重排系数的前N
文档编号H04N7/26GK101083767SQ200610060998
公开日2007年12月5日 申请日期2006年5月30日 优先权日2006年5月30日
发明者丁贵广, 熊联欢 申请人:华为技术有限公司, 清华大学