CN102404569B - 可用于多种视频标准、多尺寸二维整数余弦反变换的通用方法 - Google Patents
可用于多种视频标准、多尺寸二维整数余弦反变换的通用方法 Download PDFInfo
- Publication number
- CN102404569B CN102404569B CN201110350154.XA CN201110350154A CN102404569B CN 102404569 B CN102404569 B CN 102404569B CN 201110350154 A CN201110350154 A CN 201110350154A CN 102404569 B CN102404569 B CN 102404569B
- Authority
- CN
- China
- Prior art keywords
- discrete cosine
- input
- group
- matrix
- result
- 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.)
- Active
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明属于数字视频信号编解码技术领域,具体为一种可用于多种视频标准、多尺寸二维整数余弦反变换的通用方法。本方法通过配置常系数乘法器的系数值可支持多种不同的视频编码标准并同时支持四种不同的变换尺寸:4x4、8x8、16x16、32x32。本发明首先将二维离散余弦反变换分解为两次一维离散余弦反变换,在计算4点一维离散余弦反变换时,采用传统的蝶形运算方法减少运算量,加快计算速度;对于8点、16点、32点的一维离散余弦反变换,采用改进的蝶形运算方法,使得较小尺寸的一维离散余弦反变换单元可以在计算较大尺寸的一维离散余弦反变换时能够得到复用,从而大幅降低整个系统的硬件资源开销。
Description
技术领域
本发明属于数字视频信号编解码技术领域,具体涉及一个可用于多种视频标准、可支持变换尺寸为4x4、8x8、16x16和32x32的二维整数离散余弦反变换的通用方法。
背景技术
随着视频编码技术的发展,越来越多的视频编码标准进入了应用领域: VCD/DVD视频光盘中普通采用MPEG-1/MPEG-2视频标准,蓝光光盘中采用H.264标准或VC-1标准,网络视频中普遍采用RealVideo或MPEG-4标准,而AVS视频标准已经成为中国的国家标准。很多新的标准如H.265/HEVC(High Efficiency Video Coding)等也在制定当中。
由于离散余弦变换能够对频域上的能量进行有效地集中,便于进一步压缩处理,所以现有的视频编码标准绝大多数都采用了离散余弦变换对视频信号进行处理。传统的MPEG-1、MPEG-2视频标准中采用的是浮点离散余弦变换,由于数字信号处理时需要对浮点数截位,从而容易导致变换前后数据的失配问题,所以新一代标准如H.264、VC-1、AVS等标准普遍采用整数离散余弦变换。
由于当前多种标准并存的格局将长期存在,支持多种视频标准是当前编解码技术中的重要研究领域,有着迫切的实际需求。各种视频标准中二维离散余弦变换的尺寸大小有所不同。对于画面比较平坦的视频场景,较大的变换尺寸能够提高编码压缩效率。但是大的变换尺寸也使得运算复杂度大大增加。MPEG-1/MPEG-2/MPEG-4中采用的尺寸是8x8;H.264和VC-1采用的尺寸是4x4和8x8;而正在制定当中的最新视频标准HEVC采用的变换尺寸有4种:4x4、8x8、16x16和32x32。为了更好的支持多标准编解码技术,有必要采取一种通用的架构来实现各种不同尺寸的整数离散余弦变换。
发明内容
本发明的目的在于提出一个可用于多种视频标准、多尺寸二维整数离散余弦反变换的通用方法。
各种不同的视频标准规定了不同的变换尺寸和变换系数矩阵,但是由于这些变换都是基于离散余弦变换衍生而来的,不同的变换尺寸和变换系数矩阵之间有很多相似之处。本发明充分利用了这种相关性,进而提出了一种通用的变换方法,可以提高硬件复用程度,降低运算复杂度。
本发明提出的方法具体可以分为如下6个步骤:
(1)根据离散余弦反变换的特性,将一个二维整数离散余弦反变换转换为两次一维整数离散余弦反变换,即先进行水平方向的一维反变换,然后再进行垂直方向的一维反变换;
(2)根据4x4、8x8、16x16和32x32四种不同的变换尺寸,将输入的32个系数:Y00-Y31分为四组,为每一组设计相应的多输出常系数乘法器:MCM0、MCM1、MCM2和MCM3;通过对乘法器系数进行配置,即可实现对各种不同视频标准的支持;
(3)设计四组运算模块:B4x4、D4x4、D8x8和D16x16,对多输出常系数乘法器的输出进行处理;其中,B4x4模块为4点的蝶形运算模块,D4x4模块为4点的加法树模块,D8x8模块为8点的加法树模块,D16x16为16点的加法树模块;B4x4模块的输出即为4点一维整数离散余弦反变换的结果;
(4)对B4x4和D4x4模块的输出,进行8点的蝶形运算,其结果即为8点一维整数离散余弦反变换的结果;
(5)对8点蝶形运算的输出和D8x8模块的输出进行16点的蝶形运算,其结果即为16点一维整数离散余弦反变换的结果;
(6)对16点蝶形运算的输出和D16x16模块的输出进行32点的蝶形运算,其结果即为32点一维整数离散余弦反变换的结果。
本发明的有益效果:
从上述步骤可以看到,本发明实现了用于计算小尺寸二维整数离散余弦反变换的运算单元可以完全复用到更大尺寸的二维整数离散余弦反变换的运算过程中,从而有效地降低了整体的运算复杂度和硬件实现成本。
本发明方法可以同时支持多种视频标准、多种变换尺寸(4x4、8x8、16x16和32x32)的二维整数余弦反变换。如果在将来需要支持更多新的视频标准,只需要对相应的多输出常系数乘法器(MCM0、MCM1、MCM2和MCM3)做相应改动即可,其它模块如蝶形运算模块和加法树模块可保持不变,因而本方法具有很好的可扩展性,可以适应不断发展中的各种新兴视频编解码技术。
附图说明
图1:两维离散整数余弦反变换的整体框图。
图2:4点、8点、16点和32点一维离散整数余弦反变换的整体框图。
图3:多输出常系数乘法器MCM0的框图。
图4:多输出常系数乘法器MCM1的框图。
图5:多输出常系数乘法器MCM2的框图。
图6:多输出常系数乘法器MCM3的框图。
图7:4点蝶形运算模块(B4x4)的框图。
图8:4点加法树模块(D4x4)的框图。
图9:8点加法树模块(D8x8)的框图。
图10:16点加法树模块(D16x16)的框图。
具体实施方式
下面结合附图对本发明做进一步的描述。
本发明提出了一个适用于多种视频标准、多尺寸二维整数余弦反变换的通用方法,其具体实施方式如下述的6个步骤:
(1)将一个二维整数离散余弦反变换转换为两次一维整数离散余弦反变换。
二维整数离散余弦反变换可以用如下公式表示:
X = CT*Y*C (1)
其中,Y为需要进行二维整数离散余弦反变换的输入矩阵,C代表整数离散余弦变换的系数矩阵,*代表矩阵乘法,CT代表C的转置矩阵,X代表二维整数离散余弦反变换的计算结果。对应于四种不同的变换尺寸,本发明中矩阵C、X、Y的大小可以分别为4x4、8x8、16x16和32x32。
根据矩阵运算的性质,对公式(1)进行变换可得:
X= ((Y*C)T * C)T (2)
如果令
D=(Y*C)T, (3)
那么
X = (D*C)T (4)
这样二维整数离散余弦反变换就可以转换为两次一维整数离散余弦反变换。公式(3)表示先对矩阵Y的每一行的所有系数进行一维整数离散余弦反变换并将变换结果得到的矩阵进行转置操作,此步骤称为行变换操作。公式(4)表示对矩阵D再进行一次一维整数离散余弦反变换并将此变换结果再次进行转置操作,此步骤称为列变换操作,其运算结果就是矩阵X,即为二维整数离散余弦反变换的运算结果。
根据离散余弦反变换的特性,32x32点整数离散余弦反变换的变换矩阵C32X32可以表示为一个大小为32x32的矩阵,它可以分割为4个16x16的矩阵,分别为K0、K1、K2、K3,C32X32可表示如下:
其中,矩阵K0具体表示如下:
矩阵K1具体表示如下:
矩阵K2具体表示如下:
矩阵K3具体表示如下:
较小尺寸(4x4、8x8、16x16)整数离散余弦反变换的变换矩阵可以由变换矩阵C32 X32的各个系数组合而成,可以将这三个矩阵分别用C4X4、C8X8和C16X16来表示。变换矩阵C16X16的系数取值如下所示:
变换矩阵C8X8的系数取值如下所示:
变换矩阵C4X4的系数取值如下所示:
整个二维整数离散余弦反变换的实现框图如图2所示, 图中的圆圈代表两个数相加的加法,连线下方的“-”代表将输入的加数取负值。行变换和列变换操作可以共用同一个一维整数离散余弦反变换模块,提高了系统的复用性,降低了整个系统的实现成本。本步骤具体介绍了将二维整数离散余弦反变换变成两个一维整数离散余弦反变换的方法。随后的第2-6步骤具体介绍一维整数离散余弦反变换的实现方法。
(2)采用多输出常系数乘法器对输入的待变换系数进行乘法操作。
对于32点一维整数离散余弦反变换,令输入的待变换向量Y32为:
Y32 = [ Y00,Y01,Y02,Y03,Y04,Y05,Y06,Y07,Y08,Y09,Y10,Y11,Y12,Y13,Y14,Y15,
Y16,Y17,Y18,Y19,Y20,Y21,Y22,Y23,Y24,Y25,Y26,Y27,Y28,Y29,Y30,Y31]
将向量Y32的32个待变换系数分为四组:第一组为Y00、Y16、Y08、Y24,第二组为Y04、Y20、Y12、Y28,第三组为Y02、Y18、Y10、Y26、Y06、Y22、Y14、Y30,第四组为Y01、Y17、Y09、Y25、Y05、Y21、Y13、Y29、Y03、Y19、Y11、Y27、Y07、Y23、Y15、Y31 ;第一组的四个系数作为多输出常系数乘法器MCM0的输入,第二组的四个系数作为多输出常系数乘法器MCM1的输入,第三组的八个系数作为多输出常系数乘法器MCM2的输入,第四组的十六个系数作为多输出常系数乘法器MCM3的输入。
对于16点一维整数离散余弦反变换,令输入的待变换向量Y16为:
Y16 = [ Y00,Y02,Y04,Y06,Y08,Y10,Y12,Y14,Y16,Y18,Y20,Y22,Y24,Y26,Y28,Y30]
将向量Y16的16个待变换系数分为三组:第一组为Y00、Y16、Y08、Y24,第二组为Y04、Y20、Y12、Y28,第三组为Y02、Y18、Y10、Y26、Y06、Y22、Y14、Y30 ;第一组的四个系数作为多输出常系数乘法器MCM0的输入,第二组的四个系数作为多输出常系数乘法器MCM1的输入,第三组的八个系数作为多输出常系数乘法器MCM2的输入,多输出常系数乘法器MCM3的输入全部取0。
对于8点一维整数离散余弦反变换,令输入的待变换向量Y8为:
Y8 = [ Y00,Y04,Y08,Y12,Y16,Y20,Y24,Y28]
将向量Y8的8个待变换系数分为两组:第一组为Y00、Y16、Y08、Y24,第二组为Y04、Y20、Y12、Y28 ;第一组的四个系数作为多输出常系数乘法器MCM0的输入,第二组的四个系数作为多输出常系数乘法器MCM1的输入,多输出常系数乘法器MCM2和MCM3的输入全部取0。
对于4点一维整数离散余弦反变换,令输入的待变换向量Y4为:
Y4 = [ Y00,Y08,Y16,Y24]
向量Y4的4个待变换系数作为多输出常系数乘法器MCM0的输入,多输出常系数乘法器MCM1、MCM2和MCM3的输入全部取0。
图3、4、5、6分别是多输出常系数乘法器MCM0、MCM1、MCM2和MCM3的内部结构框图。图3、4、5、6中的各个常系数Ci,j(0≤i≤31, 0≤j≤31),即为变换矩阵C4、C8、C16、C32中的变换系数。对于某一个特定的视频标准,MCM0模块需要计算四组常系数乘法的结果:第一组为C00*Y00,图3中记为P0;第二组为C00*Y16和-C00*Y16,将2个结果整合为一个数组,图3中记为P1;第三组为C24*Y08和C08*Y08,将2个结果整合为一个数组,图3中记为P2;第四组为-C08*Y24和C24*Y24,将2个结果整合为一个数组,图3中记为P3。
同理,MCM1模块需要计算四组常系数乘法的结果:第一组为C04*Y04、C12*Y04、C20*Y04和C28*Y04,将4个结果整合为一个数组,图4中记为P4;第二组为C20*Y20、-C04*Y20、C28*Y20和C12*Y20,将4个结果整合为一个数组,图4中记为P5;第三组为C12*Y12、-C28*Y12、-C04*Y12和-C20*Y12,将4个结果整合为一个数组,图4中记为P6;第四组为-C08*Y24和C24*Y24,将4个结果整合为一个数组,图4中记为P7。
MCM2模块需要计算八组常系数乘法的结果:第一组为C02*Y02、C06*Y02、C10*Y02、C14*Y02、C18*Y02、C22*Y02、C26*Y02和C30*Y02,将8个结果整合为一个数组,图5中记为P8;第二组为C18*Y18、-C10*Y18、-C26*Y18、C02*Y18、-C30*Y18、-C06*Y18、C22*Y18和-C10*Y18,将8个结果整合为一个数组,图5中记为P9;第三组为C10*Y10、C30*Y10、-C14*Y10、-C06*Y10、-C26*Y10、C18*Y10、C02*Y10和C22*Y10,将8个结果整合为一个数组,图5中记为P10;第四组为C26*Y26、-C14*Y26、C02*Y26、-C10*Y26、C22*Y26、C30*Y26、-C18*Y26和C06*Y26,将8个结果整合为一个数组,图5中记为P11;第五组为C06*Y06、C18*Y06、C30*Y06、-C22*Y06、-C10*Y06、-C02*Y06、-C14*Y06和-C26*Y06,将8个结果整合为一个数组,图5中记为P12;第六组为C22*Y22、-C02*Y22、C18*Y22、C26*Y22、-C06*Y22、C14*Y22、C30*Y22和-C10*Y22,将8个结果整合为一个数组,图5中记为P13;第七组为C14*Y14、-C22*Y14、-C06*Y14、C30*Y14、C02*Y14、C26*Y14、-C10*Y14和-C18*Y14,将8个结果整合为一个数组,图5中记为P14;第八组为C30*Y30、-C26*Y30、C22*Y30、-C18*Y30、C14*Y30、-C10*Y30、C06*Y30、和-C02*Y30,将8个结果整合为一个数组,图5中记为P15。
MCM3模块需要计算16组常系数乘法的结果:第一组为C01*Y01、C17*Y01、C09*Y01、C25*Y01、C05*Y01、C21*Y01、C13*Y01、C29*Y01、C03*Y01、C19*Y01、C11*Y01、C27*Y01、C07*Y01、C23*Y01、C15*Y01和C31*Y01,将16个结果整合为一个数组,图6中记为P16;第二组为C17*Y17、-C13*Y17、-C21*Y17、C09*Y17、C25*Y17、-C05*Y17、-C29*Y17、C01*Y17、-C31*Y17、-C03*Y17、C27*Y17、C07*Y17、-C23*Y17、-C11*Y17、C19*Y17和C15*Y17,将16个结果整合为一个数组,图6中记为P17;第三组为C09*Y09、C27*Y09、-C19*Y09、-C01*Y09、-C17*Y09、C29*Y09、C11*Y09、C07*Y09、C25*Y09、-C21*Y09、-C03*Y09、-C15*Y09、C31*Y09,C13*Y09、C05*Y09、C23*Y09,将16个结果整合为一个数组,图6中记为P18;第四组为C25*Y25、-C11*Y25、C03*Y25、-C17*Y25、C31*Y25、C19*Y25、-C05*Y25、C09*Y25、-C23*Y25、-C27*Y25、C13*Y25、-C01*Y25、C15*Y25、-C29*Y25、-C21*Y25和C07*Y25,将16个结果整合为一个数组,图6中记为P19;第五组为C05*Y05、C15*Y05、C25*Y05、-C29*Y05、-C19*Y05、-C09*Y05、-C01*Y05、-C11*Y05、-C21*Y05、-C31*Y05、C23*Y05、C13*Y05、C03*Y05、C07*Y05、C17*Y05和C27*Y05,将16个结果整合为一个数组,图6中记为P20;第六组为C21*Y21、-C01*Y21、C23*Y21、C19*Y21、-C03*Y21、C25*Y21、C17*Y21、-C05*Y21、C27*Y21、C15*Y21、-C07*Y21、C29*Y21、C13*Y21、-C09*Y21、C31*Y21和C11*Y21,将16个结果整合为一个数组,图6中记为P21;第七组为C13*Y13、-C25*Y13、-C01*Y13、-C27*Y13、C11*Y13、C15*Y13、-C23*Y13、-C03*Y13、-C29*Y13、C09*Y13、C17*Y13、-C21*Y13、-C05*Y13、-C31*Y13、C07*Y13和C19*Y13,将16个结果整合为一个数组,图6中记为P22;第八组为C29*Y29、-C23*Y29、C17*Y29、-C11*Y29、C05*Y29、-C01*Y29、C07*Y29、-C13*Y29、C19*Y29、-C25*Y29、C31*Y29、C27*Y29、-C21*Y29、C15*Y29、-C09*Y29和C03*Y29,将16个结果整合为一个数组,图6中记为P23;第九组为C03*Y03、C09*Y03、C15*Y03、C21*Y03、C27*Y03、-C31*Y03、-C25*Y03、-C19*Y03、-C13*Y03、-C07*Y03、-C01*Y03、-C05*Y03、-C11*Y03、-C17*Y03、-C23*Y03、-C29*Y03,将16个结果整合为一个数组,图6中记为P24;第十组为C19*Y19、-C07*Y19、-C31*Y19、C05*Y19、-C21*Y19、-C17*Y19、C09*Y19、C29*Y19、-C03*Y19、C23*Y19、C15*Y19、-C11*Y19、-C27*Y19、C01*Y19、-C25*Y19、-C13*Y19,将16个结果整合为一个数组,图6中记为P25;第十一组为C11*Y11、-C31*Y11、-C09*Y11、-C13*Y11、C29*Y11、C07*Y11、C15*Y11、-C27*Y11、-C05*Y11、-C17*Y11、C25*Y11、C03*Y11、C19*Y11、-C23*Y11、-C01*Y11、-C21*Y11,将16个结果整合为一个数组,图6中记为P26;第十二组为C27*Y27、-C17*Y27、C07*Y27、-C03*Y27、C13*Y27、-C23*Y27、-C31*Y27、C21*Y27、-C11*Y27、C01*Y27、-C09*Y27、C19*Y27、-C29*Y27、-C25*Y27、C15*Y27、-C05*Y27,将16个结果整合为一个数组,图7中记为P27;第十三组为C07*Y07、C21*Y07、-C29*Y07、-C15*Y07、-C01*Y07、-C13*Y07、-C27*Y07、C23*Y07、C09*Y07、C05*Y07、C19*Y07、-C31*Y07、-C17*Y07、-C03*Y07、-C11*Y07、-C25*Y07,将16个结果整合为一个数组,图6中记为P28;第十四组为C23*Y23、-C05*Y23、C13*Y23、-C31*Y23、-C15*Y23、C03*Y23、-C21*Y23、-C25*Y23、C07*Y23、-C11*Y23、C29*Y23、C17*Y23、-C01*Y23、C19*Y23、C27*Y23、-C09*Y23,将16个结果整合为一个数组,图6中记为P29;第十五组为C15*Y15、-C19*Y15、-C11*Y15、C23*Y15、C07*Y15、-C27*Y15、-C03*Y15、C31*Y15、C01*Y15、C29*Y15、-C05*Y15、-C25*Y15、C09*Y15、C21*Y15、-C13*Y15、-C17*Y15,将16个结果整合为一个数组,图6中记为P30;第十六组为C31*Y31、-C29*Y31、C27*Y31、-C25*Y31、C23*Y31、-C21*Y31、C19*Y31、-C17*Y31、C15*Y31、-C13*Y31、C11*Y31、-C09*Y31、C07*Y31、-C05*Y31、C03*Y31、-C01*Y31,将16个结果整合为一个数组,图6中记为P31。
如果要支持多种视频标准,由于不同的视频标准规定了不同的变换系数Ci,j,需要针对每一种标准都计算出相应32个乘法器输出结果(P0、P1、P2、P3、P4、P5、P6、P7、P8、P9、P10、P11、P12、P13、P14、P15、P16、P17、P18、P19、P10、P21、P22、P23、P24、P25、P26、P27、P28、P29、P30、P31),然后根据当前所支持的视频标准选出对应的结果作为输出。
(3)通过四组运算模块(B4x4、D4x4、D8x8和D16x16),对多输出常系数乘法器的输出进行处理。B4x4模块为4点的蝶形运算模块,D4x4模块为4点的加法树模块,D8x8模块为8点的加法树模块,D16x16为16点的加法树模块。
4点蝶形运算(B4x4)的流程如图7所示。步骤(2)中的输出P0、P1、P2、P3作为本次运算的输入,图中的圆圈代表两个数相加的加法,连线下方的“-”代表将输入的加数去负值。本次运算的结果分别记为R0、R1、R2、R3。如果当前的变换尺寸是4x4,那么R0、R1、R2、R3即为即为4点一维整数离散余弦反变换的结果。
4点加法树模块(D4X4)的整体框图如图8所示。步骤(2)中的输出P4、P5、P6、P7作为本次运算的输入,图中的圆圈代表两个数相加的加法。本次运算的结果分别记为R4、R5、R6、R7。
8点加法树模块(D8X8)的整体框图如9所示。步骤(2)中的输出P8、P9、P10、P11、P12、P13、P14、P15作为本次运算的输入,图中的圆圈代表两个数相加的加法, D4X4代表上述的4点加法树模块。本次运算的结果分别记为S8、S9、S10、S11、S12、S13、S14、S15。
16点加法树模块(D16X16)的整体框图如图10所示。步骤(2)中的输出P16、P17、P18、P19、P10、P21、P22、P23、P24、P25、P26、P27、P28、P29、P30、P31,作为本次运算的输入,图中的圆圈代表两个数相加的加法,D8X8代表上述的8点加法树模块。本次运算的结果分别记为T16、T17、T18、T19、T20、T21、T22、T23、T24、T25、T26、T27、T28、T29、T30、T31。
(4)以R0、R1、R2、R3、R4、R5、R6、R7作为输入,进行8点的蝶形运算。8点的蝶形运算的流程如图2中黑框标示的B8模块所示。其结果即为8点一维整数离散余弦反变换的结果,将其分别记为S0、S1、S2、S3、S4、S5、S6、S7。
(5)以S0、S1、S2、S3、S4、S5、S6、S7、S8、S9、S10、S11、S12、S13、S14、S15作为输入,进行16点的蝶形运算。16点的蝶形运算的流程如图2中黑框标示的B16模块所示。其结果即为16点一维整数离散余弦反变换的结果,将其分别记为T0、T1、T2、T3、T4、T5、T6、T7、T8、T9、T10、T11、T12、T13、T14、T15。
(6)以T0、T1、T2、T3、T4、T5、T6、T7、T8、T9、T10、T11、T12、T13、T14、T15、T16、T17、T18、T19、T20、T21、T22、T23、T24、T25、T26、T27、T28、T29、T30、T31作为输入,进行32点的蝶形运算。32点的蝶形运算的流程如图2中黑框标示的B32模块所示。其结果即为32点一维整数离散余弦反变换的结果,将其分别记为X00、X01、X02、X03、X04、X05、X06、X07、X08、X09、X10、X11、X12、X13、X14、X15、X16、X17、X18、X19、X20、X21、X22、X23、X24、X25、X26、X27、X28、X29、X30、X31。
对于变换尺寸为4x4的二维整数离散余弦反变换,运算过程为第1、2、3步骤。 对于变换尺寸为8x8的二维整数离散余弦反变换,运算过程为第1、2、3、4步骤。对于变换尺寸为16x16的二维整数离散余弦反变换,运算过程为第1、2、3、4、5步骤。对于变换尺寸为32x32的二维整数离散余弦反变换,运算过程为第1、2、3、4、5、6步骤。从上述步骤可以看出,各种不同变换尺寸的整数离散余弦反变换之间可以共享运算流程,十分有利于降低硬件开销。同时,如果需要支持新的视频标准,只需要对步骤2中描述的多输出常系数乘法器作相应修改,增加一组输出即可,其它步骤无需作任何改动,因此此方法具有非常灵活的可扩展性。
Claims (7)
1.一种可用于多种视频标准、多尺寸二维整数余弦反变换的通用方法,其特征在于具体步骤为:
(1)根据离散余弦反变换的特性,将一个二维整数离散余弦反变换转换为两次一维整数离散余弦反变换,即先进行水平方向的一维反变换,然后再进行垂直方向的一维反变换;
(2)根据4x4、8x8、16x16和32x32四种不同的变换尺寸,将输入的32个系数:Y00-Y31分为四组,为每一组设计相应的多输出常系数乘法器:MCM0、MCM1、MCM2和MCM3;通过对乘法器系数进行配置,即实现对各种不同视频标准的支持;
(3)设计四组运算模块:B4x4、D4x4、D8x8和D16x16,对多输出常系数乘法器的输出进行处理;其中,B4x4模块为4点的蝶形运算模块,D4x4模块为4点的加法树模块,D8x8模块为8点的加法树模块,D16x16为16点的加法树模块;B4x4模块的输出即为4点一维整数离散余弦反变换的结果;
(4)对B4x4和D4x4模块的输出,进行8点的蝶形运算,其结果即为8点一维整数离散余弦反变换的结果;
(5)对8点蝶形运算的输出和D8x8模块的输出进行16点的蝶形运算,其结果即为16点一维整数离散余弦反变换的结果;
(6)对16点蝶形运算的输出和D16x16模块的输出进行32点的蝶形运算,其结果即为32点一维整数离散余弦反变换的结果。
2.根据权利要求1所述的方法,其特征在于步骤(1)中,
一个二维整数离散余弦反变换用如下公式表示:
X = CT*Y*C (1)
其中,Y为需要进行二维整数离散余弦反变换的输入矩阵,C代表整数离散余弦变换的系数矩阵,*代表矩阵乘法,CT代表C的转置矩阵,X代表二维整数离散余弦反变换的计算结果;对应于四种不同的变换尺寸,矩阵C、X、Y的大小分别为4x4、8x8、16x16和32x32;
对公式(1)进行变换,得:
X= ((Y*C)T * C)T (2)
令:
D=(Y*C)T, (3)
那么:
X = (D*C)T (4)
于是,二维整数离散余弦反变换就转换为两次一维整数离散余弦反变换:公式(3)表示先对矩阵Y的每一行的所有系数进行一维整数离散余弦反变换并将变换结果得到的矩阵进行转置操作,此步骤称为行变换操作;公式(4)表示对矩阵D再进行一次一维整数离散余弦反变换并将此变换结果再次进行转置操作,此步骤称为列变换操作,其运算结果就是矩阵X,即为二维整数离散余弦反变换的运算结果;其中:
变换矩阵C32X32表示为一个大小为32x32的矩阵,它可以分割为4个16x16的矩阵,分别为K0、K1、K2、K3;
其中,矩阵K0具体表示如下:
矩阵K1具体表示如下:
矩阵K2具体表示如下:
矩阵K3具体表示如下:
变换矩阵C16X16的系数取值如下:
变换矩阵C8X8的系数取值如下:
变换矩阵C4X4的系数取值如下:
行变换和列变换操作共用同一个一维整数离散余弦反变换模块。
3.根据权利要求2所述的方法,其特征在于步骤(2)中,
采用多输出常系数乘法器对输入的待变换系数进行乘法操作,具体如下:
(1)对于32点一维整数离散余弦反变换,令输入的待变换向量Y32为:
Y32 = [ Y00,Y01,Y02,Y03,Y04,Y05,Y06,Y07,Y08,Y09,Y10,Y11,Y12,Y13,Y14,Y15,
Y16,Y17,Y18,Y19,Y20,Y21,Y22,Y23,Y24,Y25,Y26,Y27,Y28,Y29,Y30,Y31]
将向量Y32的32个待变换系数分为四组:第一组为Y00、Y16、Y08、Y24,第二组为Y04、Y20、Y12、Y28,第三组为Y02、Y18、Y10、Y26、Y06、Y22、Y14、Y30,第四组为Y01、Y17、Y09、Y25、Y05、Y21、Y13、Y29、Y03、Y19、Y11、Y27、Y07、Y23、Y15、Y31 ;第一组的四个系数作为多输出常系数乘法器MCM0的输入,第二组的四个系数作为多输出常系数乘法器MCM1的输入,第三组的八个系数作为多输出常系数乘法器MCM2的输入,第四组的十六个系数作为多输出常系数乘法器MCM3的输入;
(2)对于16点一维整数离散余弦反变换,令输入的待变换向量Y16为:
Y16 = [ Y00,Y02,Y04,Y06,Y08,Y10,Y12,Y14,Y16,Y18,Y20,Y22,Y24,Y26,Y28,Y30]
将向量Y16的16个待变换系数分为三组:第一组为Y00、Y16、Y08、Y24,第二组为Y04、Y20、Y12、Y28,第三组为Y02、Y18、Y10、Y26、Y06、Y22、Y14、Y30 ;第一组的四个系数作为多输出常系数乘法器MCM0的输入,第二组的四个系数作为多输出常系数乘法器MCM1的输入,第三组的八个系数作为多输出常系数乘法器MCM2的输入,多输出常系数乘法器MCM3的输入全部取0;
(3)对于8点一维整数离散余弦反变换,令输入的待变换向量Y8为:
Y8 = [ Y00,Y04,Y08,Y12,Y16,Y20,Y24,Y28]
将向量Y8的8个待变换系数分为两组:第一组为Y00、Y16、Y08、Y24,第二组为Y04、Y20、Y12、Y28 ;第一组的四个系数作为多输出常系数乘法器MCM0的输入,第二组的四个系数作为多输出常系数乘法器MCM1的输入,多输出常系数乘法器MCM2和MCM3的输入全部取0;
(4)对于4点一维整数离散余弦反变换,令输入的待变换向量Y4为:
Y4 = [ Y00,Y08,Y16,Y24]
向量Y4的4个待变换系数作为多输出常系数乘法器MCM0的输入,多输出常系数乘法器MCM1、MCM2和MCM3的输入全部取0。
4.根据权利要求1所述的方法,其特征在于步骤(3)中,所述设计四组运算模块:B4x4、D4x4、D8x8和D16x16,对多输出常系数乘法器的输出进行处理,其中:
对于4点蝶形运算模块:B4x4,步骤(2)中的输出P0、P1、P2、P3作为本次运算的输入,本次运算的结果分别记为R0、R1、R2、R3;如果当前的变换尺寸是4x4,那么R0、R1、R2、R3即为4点一维整数离散余弦反变换的结果;
对于4点加法树模块:D4X4,步骤(2)中的输出P4、P5、P6、P7作为本次运算的输入,本次运算的结果分别记为R4、R5、R6、R7;
对于8点加法树模块:D8X8,步骤(2)中的输出P8、P9、P10、P11、P12、P13、P14、P15作为本次运算的输入,本次运算的结果分别记为S8、S9、S10、S11、S12、S13、S14、S15;
对于16点加法树模块:D16X16,步骤(2)中的输出P16、P17、P18、P19、P10、P21、P22、P23、P24、P25、P26、P27、P28、P29、P30、P31,作为本次运算的输入,本次运算的结果分别记为T16、T17、T18、T19、T20、T21、T22、T23、T24、T25、T26、T27、T28、T29、T30、T31。
5.根据权利要求4所述的方法,其特征在于步骤(4)中,以R0、R1、R2、R3、R4、R5、R6、R7作为输入,进行8点的蝶形运算;得到8点一维整数离散余弦反变换的结果,分别记为S0、S1、S2、S3、S4、S5、S6、S7。
6.根据权利要求5所述的方法,其特征在于步骤(5)中,以S0、S1、S2、S3、S4、S5、S6、S7、S8、S9、S10、S11、S12、S13、S14、S15作为输入,进行16点的蝶形运算,得到16点一维整数离散余弦反变换的结果,分别记为T0、T1、T2、T3、T4、T5、T6、T7、T8、T9、T10、T11、T12、T13、T14、T15。
7.根据权利要求6所述的方法,其特征在于步骤(6)中,以T0、T1、T2、T3、T4、T5、T6、T7、T8、T9、T10、T11、T12、T13、T14、T15、T16、T17、T18、T19、T20、T21、T22、T23、T24、T25、T26、T27、T28、T29、T30、T31作为输入,进行32点的蝶形运算,得到 32点一维整数离散余弦反变换的结果,分别记为X00、X01、X02、X03、X04、X05、X06、X07、X08、X09、X10、X11、X12、X13、X14、X15、X16、X17、X18、X19、X20、X21、X22、X23、X24、X25、X26、X27、X28、X29、X30、X31。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110350154.XA CN102404569B (zh) | 2011-11-08 | 2011-11-08 | 可用于多种视频标准、多尺寸二维整数余弦反变换的通用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110350154.XA CN102404569B (zh) | 2011-11-08 | 2011-11-08 | 可用于多种视频标准、多尺寸二维整数余弦反变换的通用方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102404569A CN102404569A (zh) | 2012-04-04 |
CN102404569B true CN102404569B (zh) | 2014-01-08 |
Family
ID=45886289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110350154.XA Active CN102404569B (zh) | 2011-11-08 | 2011-11-08 | 可用于多种视频标准、多尺寸二维整数余弦反变换的通用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102404569B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103327332B (zh) * | 2013-06-18 | 2016-04-13 | 复旦大学 | 一种hevc标准中8×8idct变换的实现方法 |
CN103747266A (zh) * | 2013-12-24 | 2014-04-23 | 华为技术有限公司 | 一种数据变换方法和设备 |
CN105100811B (zh) * | 2014-05-14 | 2018-04-03 | 北京君正集成电路股份有限公司 | 一种视频变换的实现方法及装置 |
CN104581174B (zh) * | 2015-01-22 | 2018-04-03 | 复旦大学 | 一种适用于hevc标准的高吞吐率dct和idct硬件复用结构 |
CN111200732B (zh) | 2018-11-20 | 2023-04-07 | 深圳市中兴微电子技术有限公司 | 一种反量化反变换方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1289213A (zh) * | 2000-10-13 | 2001-03-28 | 清华大学 | 无转置部件行列分离二维离散余弦变换/反变换vlsi结构及其方法 |
US6526430B1 (en) * | 1999-10-04 | 2003-02-25 | Texas Instruments Incorporated | Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing) |
CN1428719A (zh) * | 2001-12-28 | 2003-07-09 | 皇家菲利浦电子有限公司 | 自适应反向变换装置 |
CN101330616A (zh) * | 2008-07-31 | 2008-12-24 | 上海交通大学 | 视频解码过程中反离散余弦变换的硬件实现装置及方法 |
CN101605259A (zh) * | 2009-05-31 | 2009-12-16 | 华亚微电子(上海)有限公司 | 对多媒体数据进行变换编、解码的装置及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9081733B2 (en) * | 2009-06-24 | 2015-07-14 | Qualcomm Incorporated | 16-point transform for media data coding |
-
2011
- 2011-11-08 CN CN201110350154.XA patent/CN102404569B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6526430B1 (en) * | 1999-10-04 | 2003-02-25 | Texas Instruments Incorporated | Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing) |
CN1289213A (zh) * | 2000-10-13 | 2001-03-28 | 清华大学 | 无转置部件行列分离二维离散余弦变换/反变换vlsi结构及其方法 |
CN1428719A (zh) * | 2001-12-28 | 2003-07-09 | 皇家菲利浦电子有限公司 | 自适应反向变换装置 |
CN101330616A (zh) * | 2008-07-31 | 2008-12-24 | 上海交通大学 | 视频解码过程中反离散余弦变换的硬件实现装置及方法 |
CN101605259A (zh) * | 2009-05-31 | 2009-12-16 | 华亚微电子(上海)有限公司 | 对多媒体数据进行变换编、解码的装置及方法 |
Non-Patent Citations (2)
Title |
---|
司马苗等.基于FPGA的二维DCT变换的实现.《红外与激光工程》.2003,第32卷(第04期), |
基于FPGA的二维DCT变换的实现;司马苗等;《红外与激光工程》;20030825;第32卷(第04期);436-439 * |
Also Published As
Publication number | Publication date |
---|---|
CN102404569A (zh) | 2012-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102387367B (zh) | 适用于多种视频标准、多尺寸二维整数余弦变换的通用方法 | |
CN102404569B (zh) | 可用于多种视频标准、多尺寸二维整数余弦反变换的通用方法 | |
CN110263909B (zh) | 图像识别方法及装置 | |
Zhang et al. | Adaptive compressed sensing for wireless image sensor networks | |
CN101330616B (zh) | 视频解码过程中反离散余弦变换的硬件实现装置及方法 | |
CN108009126B (zh) | 一种计算方法及相关产品 | |
Bouguezel et al. | A fast 8× 8 transform for image compression | |
CN102158694B (zh) | 一种基于gpu的遥感图像解压缩方法 | |
CN111741298A (zh) | 视频编码方法、装置、电子设备及可读存储介质 | |
WO2023130653A1 (zh) | 用于图像压缩的数据处理方法、装置、设备和存储介质 | |
CN101426134A (zh) | 用于视频编解码的硬件装置及方法 | |
CN108259919B (zh) | 一种快速实现8x8DCT变换的硬件系统 | |
WO2020060832A1 (en) | Fast implementation of odd one dimensional transforms | |
US9819951B2 (en) | Image processing method, devices and system | |
CN103327332B (zh) | 一种hevc标准中8×8idct变换的实现方法 | |
Viitamäki et al. | High-level synthesized 2-D IDCT/IDST implementation for HEVC codecs on FPGA | |
CN111200732B (zh) | 一种反量化反变换方法及装置 | |
CN102006478A (zh) | 一种视频解码的反变换方法及装置 | |
CN101977318B (zh) | Dct量化的并行装置及其方法 | |
Yun et al. | Adaptive directional lifting wavelet transform VLSI architecture | |
CN206962992U (zh) | 用于数字视频编解码的3乘3整数dct变换量化器 | |
CN104581174A (zh) | 一种适用于hevc标准的高吞吐率dct和idct硬件复用结构 | |
CN104602026A (zh) | 一种适用于hevc标准下编码器中全复用的重建环路结构 | |
CN109255770A (zh) | 一种新型图像变换域降采样方法 | |
CN105407358A (zh) | 一种基于hevc的整数dct变换方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |