CN1842163A - 一种实现视频压缩及解压缩的方法 - Google Patents
一种实现视频压缩及解压缩的方法 Download PDFInfo
- Publication number
- CN1842163A CN1842163A CN 200510056886 CN200510056886A CN1842163A CN 1842163 A CN1842163 A CN 1842163A CN 200510056886 CN200510056886 CN 200510056886 CN 200510056886 A CN200510056886 A CN 200510056886A CN 1842163 A CN1842163 A CN 1842163A
- Authority
- CN
- China
- Prior art keywords
- matrix
- data
- conversion
- line data
- line
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种实现视频压缩的方法,该方法首先将待压缩象素块所对应的矩阵逐行装入并行处理器的寄存器;并通过并行处理器对所述矩阵进行水平变换,得到水平变换后的矩阵;之后对水平变换得到的矩阵进行垂直变换,得到象素块压缩后的矩阵信息。本发明同时还公开了两种实现视频解压缩的方法。本发明方案通过利用并行处理器进行整数变换及逆变换,减小了视频压缩/解压缩过程中的数学运算量,从而减小了视频压缩/解压缩过程中的处理时间,在用户端大幅降低了CPU的占用,保证了用户端其他应用软件的正常运行。
Description
技术领域
本发明涉及视频压缩技术领域,更确切地说是涉及在视频压缩中实现视频压缩以及解压缩的方法。
背景技术
目前,最新的视频压缩标准H.26L和H.264都是基于整数变换算法的。由于整数变换算法是基于浮点的运算,不适合实时运算的要求,因此无法直接在视频编码领域中应用。为应用整数变换算法,关键的一个步骤是将实数转换为整数进行运算,目前已实现了实数到整数的转换。
现在大多数的图像/视频编码标准都是使用8×8整数变换,为获得更高的编码效率,H.264选择了更小的数据单元,即4×4象素块。针对4×4象素块的整数变换算法,目前比较常用的方法是制定一个4×4变换的集合,该集合能将9位残留数据在16位算法中进行计算,并且该变换不需要进行乘法运算,只需要进行加法、减法运算和最少量的移位运算。
对于4×4的象素块来说,通过整数变换可以将其转换为一个小于16位的数据,显然这就达到了视频压缩的效果;相应地,再通过整数逆变换将该小于16位的数据转换为4×4的象素块,从而实现了将视频压缩后的数据进行还原。
但上述针对4×4象素块的整数变换方法并没有充分利用现有的计算资源,比如,在PC和数字信号处理器(DSP)中进行整数变换时,没有利用PC和DSP中并行处理器的优势,因此没有从最大程度上减少整数变换的运算量。
发明内容
有鉴于此,本发明所要解决的主要问题在于提供一种实现视频压缩的方法,以在实现对视频数据压缩的同时,减少整数变换的数据运算量。
本发明所要解决的另一个问题在于提供两种实现视频解压缩的方法。
为解决以上问题,本发明提供了下述技术方案:
一种实现视频压缩的方法,该方法包括以下步骤:
a.将待压缩象素块所对应的矩阵逐行装入并行处理器的寄存器;
b.通过并行处理器对所述矩阵进行水平变换,得到水平变换后的矩阵;
c.对水平变换得到的矩阵进行垂直变换,得到象素块压缩后的矩阵信息。
所述步骤c中,所述对水平变换得到的四行数据进行垂直变换为:将通过水平变换得到的矩阵与整数变换常数的逆矩阵进行矩阵乘法运算。
所述步骤c中,所述对水平变换得到的四行数据进行垂直变换为:对通过水平变换得到的矩阵进行转置,将转置后的矩阵逐行装入并行处理器的寄存器,之后再通过水平变换的处理对转置得到的矩阵进行变换。
所述步骤c中,在通过水平变换的处理对转置得到的矩阵进行变换后,进一步包括:对变换得到的矩阵再进行转置。
所述水平变换处理包括以下步骤:
11)通过并行处理器对矩阵的第一行与第四行数据,以及第二行与第三行数据分别相加,并对矩阵的第二行与第三行数据,以及第一行与第四行数据分别相减,得到计算后的四行数据;
12)对步骤11)计算得到的第一行和第二行数据进行相加以及相减,将得到的结果作为变换后的矩阵的第一行和第三行数据;
13)左移步骤11)计算得到的第三行和第四行数据,将移位后的第三行数据与步骤11)计算得到的第二行数据相加,将相加的结果作为变换后的矩阵的第二行数据,并将移位后的第四位数据与步骤11)计算得到的第一行数据相减,将得到的结果作为变换后的矩阵的第四行数据。
一种实现视频解压缩的方法,视频压缩时通过整数变换得到的矩阵为系数矩阵,该方法包括以下步骤:
A1、将待解压缩象素块所对应的矩阵逐行装入并行处理器的寄存器;
B1、通过并行处理器对所述矩阵进行水平变换,得到水平变换后的矩阵;
C1、对上述步骤变换得到的矩阵进行垂直变换,得到象素块解压缩后的矩阵信息。
所述步骤C1中,所述对变换得到的数据进行垂直变换为:将通过水平变换得到的矩阵与整数逆变换常数的逆矩阵进行矩阵乘法运算。
所述步骤C1中,所述对变换得到的数据进行垂直变换为:对通过水平变换得到的矩阵进行转置,并将转置后的矩阵逐行装入并行处理器的寄存器,之后按照水平变换的处理对转置得到的矩阵进行变换。
所述步骤C1中,在按照步骤水平变换的处理对转置得到的矩阵进行变换后,进一步包括:对变换得到的矩阵再进行转置。
所述水平变换处理包括以下步骤:
21)通过并行处理器对矩阵的第一行与第三行数据进行相加及相减;
22)将矩阵的第一行与第三行数据右移一位,将移位后的第一行数据与第四行数据相加,并将第二行数据与移位后的第三行数据相减;
23)将步骤21)相加得到的数据与步骤22)相减得到的数据分别进行相加及相减,将相加及相减得到的数据分别作为变换后的矩阵的第一行及第四行数据,将步骤21)相减得到的数据与步骤22)相加得到的数据分别进行相加及相减,将相加及相减得到的数据分别作为变换后的矩阵的第二行及第三行数据。
另一种实现视频解压缩的方法,视频压缩时通过整数变换得到的矩阵为系数矩阵的转置矩阵,该方法包括以下步骤:
A2、对整数逆变换常数与系数矩阵转置进行矩阵乘法运算;
B2、对乘法运算得到的矩阵进行转置;
C2、再对整数逆变换常数与转置后的矩阵进行矩阵乘法运算,得到象素块解压缩后的矩阵信息。
本发明方案通过利用并行处理器进行整数变换,减小了视频压缩过程中的数学运算量,从而减小了视频压缩的处理时间。
本发明方案还通过利用并行处理器进行整数逆变换,减小了视频解压缩过程中的数学运算量,从而减小了视频解压缩的处理时间。
另外,本发明方案还提出了基于整数变换得到的YT进行整数逆变换,从而实现视频解压缩的方案,进一步减小了视频解压缩的处理时间,在用户端大幅降低了CPU的占用,保证了用户端其他应用软件的正常运行。
附图说明
图1为本发明方案实现整数水平变换的处理流程图;
图2为目前的Z字型扫描模式示意图;
图3为本发明方案针对YT的Z字型扫描模式示意图;
图4为本发明方案实现整数水平逆变换的处理流程图。
具体实施方式
由于PC和DSP等中设有用于进行浮点运算的处理器,并且该处理器可以用于并行运算,将这样的处理器称为并行处理器,因此本发明方案主要就是利用该并行处理器进行整数变换及逆变换,从而实现视频压缩及解压缩的。
下面结合附图及具体实施例对本发明方案作详细说明。
首先对针对4×4象素块的2维整数变换进行详细描述。
假设4×4象素块为矩阵X,且该矩阵X为
,D为常数,具体为
,DT为矩阵D的变换,具体为
,需要
对该矩阵X作的变换为:
从数学上,该二维变换可以描述为Y=DXDT,即等价于两个过程:第一步,H=DX;第二步,Y=HDT。通常可以将第一步看作水平变换,将第二步看作垂直变换。
另外,由于并行处理器有64位,因此可以基于并行处理器分别实现上述两步运算。下面首先对第一步处理可以执行的具体过程进行说明,该过程如图1所示,对应以下步骤:
步骤101、可以将该矩阵X的4行数据分别装载在并行处理器的4个64位寄存器中,将这4个寄存器称为r0、r1、r2和r3。
步骤102、由于并行处理器可以执行并行运算,因此可以通过并行加法和并行减法组成4个新的矢量,这4个矢量分别为m0、m1、m2和m3,且m0=r0+r3;m1=r1+r2;m2=r1-r2;m3=r0-r3。
步骤103、根据m0和m1生成矩阵H的第一行和第三行,具体为:r0=m0+m1;r2=m0-m1。
步骤104、分别将m2和m3左移一位。
步骤105、通过左移后的m2、m3以及原有的m0和m1生成矩阵H的第二行和第四行,具体为:r1=m2+m1;r3=m3-m0。
通过上述五个步骤,即可得到H,也即完成了水平变换。
之所以通过上述步骤能够完成水平变换,是因为:假如按照上述等式Y=DXDT以及标准的矩阵乘法,H=DX的第一行应为[x00+x10+x20+x30 x01+x11+x21+x31 x02+x12+x22+x32 x03+x13+x23+x33]。对于并行计算来说,将其描述为矢量计算非常重要,基于矢量计算,该矩阵H的第一行h0显然可以被描述为:h0=X0+X1+X2+X3,类似地,该矩阵H的其他行h1、h2及h3分别为:
h1=2X0+X1-X2-2X3=2(X0-X3)+(X1-X2);
h2=X0-X1-X2+X3=X0+X3-(X1+X2);
h3=X0-2X1+2X2-X3=X0-X3-2(X1-X3)。
由此可以看出,矩阵H可以通过在矢量X0+X3,X0-X3,X1+X2和X1-X2之间进行加减获得,因此按照图1所示处理可以得到矩阵H。
在得到水平变换后的矩阵H后,还需要进行垂直变换,以得到Y=HDT。显然,可以采用常规方案获得Y=HDT。为进一步减少计算时间,本发明提供了另一种实现方案,该方案具体来说,可以首先对H作转置操作,得到HT,之后再计算Z=DHT的值,具体的计算步骤与图1所示步骤相同。因此,通过针对DHT的计算将垂直变换转换为水平变换了。
在得到Z=DHT后,由于Z=DHT=D(DX)T=DXTDT=(DXDT)T=YT,因此即可得到矩阵Y的逆矩阵YT,如果希望得到Y,则可以通过对Z,也即对YT做更多的转置操作实现。由于对于处理与H.264视频编码的变换系数相关的运算来说,YT已足够使用了,并且使用YT可以减少整数逆变换过程中的计算量,因此可以不用再对YT进行相应的处理。
之所以说YT已足够使用了,是因为编码端在得到4×4整数变换系数后,对于该4×4变换系数需要做两种工作:一种工作是量化系数,并通过Z字型扫描重组成一维序列,然后使用熵编码方法将其编码成比特流;另一种工作是对量化后的系数进行整数逆变换,以导出重构后的象素值。对于上述第一种工作来说,如果是通过以前方案得到的普通系数矩阵Y,针对该矩阵的Z字型扫描模式如图2所示,如果希望基于YT的系数获得针对Y的一维序列,则只需改变Z字型扫描模式,具体可以采用图3所示的扫描模式,即可扫描重组出针对Y的一维序列,并且这种新的扫描模式不会增加系数编码的复杂性。对于上述第二种工作,则可以通过本发明所提供的整数逆变换方法进行处理,而本发明所提供的两种整数逆变换方案中的一种方案需要的正是YT。
以上对通过整数变换进行视频压缩的方案进行了描述,下面再对通过整数逆变换进行视频解压缩的方案进行描述。
整数逆变换的一般表达式为X=BYBT,具体如下:
与整数变换的处理过程相同,整数逆变换同样可以分为水平变换和垂直变换。其中,整数逆变换的水平变换,即矩阵乘法F=BY能够并行处理,具体可以通过图4所示的处理过程实现F=BY,该处理包括下述5个步骤:
步骤401、矩阵Y的4行数据被输入并行处理器的4个64位寄存器r0、r1、r2和r3。
步骤402、通过并行加法和减法构成2个新的矢量,即m0和m1,其中,m0=r0+r2,m1=r0-r2。
步骤403、将矩阵Y的第一行和第三行右移一位,并将结果输入寄存器r0和r2,也即r0=r1>>1;r2=r3>>1。
步骤404、再通过并行加法和减法构成2个新的矢量,即m2和m3,其中,m2=r0+r3,m3=r1-r2。
步骤405、对m0、m1、m2和m3进行并行加法和减法,即r0=m0+m3,r1=m1+m2,r2=m1-m2,r3=m0-m3,从而得到最终的水平变换结果,即矩阵F。
之所以通过图4所示处理能够得到矩阵F,是因为:假如按照上述等式X=BYBT以及标准的矩阵乘法,F=BY的第一行的矢量描述是f0=Y0+Y1+Y2+Y3/2=(Y0+Y2)+(Y1+Y3/2),类似地,其他行的矢量描述分别为:
f1=Y0+Y1/2-Y2-Y3=(Y0-Y2)+(Y1/2-Y3);
f2=Y0-Y1/2-Y2+Y3=Y0-Y2-(Y1/2-Y3);
f3=Y0-Y1+Y2-Y3/2=Y0+Y2-(Y1+Y3/2)。
由此可以看出,矩阵F可以通过在矢量Y0+Y2,Y0-Y2,Y1/2+Y2和Y1+Y3/2之间进行加减获得,因此按照图4所示处理可以得到矩阵F。
在实现了整数逆变换的水平变换之后,还需要进行垂直变换。为了对垂直变换进行并行运算,需要对水平变换得到的矩阵F进行转置处理,然后再计算BFT。完整的垂直变换处理过程如下:
W=BFT=B(BY)T=BYTBT=(BXBT)T=XT。
也就是说,为完成整数逆变换,在通过水平变换得到矩阵F后,还需要通过转置得到矩阵F的转置矩阵FT,然后再通过矩阵乘法得到BFT,从而得到XT。其中,在得到FT之后,为得到BFT,还可以采用图4所示的水平变换进行处理。在得到XT后,为得到X,还需要在W上作更多的转置操作。
上述方案虽然通过水平变换和垂直变换实现了整数逆变换,但这需要较多的操作才能实现,具体来说,首先需要通过水平变换得到F,还需要执行从F到FT的转置,以及从XT到X的转置,因此这种方案需要浪费较多的处理时间。
由此,本发明还提出了另一种整数逆变换处理方案,该方案是基于整数变换中得到的YT实现的。具体来说,如果整数逆变换中可用的输入不是Y,而是Z=YT,由于B(BZ)T=B(BYT)T=BYBT=X,因此只需要执行下述三步运算就可以求得X:
第一步:进行矩阵乘法运算,得到BZ;
第二步:对BZ进行转置,得到S=(BZ)T;
第三步:进行矩阵乘法运算BS。
显然,相比于之前的操作,根据YT实现整数逆变换的操作可以节省较多的处理时间。
本发明所提供的后一种整数逆变换方案并不把整数变换和整数逆变换看作是互不相关的两个孤立的进程。它并不要求将变换的结果处理成普通的整数变换那样。如果采用Y进行处理,则需要对Y进行转置,得到YT,再对YT进行变换以及逆变换,之后再转置成Y,显然,这需要进行两次转置,而如果直接使用YT,则将在编码端节省两倍的转置操作时间。这实际上还意味着解码端接收Y转置操作的优化,因为解码端接受的不是Y,而是Y的转置,这样就可以直接计算得到X,因此解码端进行转置操作的时间还将减少一半。
另外,在这种情况下,由于需要得到的就是YT,因此编码端不必改变Z字型扫描模式。而对Y变换进行的编码将既不会影响编码效率也不会增加编码的复杂性,因为在统计上,它与对Y本身编码等价。
以上所述仅为本发明方案的较佳实施例,并不用以限定本发明的保护范围。
Claims (11)
1、一种实现视频压缩的方法,其特征在于,该方法包括以下步骤:
a.将待压缩象素块所对应的矩阵逐行装入并行处理器的寄存器;
b.通过并行处理器对所述矩阵进行水平变换,得到水平变换后的矩阵;
c.对水平变换得到的矩阵进行垂直变换,得到象素块压缩后的矩阵信息。
2、根据权利要求1所述的方法,其特征在于所述步骤c中,所述对水平变换得到的四行数据进行垂直变换为:将通过水平变换得到的矩阵与整数变换常数的逆矩阵进行矩阵乘法运算。
3、根据权利要求1所述的方法,其特征在于所述步骤c中,所述对水平变换得到的四行数据进行垂直变换为:对通过水平变换得到的矩阵进行转置,将转置后的矩阵逐行装入并行处理器的寄存器,之后再通过水平变换的处理对转置得到的矩阵进行变换。
4、根据权利要求3所述的方法,其特征在于所述步骤c中,在通过水平变换的处理对转置得到的矩阵进行变换后,进一步包括:对变换得到的矩阵再进行转置。
5、根据权利要求1至4中任意一项所述的方法,其特征在于,所述水平变换处理包括以下步骤:
11)通过并行处理器对矩阵的第一行与第四行数据,以及第二行与第三行数据分别相加,并对矩阵的第二行与第三行数据,以及第一行与第四行数据分别相减,得到计算后的四行数据;
12)对步骤11)计算得到的第一行和第二行数据进行相加以及相减,将得到的结果作为变换后的矩阵的第一行和第三行数据;
13)左移步骤11)计算得到的第三行和第四行数据,将移位后的第三行数据与步骤11)计算得到的第二行数据相加,将相加的结果作为变换后的矩阵的第二行数据,并将移位后的第四位数据与步骤11)计算得到的第一行数据相减,将得到的结果作为变换后的矩阵的第四行数据。
6、一种实现视频解压缩的方法,视频压缩时通过整数变换得到的矩阵为系数矩阵,其特征在于,该方法包括以下步骤:
A1、将待解压缩象素块所对应的矩阵逐行装入并行处理器的寄存器;
B1、通过并行处理器对所述矩阵进行水平变换,得到水平变换后的矩阵;
C1、对上述步骤变换得到的矩阵进行垂直变换,得到象素块解压缩后的矩阵信息。
7、根据权利要求6所述的方法,其特征在于所述步骤C1中,所述对变换得到的数据进行垂直变换为:将通过水平变换得到的矩阵与整数逆变换常数的逆矩阵进行矩阵乘法运算。
8、根据权利要求6所述的方法,其特征在于所述步骤C1中,所述对变换得到的数据进行垂直变换为:对通过水平变换得到的矩阵进行转置,并将转置后的矩阵逐行装入并行处理器的寄存器,之后按照水平变换的处理对转置得到的矩阵进行变换。
9、根据权利要求8所述的方法,其特征在于所述步骤C1中,在按照步骤水平变换的处理对转置得到的矩阵进行变换后,进一步包括:对变换得到的矩阵再进行转置。
10、根据权利要求6至9中任意一项所述的方法,其特征在于,所述水平变换处理包括以下步骤:
21)通过并行处理器对矩阵的第一行与第三行数据进行相加及相减;
22)将矩阵的第一行与第三行数据右移一位,将移位后的第一行数据与第四行数据相加,并将第二行数据与移位后的第三行数据相减;
23)将步骤21)相加得到的数据与步骤22)相减得到的数据分别进行相加及相减,将相加及相减得到的数据分别作为变换后的矩阵的第一行及第四行数据,将步骤21)相减得到的数据与步骤22)相加得到的数据分别进行相加及相减,将相加及相减得到的数据分别作为变换后的矩阵的第二行及第三行数据。
11、一种实现视频解压缩的方法,视频压缩时通过整数变换得到的矩阵为系数矩阵的转置矩阵,其特征在于,该方法包括以下步骤:
A2、对整数逆变换常数与系数矩阵转置进行矩阵乘法运算;
B2、对乘法运算得到的矩阵进行转置;
C2、再对整数逆变换常数与转置后的矩阵进行矩阵乘法运算,得到象素块解压缩后的矩阵信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510056886 CN1842163A (zh) | 2005-03-28 | 2005-03-28 | 一种实现视频压缩及解压缩的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510056886 CN1842163A (zh) | 2005-03-28 | 2005-03-28 | 一种实现视频压缩及解压缩的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1842163A true CN1842163A (zh) | 2006-10-04 |
Family
ID=37030984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200510056886 Pending CN1842163A (zh) | 2005-03-28 | 2005-03-28 | 一种实现视频压缩及解压缩的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1842163A (zh) |
-
2005
- 2005-03-28 CN CN 200510056886 patent/CN1842163A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4874642B2 (ja) | ロッシーおよびロスレス2dデータ圧縮のための可逆な変換 | |
CN1409558A (zh) | 图像和视频编码用的改进的块变换和量化 | |
CN1126065C (zh) | 压缩和解压缩图象 | |
CN1565083A (zh) | 减少位深的量子化方法 | |
CN1805547A (zh) | 用于高效无损数据压缩的可逆重叠算子 | |
CN1455599A (zh) | 图像和视频编码的2-d变换 | |
CN1697328A (zh) | 快速视频编解码变换实现 | |
CN1286322C (zh) | 一种低复杂度整数4×4离散余弦变换量化实现方法 | |
CN108200439B (zh) | 提高数字信号变换性能的方法及数字信号变换方法和装置 | |
CN1193621C (zh) | 调整计算复杂度的方法、对离散余弦反变换进行近似计算的方法和一种解码器 | |
CN1169072C (zh) | 流水线离散余弦变换设备 | |
CN1315023A (zh) | 在图像处理期间执行二维变换的电路和方法 | |
Shahbahrami | Algorithms and architectures for 2D discrete wavelet transform | |
CN1665302A (zh) | 图像处理方法及图像处理装置 | |
CN1926860A (zh) | 用于降低量化噪声传播效应的最佳空域-时域变换 | |
CN1816144A (zh) | 一种二维离散余弦变换装置及方法 | |
CN1842163A (zh) | 一种实现视频压缩及解压缩的方法 | |
CN1889690A (zh) | 运用于图像编码和视频编码的离散余弦变换方法 | |
CN1209926C (zh) | 运用于图像编码和视频编码的整数变换方法和装置 | |
CN1758758A (zh) | 可变换或逆变换不同大小的块的变换或逆变换方法和设备 | |
CN1947346A (zh) | 正交归一时空变换的基于提升的实现方式 | |
CN206962992U (zh) | 用于数字视频编解码的3乘3整数dct变换量化器 | |
CN1533183A (zh) | 一种视频图象编码方法 | |
CN1259630C (zh) | 用于编码处理的4输入/输出的整数变换/反变换方法 | |
CN1266650C (zh) | 基于数字信号处理器的整数小波变换方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20061004 |