CN100473161C - 基于avs的4×4离散余弦变换的快速并行装置及其方法 - Google Patents
基于avs的4×4离散余弦变换的快速并行装置及其方法 Download PDFInfo
- Publication number
- CN100473161C CN100473161C CN 200510044689 CN200510044689A CN100473161C CN 100473161 C CN100473161 C CN 100473161C CN 200510044689 CN200510044689 CN 200510044689 CN 200510044689 A CN200510044689 A CN 200510044689A CN 100473161 C CN100473161 C CN 100473161C
- Authority
- CN
- China
- Prior art keywords
- matrix
- module
- transposed
- submatrix
- row
- 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
- Complex Calculations (AREA)
Abstract
一种基于AVS的4×4离散余弦变换的快速并行装置及其方法,属于数字音视频编解码技术。装置包括正和反变换,正变换转置包括信号输入、行正变换、列正变换和输出等模块;反变换装置包括信号输入、行反变换、列反变换、系数调整、输出等模块。方法包括正和反变换步骤。正变换步骤包括四个,其输出模块将系数矩阵输出至量化模块进行参数调整、量化及后续编码。反变换步骤包括五个,其输出模块将系数矩阵输出至运动补偿模块进行运动补偿及后续解码。它能减少运算量,使DCT实现无乘法运算,降低装置的复杂程度,并可使DCT进行并行运算,提高编码效率。可广泛应用于基于AVS的数字音视频编解码中。
Description
技术领域
本发明属于数字音视频编解码技术领域,更明确地说涉及基于AVS(数字音视频编解码标准)的4×4离散余弦变换(DCT)的快速并行装置及其方法的设计。
背景技术
变换编码是实现视频编解码的关键技术。离散余弦变换是一种正交变换,它有能量集中(变换后的系数集中在左上角的直流系数)和非相关性好(数据块仅用少数系数就可重组)等特点,其性能接近与理想的K-L变换,因此被广泛应用于图像和视频编码中。目前各种视频编解码标准(mpeg、h.26x、avs)均采用离散余弦变换。
但是实现DCT时需要大量的矩阵运算,特别是采用乘法,使硬件实现和应用的复杂程度高、运算速度慢,严重影响了编码效率,因此实际应用中都是采用DCT的快速算法。
AVS音视频编码标准是我国自主开发的国家标准,其编码效率是mpeg2的2~3倍,和h.264相当。对于离散余弦变换,AVS采用4×4块整数变换,并给出了变换矩阵,使DCT的运算速度有很大提高,同时也易于实现。
它给出的变换矩阵为:
反变换矩阵为其转置矩阵:
但是,它仍存在需进一步改进的之处,比如它依然存在乘法、运算量可进一步减少、变换的并行处理能力差等等。
发明内容
本发明的目的,就在于克服上述缺点和不足,提供一种基于AVS的4×4离散余弦变换的快速并行装置及其方法。它能够减少运算量并使DCT变换真正实现无乘法运算,提高编码效率,降低其实现装置的复杂程度。
本发明的另一个目的在于使DCT可进行并行运算,进一步提高编码效率。
为了达到上述目的,本发明包括以下正变换装置和反变换装置:
正变换转置:用于对帧内预测或帧间预测产生的残差系数矩阵进行4×4离散余弦变换,包括:
信号输入模块:接收帧内预测和帧间预测产生的残差系数矩阵,其输入端连接帧内预测或帧间预测残差系数矩阵输出端,
行正变换模块:对输入的残差系数矩阵作水平方向的4×4离散余弦行正变换,得到中间结果,
列正变换模块:将行变换模块所得中间结果进行竖直方向的4×4离散余弦列正变换,
输出模块:将变换系数矩阵输出至量化模块进行量化和后续编码过程;
反变换装置:用于对反变换所得图像参数矩阵进行4×4离散余弦反变换,包括:
信号输入模块:接收反量化模块产生的系数矩阵,
行反变换模块:对输入的反量化系数矩阵作水平方向的4×4离散余弦行反变换,得到中间结果,
列反变换模块:将行反变换模块所得中间结果进行竖直方向的4×4离散余弦列反变换,
系数调整模块:对反变换后的系数按照AVS标准进行调整,
输出模块:将变换系数矩阵输出至运动补偿模块进行后续解码过程,
上述快速并行装置包含两个公共运算模块:
矩阵变换模块,采用核心矩阵进行离散余弦变换的运算,列正变换模块和行反变换模块采用此模块;
转置矩阵变换模块,采用核心矩阵的转置矩阵进行离散余弦变换的运算,行正变换模块和列反变换采用此模块。
上述公共运算模块都包含并行运算子模块和输出排序子模块:
并行运算模块用来进行离散余弦变换的矩阵运算,输出排序模块将输出结果进行排序;
其中矩阵变换模块的并行运算模块包括第一矩阵模块、第二矩阵子矩阵1模块、第二矩阵子矩阵2模块、第三矩阵子矩阵1模块和第三矩阵子矩阵2模块,其中第二矩阵子矩阵1模块和第三矩阵子矩阵1模块可以与第二矩阵子矩阵2模块和第三矩阵子矩阵2模块并行运算;
转置矩阵变换模块的并行运算模块用来进行离散余弦变换的矩阵运算,包括第一转置矩阵模块、第二转置矩阵子矩阵1模块、第二转置矩阵子矩阵2模块、第三转置矩阵子矩阵1模块和第三转置矩阵子矩阵2模块,其中第二转置矩阵子矩阵1模块和第三转置矩阵子矩阵1模块可以与第二转置矩阵子矩阵2模块和第三转置矩阵子矩阵2模块并行运算。
所述核心矩阵为:
其转置矩阵为:
所述核心矩阵的分解矩阵为:
第一矩阵和转置矩阵
第二矩阵 第二矩阵子矩阵1
第二矩阵子矩阵2
第二转置矩阵 第二转置矩阵子矩阵1
第二转置矩阵子矩阵2
第三矩阵 第三矩阵子矩阵1
第三矩阵子矩阵2
第三转置矩阵 第三转置矩阵子矩阵1
第三转置矩阵子矩阵2
第四矩阵和转置矩阵:
矩阵变换模块的并行运算模块包含的:
第一矩阵模块采用矩阵
第二矩阵子矩阵1模块采用矩阵
第二矩阵子矩阵2模块采用矩阵
第三矩阵子矩阵1模块采用矩阵
第三矩阵子矩阵2模块采用矩阵
矩阵变换模块的输出排序模块采用矩阵
转置矩阵变换模块的并行运算模块包含的:
第一转置矩阵模块块采用矩阵
第二转置矩阵子矩阵1模块采用矩阵
第二转置矩阵子矩阵2模块采用矩阵
第三转置矩阵子矩阵1模块采用矩阵
第三转置矩阵子矩阵2模块采用矩阵
转置矩阵变换模块输出排序模块采用矩阵:
基于AVS的4×4离散余弦变换的快速并行装置的方法包括如下正变换和反变换实现步骤:
正变换步骤:
步骤1:信号输入模块接收帧内预测和帧间预测产生的残差系数矩阵,
步骤2:行正变换模块对输入的残差系数矩阵作水平方向的4×4离散余弦行变换,
步骤3:列正变换模块将行正变换模块所得中间结果进行竖直方向的4
×4离散余弦列正变换,
步骤4:输出模块将变换所得系数矩阵输出至量化模块,进行参数调整、量化及后续编码过程;
反变换步骤:
步骤1:信号输入模块接收反量化模块产生的系数矩阵,
步骤2:行反变换模块对输入的反量化系数矩阵作水平方向的4×4离散余弦行反变换,
步骤3:列反变换模块将行反变换模块所得中间结果进行竖直方向的4×4离散余弦列反变换,
步骤4:系数调整模块对反变换后的系数按照AVS标准进行调整,
步骤5:输出模块将变换所得系数矩阵输出至运动补偿模块,进行运动补偿及后续解码过程。
正变换步骤2还包括:
步骤20:将该步骤2中所用核心矩阵的转置矩阵,分解为四个矩阵:第一转置矩阵、第二转置矩阵、第三转置矩阵和第四转置矩阵,
步骤21:将残差系数矩阵依次按行取出左乘第一转置矩阵,
步骤22:将上一步骤所得系数向量,分为两部分并行处理:将前两个元素作为第一子向量,依次与第二转置矩阵的子矩阵1和第三转置矩阵的子矩阵1左乘,将后两个元素作为第二子向量,依次与第二转置矩阵的子矩阵2和第三转置矩阵的子矩阵2左乘,
步骤23:将计算结果经输出排序模块,按照第四转置矩阵排序输出至暂存区,
步骤24:重复以上步骤21到23直至全部矩阵计算完成;
其正变换步骤3还包括:
步骤30:该步骤3中所用核心变换矩阵,同样分解为四个矩阵:第一矩阵、第二矩阵、第三矩阵和第四矩阵,其中前三个矩阵对应于并行运算子模块,最后一个矩阵对应于输出排序子模块,
步骤31:行变换所得系数矩阵依次按列取出右乘第一矩阵,
步骤32:将上一步骤所得系数向量,分为两部分并行处理:将前两个元素作为第一子向量,依次与第二矩阵的子矩阵1和第三矩阵的子矩阵1右乘,将后两个元素作为第二子向量,依次与第二矩阵的子矩阵2和第三矩阵的子矩阵2右乘,
步骤33:将计算结果经输出排序模块,按照第四矩阵排序输出至暂存区,
步骤34:重复以上步骤31到33直至全部矩阵计算完成;
其反变换步骤2还包括:
步骤20:该步骤2中所用核心变换矩阵,同样分解为四个矩阵:第一矩阵、第二矩阵、第三矩阵和第四矩阵,其中前三个矩阵对应于并行运算子模块,最后一个矩阵对应于输出排序子模块,
步骤21:输入的反量化系数矩阵依次按行取出左乘第四矩阵,
步骤22:将上一步骤所得系数向量,分为两部分并行处理:将前两个元素作为第一子向量,依次与第三矩阵的子矩阵1和第二矩阵的子矩阵1左乘,将后两个元素作为第二子向量,依次与第三矩阵的子矩阵2和第二矩阵的子矩阵2左乘,
步骤23:将计算结果左乘第一矩阵,并输出至暂存区,
步骤24:重复以上步骤21到23直至全部矩阵计算完成;
其反变换步骤3还包括:
步骤30:该步骤3中所用核心变换矩阵的转置,分解为四个矩阵:第一转置矩阵,第二转置矩阵,第三转置矩阵,第四转置矩阵,其中前三个矩阵对应于并行运算子模块,最后一个矩阵对应于输出排序子模块,
步骤31:将行反变换系数矩阵依次按列取出右乘第四转置矩阵,
步骤32:将上一步骤所得系数向量,分为两部分并行处理,将前两个元素作为第一子向量,依次与第三转置矩阵的子矩阵1和第二转置矩阵的子矩阵1右乘,将后两个元素作为第二子向量,依次与第三转置矩阵的子矩阵2和第二转置矩阵的子矩阵2右乘,
步骤33:将计算结果右乘第一转置矩阵,并输出至暂存区,
步骤34:重复以上步骤31到33直至全部矩阵计算完成。
本发明采用的总体技术方案是基于AVS的4×4离散余弦变换快速并行装置分为正变换装置和反变换装置,它们分别为AVS编码和解码模块中的实现变换编码的模块,符合AVS标准的定义和规定。
首先有两个公共模块:矩阵变换模块采用核心变换矩阵,内部包含两个子模块:并行运算模块和输出排序模块。前者并行完成变换矩阵运算,后者对由于采用并行运算而打乱的输出结果顺序进行正确排序。
转置矩阵变换模块采用核心变换矩阵的转置矩阵,同样内部包含两个子模块:并行运算模块和输出排序模块。前者并行完成变换矩阵运算,后者对由于采用并行运算而打乱的输出结果顺序进行正确排序。
正变换装置包括:
信号输入模块:接收帧内预测和帧间预测产生的残差系数矩阵。
行正变换模块:对输入的残差系数矩阵作水平方向的4×4离散余弦行正变换,得到中间结果。它采用转置矩阵变换模块。
列正变换模块:将行变换模块所得中间结果进行竖直方向的4×4离散余弦列正变换,它采用矩阵变换模块。
输出模块:将变换系数矩阵输出至量化模块进行量化和后续编码过程。
反变换装置包括:
信号输入模块:接收反量化模块产生的系数矩阵。
行反变换模块:对输入的反量化系数矩阵作水平方向的4×4离散余弦行反变换,得到中间结果。它采用矩阵变换模块。
列反变换模块:将行反变换模块所得中间结果进行竖直方向的4×4离散余弦列反变换,它采用转置矩阵变换模块。
系数调整模块:对反变换后的系数按照AVS标准进行调整。
输出模块:将变换系数矩阵输出至运动补偿模块进行后续解码过程。
快速并行正变换的实现步骤为:
步骤1:信号输入模块接收帧内预测和帧间预测产生的残差系数矩阵。
步骤2:行正变换模块对输入的残差系数矩阵作水平方向的4×4离散余弦行变换。
步骤21:将残差系数矩阵依次按行取出左乘第一转置矩阵;
步骤22:将上一步骤所得系数向量,分为两部分并行处理:
步骤23:将计算结果经输出排序模块,按照第四转置矩阵排序输出至暂存区;
步骤24:重复以上步骤21到23直至全部矩阵计算完成。
步骤3:列正变换模块将行正变换模块所得中间结果进行竖直方向的列正变换,
步骤30:该步骤中所用核心变换矩阵T4同样分解为四个矩阵:第一矩阵A、第二矩阵M2、第三矩阵M1和第四矩阵P。其中前三个矩阵对应于并行运算子模块,最后一个矩阵对应于输出排序子模块。
步骤31:行变换所得系数矩阵依次按列取出右乘第一矩阵;
步骤32:将上一步骤所得系数向量,分为两部分并行处理:将前两个元素作为第一子向量,依次与第二矩阵的子矩阵1 M21和第三矩阵的子矩阵1 M11右乘;将后两个元素作为第二子向量,依次与第二矩阵的子矩阵2 M22和第三矩阵的子矩阵2 M12右乘;
步骤33:将计算结果经输出排序模块,按照第四矩阵排序输出至暂存区;
步骤34:重复以上步骤31到33直至全部矩阵计算完成。
步骤4:输出模块将变换所得系数矩阵输出至量化模块,进行参数调整、量化及后续编码过程。
基于AVS的4×4离散余弦变换的快速并行算法反变换的步骤是:
步骤1:信号输入模块接收反量化模块产生的系数矩阵。
步骤2:行反变换模块对输入的反量化系数矩阵作水平方向的4×4离散余弦行反变换。
步骤20:该步骤中所用核心变换矩阵T4。同样分解为四个矩阵:第一矩阵A、第二矩阵M2、第三矩阵M1和第四矩阵P。其中前三个矩阵对应于并行运算子模块,最后一个矩阵对应于输出排序子模块。
步骤21:输入的反量化系数矩阵依次按行取出左乘第四矩阵;
步骤22:将上一步骤所得系数向量,分为两部分并行处理:将前两个元素作为第一子向量,依次与第三矩阵的子矩阵1 M11和第二矩阵的子矩阵1 M21左乘;将后两个元素作为第二子向量,依次与第三矩阵的子矩阵2 M12和第二矩阵的子矩阵2 M22左乘;
步骤23:将计算结果左乘第一矩阵,并输出至暂存区;
步骤24:重复以上步骤21到23直至全部矩阵计算完成。
步骤3:列反变换模块将行反变换模块所得中间结果进行竖直方向的列反变换,
步骤30:该步骤中第二转置矩阵所用核心变换矩阵的转置分解为四个矩阵:第一转置矩阵AT、第二转置矩阵第三转置矩阵和第四转置矩阵PT。其中前三个矩阵对应于并行运算子模块,最后一个矩阵对应于输出排序子模块。
步骤31:将行反变换系数矩阵依次按列取出右乘第四转置矩阵;
步骤32:将上一步骤所得系数向量,分为两部分并行处理:将前两个元素作为第一子向量,依次与第三转置矩阵的子矩阵1 和第二转置矩阵的子矩阵1 右乘;将后两个元素作为第二子向量,依次与第三转置矩阵的子矩阵2 和第二转置矩阵的子矩阵2 右乘;
步骤33:将计算结果右乘第一转置矩阵,并输出至暂存区;
步骤34:重复以上步骤31到33直至全部矩阵计算完成。
步骤4:系数调整模块对反变换后的系数按照AVS标准进行调整。
步骤5:输出模块将变换所得系数矩阵输出至运动补偿模块,进行运动补偿及后续解码过程。
以上步骤中所用到的核心变换矩阵为:
其转置矩阵为:
分解矩阵为:
第一矩阵和转置矩阵
第二矩阵 第二矩阵子矩阵1
第二矩阵子矩阵2
第二转置矩阵 第二转置矩阵子矩阵1
第二转置矩阵子矩阵2
第三矩阵 第三矩阵子矩阵1
第三矩阵子矩阵2
第三转置矩阵 第三转置矩阵子矩阵1
第三转置矩阵子矩阵2
第四矩阵和转置矩阵:
从以上步骤和核心矩阵可以看出,本发明有显著的优点和积极的效果:矩阵中的1和-1对应与加减法运算,从核心矩阵中可见系数中除了1、0、-1之外只有2,而它可以通过移位来完成,也就是说,本发明只用加减法和移位就可实现,不用乘法。而且,本发明采用并行运算方式,可使运算速度大为提高,提高了编码效率,而且很适合dsp或MMx的并行指令来实现,也降低了硬件实现的复杂度。而采用并行运算而添加的输出排序模块只是在输出存储时按矩阵P的顺序进行输出,并未增加运算量。
本发明能够减少运算量并使DCT变换真正实现无乘法运算,提高编码效率,降低其实现装置的复杂程度;还可使DCT可进行并行运算,进一步提高编码效率。它可广泛应用于基于AVS的数字音视频编解码中。
附图说明
图1为本发明装置的原理方框图。
图2为其矩阵变换模块图。
图3为其转置矩阵变换模块图。
图4为本发明方法的流程图。
具体实施方式
实施例1。一种基于AVS的4×4离散余弦变换的快速并行装置,参阅图1~图3。本实施例的离散余弦变换采用的是行列分离算法,即先进行行变换,再进行列变换。
本实施例包括以下正变换装置和反变换装置:
正变换转置:用于对帧内预测或帧间预测产生的残差系数矩阵进行4×4离散余弦变换,包括:
信号输入模块:接收帧内预测和帧间预测产生的残差系数矩阵,其输入端连接帧内预测或帧间预测残差系数矩阵输出端,
行正变换模块:对输入的残差系数矩阵作水平方向的4×4离散余弦行正变换,得到中间结果,
列正变换模块:将行变换模块所得中间结果进行竖直方向的4×4离散余弦列正变换,
输出模块:将变换系数矩阵输出至量化模块进行量化和后续编码过程;
反变换装置:用于对反变换所得图像参数矩阵进行4×4离散余弦反变换,包括:
信号输入模块:接收反量化模块产生的系数矩阵,
行反变换模块:对输入的反量化系数矩阵作水平方向的4×4离散余弦行反变换,得到中间结果,
列反变换模块:将行反变换模块所得中间结果进行竖直方向的4×4离散余弦列反变换,
系数调整模块:对反变换后的系数按照AVS标准进行调整,
输出模块:将变换系数矩阵输出至运动补偿模块进行后续解码过程,
反变换模块:对反变换所得图像参数矩阵进行4×4离散余弦反变换,其输入端输入反量化所得图像参数矩阵,输出端输出反变换系数矩阵。
上述快速并行装置包含两个公共运算模块:
矩阵变换模块,采用核心矩阵进行离散余弦变换的运算,列正变换模块和行反变换模块采用此模块;
转置矩阵变换模块,采用核心矩阵的转置矩阵进行离散余弦变换的运算,行正变换模块和列反变换采用此模块。
上述公共运算模块都包含并行运算子模块和输出排序子模块:
并行运算模块用来进行离散余弦变换的矩阵运算,输出排序模块将输出结果进行排序;
其中矩阵变换模块的并行运算模块包括第一矩阵模块、第二矩阵子矩阵1模块、第二矩阵子矩阵2模块、第三矩阵子矩阵1模块和第三矩阵子矩阵2模块,其中第二矩阵子矩阵1模块和第三矩阵子矩阵1模块可以与第二矩阵子矩阵2模块和第三矩阵子矩阵2模块并行运算;
转置矩阵变换模块的并行运算模块用来进行离散余弦变换的矩阵运算,包括第一转置矩阵模块、第二转置矩阵子矩阵1模块、第二转置矩阵子矩阵2模块、第三转置矩阵子矩阵1模块和第三转置矩阵子矩阵2模块,其中第二转置矩阵子矩阵1模块和第三转置矩阵子矩阵1模块可以与第二转置矩阵子矩阵2模块和第三转置矩阵子矩阵2模块并行运算。
所述核心矩阵为:
其转置矩阵为:
所述核心矩阵的分解矩阵为:
第一矩阵和转置矩阵
第二矩阵 第二矩阵子矩阵1
第二矩阵子矩阵2
第二转置矩阵 第二转置矩阵子矩阵1
第二转置矩阵子矩阵2
第三矩阵 第三矩阵子矩阵1
第三矩阵子矩阵2
第三转置矩阵 第三转置矩阵子矩阵1
第三转置矩阵子矩阵2
第四矩阵和转置矩阵:
矩阵变换模块的并行运算模块包含的:
第一矩阵模块采用矩阵
第二矩阵子矩阵1模块采用矩阵
第二矩阵子矩阵2模块采用矩阵
第三矩阵子矩阵1模块采用矩阵
第三矩阵子矩阵2模块采用矩阵
矩阵变换模块的输出排序模块采用矩阵
转置矩阵变换模块的并行运算模块包含的:
第一转置矩阵模块块采用矩阵
第二转置矩阵子矩阵1模块采用矩阵
第二转置矩阵子矩阵2模块采用矩阵
第三转置矩阵子矩阵1模块采用矩阵
第三转置矩阵子矩阵2模块采用矩阵
转置矩阵变换模块输出排序模块采用矩阵:
正变换对于帧内帧间预测残差,进行如下的4×4变换:
其中[X]为帧内帧间预测残差系数二维矩阵,对应与正变换模块中输入模块输入的矩阵;[Y]为变换后的输出系数二维矩阵,经输出模块输出至量化模块进行系数调整和量化;对应于行正变换模块,采用转置矩阵变换模块;T4对应于列正变换模块,采用矩阵变换模块。
反变换对于反量化后得系数矩阵,进行如下的4×4反变换:
其中[Y]为反量化所得二维系数矩阵,对应与反变换模块中输入模块输入的矩阵;[X]为变换后的输出二维系数矩阵,经输出模块输出至系数调整模块进行系数调整;T4对应于行反变换模块,将采用矩阵变换模块。对应于列反变换模块,将采用转置矩阵变换模块。
参阅图2和图3:
核心矩阵的转置矩阵被分解为四个矩阵,第一转置矩阵AT对应于第一转置矩阵模块;第二转置矩阵的子矩阵1为对应于第二转置矩阵子矩阵1模块,它的子矩阵2为对应于第二转置矩阵子矩阵2模块;第三转置矩阵的子矩阵1为应于第三转置矩阵子矩阵1模块,它的子矩阵2为对应于第三转置矩阵子矩阵2模块;第四转置矩阵PT对应于输出排序模块。
核心矩阵T4被分解为四个矩阵,第一矩阵A对应于第一矩阵模块;第二矩阵M2的子矩阵1为M21,对应于第二矩阵子矩阵1模块,它的子矩阵2为M22,对应于第二矩阵子矩阵2模块;第三矩阵M1的子矩阵1为M11,对应于第三矩阵子矩阵1模块,它的子矩阵2为M12。对应于第三矩阵子矩阵2模块;第四矩阵P对应于输出排序模块。
实施例2。一种基于AVS的4×4离散余弦变换的快速并行装置的方法,参阅图4及图2、图3。
基于AVS的4×4离散余弦变换的快速并行装置的方法包括如下正变换和反变换实现步骤:
正变换步骤:
步骤1:信号输入模块接收帧内预测和帧间预测产生的残差系数矩阵,
步骤2:行正变换模块对输入的残差系数矩阵作水平方向的4×4离散余弦行变换,
步骤3:列正变换模块将行正变换模块所得中间结果进行竖直方向的4
×4离散余弦列正变换,
步骤4:输出模块将变换所得系数矩阵输出至量化模块,进行参数调整、量化及后续编码过程;
反变换步骤:
步骤1:信号输入模块接收反量化模块产生的系数矩阵,
步骤2:行反变换模块对输入的反量化系数矩阵作水平方向的4×4离散余弦行反变换,
步骤3:列反变换模块将行反变换模块所得中间结果进行竖直方向的4×4离散余弦列反变换,
步骤4:系数调整模块对反变换后的系数按照AVS标准进行调整,
步骤5:输出模块将变换所得系数矩阵输出至运动补偿模块,进行运动补偿及后续解码过程。
正变换步骤2还包括:
步骤20:将该步骤2中所用核心矩阵的转置矩阵,分解为四个矩阵:第一转置矩阵、第二转置矩阵、第三转置矩阵和第四转置矩阵,
步骤21:将残差系数矩阵依次按行取出左乘第一转置矩阵,
步骤22:将上一步骤所得系数向量,分为两部分并行处理:将前两个元素作为第一子向量,依次与第二转置矩阵的子矩阵1和第三转置矩阵的子矩阵1左乘,将后两个元素作为第二子向量,依次与第二转置矩阵的子矩阵2和第三转置矩阵的子矩阵2左乘,
步骤23:将计算结果经输出排序模块,按照第四转置矩阵排序输出至暂存区,
步骤24:重复以上步骤21到23直至全部矩阵计算完成;
其正变换步骤3还包括:
步骤30:该步骤3中所用核心变换矩阵,同样分解为四个矩阵:第一矩阵、第二矩阵、第三矩阵和第四矩阵,其中前三个矩阵对应于并行运算子模块,最后一个矩阵对应于输出排序子模块,
步骤31:行变换所得系数矩阵依次按列取出右乘第一矩阵,
步骤32:将上一步骤所得系数向量,分为两部分并行处理:将前两个元素作为第一子向量,依次与第二矩阵的子矩阵1和第三矩阵的子矩阵1右乘,将后两个元素作为第二子向量,依次与第二矩阵的子矩阵2和第三矩阵的子矩阵2右乘,
步骤33:将计算结果经输出排序模块,按照第四矩阵排序输出至暂存区,
步骤34:重复以上步骤31到33直至全部矩阵计算完成;
其反变换步骤2还包括:
步骤20:该步骤2中所用核心变换矩阵,同样分解为四个矩阵:第一矩阵、第二矩阵、第三矩阵和第四矩阵,其中前三个矩阵对应于并行运算子模块,最后一个矩阵对应于输出排序子模块,
步骤21:输入的反量化系数矩阵依次按行取出左乘第四矩阵,
步骤22:将上一步骤所得系数向量,分为两部分并行处理:将前两个元素作为第一子向量,依次与第三矩阵的子矩阵1和第二矩阵的子矩阵1左乘,将后两个元素作为第二子向量,依次与第三矩阵的子矩阵2和第二矩阵的子矩阵2左乘,
步骤23:将计算结果左乘第一矩阵,并输出至暂存区,
步骤24:重复以上步骤21到23直至全部矩阵计算完成;
其反变换步骤3还包括:
步骤30:该步骤3中所用核心变换矩阵的转置,分解为四个矩阵:第一转置矩阵,第二转置矩阵,第三转置矩阵,第四转置矩阵,其中前三个矩阵对应于并行运算子模块,最后一个矩阵对应于输出排序子模块,
步骤31:将行反变换系数矩阵依次按列取出右乘第四矩阵,
步骤32:将上一步骤所得系数向量,分为两部分并行处理,将前两个元素作为第一子向量,依次与第三转置矩阵的子矩阵1和第二转置矩阵的子矩阵1右乘,将后两个元素作为第二子向量,依次与第三转置矩阵的子矩阵2和第二转置矩阵的子矩阵2右乘,
步骤33:将计算结果右乘第一转置矩阵,并输出至暂存区,
步骤34:重复以上步骤31到33直至全部矩阵计算完成。
也就是说,基于AVS 4×4离散余弦变换的快速并行正变换包括以下步骤:
第一步:行正变换模块将输入模块输入的残差系数矩阵作水平方向的4×4离散余弦行正变换。
1.首先按行取帧内预测和帧间预测得出的图像参数为X=[x00,x01,x02,x03];
2.用X左乘第一矩阵AT,得中间结果:T=[t0,t1,t2,t3],
t0=x00+x03,t1=x01+x02,t2=x01-x02,t3=x00-x03;
g0=t0+t1,g1=t0-t1
[v0,v1],v0=2g0,v1=2g1
[v2,v3],v2=2g2+g3,v3=-g2+2g3,2g2和2g3用左移1位来实现
5.输出排序模块进行输出排序得:y0=v0,y1=v2,y2=v1,y3=v3
6.输出模块将结果输出得行正变换矩阵行向量Y=[y00,y01,y02,y03]=[y0,y1,y2,y3]
7.重复1到6步直到将所有残差矩阵内向量计算完毕。
第二步,列正变换模块将行正变换所得中间结果矩阵进行竖直方向的4×4离散余弦列正变换。
8.首先按列取帧内预测和帧间预测得出的图像参数为
x=[x00,x10,x20,x30]T;
9.用X右乘第一矩阵A,得中间结果:T=[t0,t1,t2,t3]T,
t0=x00+x30,t1=x10+x20,t2=x10-x20,t3=x00-x30;
10.并行计算:[t0,t1]T乘以第二矩阵子矩阵1 M21,得中间结果[g0,g1]T,
g0=t0+t1,g1=t0-t1
[t2,t3]T乘以第二矩阵子矩阵2 M22,得中间结果[g2,g3]T,
g2=t3+t2,g3=t3-t2
11.并行计算:
[g0,g1]T乘以第三矩阵子矩阵1 M11,得中间结果
[v0,v1]T,v0=2g0,v1=2g1
v3=-g2+2g3;2g2和2g3用左移1位来实现
12.输出排序模块进行输出排序得:y0=v0,y1=v2,y2=v1,y3=v3.
13.输出模块将结果输出得DCT反变换矩阵行向量:
Y=[y00,y10,y20,y30]T=[y0,y1,y2,y3]T
14.重复1到6步直到将所有矩阵内向量计算完毕得DCT变换矩阵[Y]。
15.输出模块将DCT变换矩阵[Y]输出到量化模块进行系数调整和量化,并进行后续编码过程。
基于AVS4×4离散余弦变换的快速并行反变换包括以下步骤:
第一步,行反变换模块将反量化所得矩阵进行水平方向的4×4离散余弦列反变换。
1.先按行取反量化所得矩阵得出的参数为Y=[y00,y01,y02,y03];
2.用Y左乘第四矩阵P,得中间结果:T=[t0,t1,t2,t3],
t0=y00,t1=y02,t2=y01,t3=y03;
3.并行计算:[t0,t1]乘以第三矩阵子矩阵1 M11,得中间结果[g0,g1],g0=2t0,g1=2t1
[t2,t3]乘以第三矩阵子矩阵2 M12,得中间结果[g2,g3],g2=2t2-t3,g3=t2+2t3,2t2和2t3用左移1位来实现;
4.并行计算:[g0,g1]乘以第二矩阵子矩阵1 M21,得中间结果
[v0,v1],v0=g0+g1,v1=g0-g1;
[g2,g3]乘以第二矩阵子矩阵2 M22,得中间结果
[v2,v3],v2=g2-g3,v3=g2+g3;
5.与第一矩阵A相乘得:y0=v0+v3,y1=v1+v2,y2=v1-v2,y3=v0-v3。
6.输出模块将结果输出得行正变换矩阵行向量
X=[x00,x01,x02,x03]=[y0,y1,y2,y3]
7.重复1到6步直到将所有矩阵内向量计算完毕。
第二步:列反变换模块将行反变换模块所得结果进行竖直方向得4×4反变换:
8.先按列取行反变换所得矩阵得出的参数为
Y=[y00,y10,y20,y30]T
9.用Y右乘第四转置矩阵PT,得中间结果:T=[t0,t1,t2,t3]T,
t0=y00,t1=y20,t2=y10,t3=y30;
[g0,g1]T,g0=2t0,g1=2t1
[t2,t3]T乘以第三转置矩阵子矩阵2 得中间结果[g2,g3]T,g2=2t2-t3,g3=t2+2t3,2t2和2t3用左移1位来实现
[v0,v1]T,v0=g0+g1,v1=g0-g1;
[g2,g3]T乘以第二转置矩阵子矩阵得中间结果
[v2,v3]T,v2=g2-g3,v3=g2+g3;
12.与第一转置矩阵AT相乘得:y0=v0+v3,y1=v1+v2,y2=v1-v2,y3=v0-v3。
13、输出模块将结果输出得DCT变换矩阵行向量
x=[x00,x10,x20,x30]T=[y0,y1,y2,y3]T
14.重复1到6步直到将所有矩阵内向量计算完毕得DCT反变换矩阵[X]。
15.系数调整模块将DCT反变换矩阵[X]进行如下调整,
xij=[xij+24]>>5,i,j=0~4
16.输出模块将DCT反变换矩阵[X]输出进行运动补偿以及后续解码过程。
实施例1和实施例2能够减少运算量并使DCT变换真正实现无乘法运算,提高编码效率,降低其实现装置的复杂程度;还可使DCT可进行并行运算,进一步提高编码效率。它可广泛应用于基于AVS的数字音视频编解码中。
Claims (4)
1.一种基于AVS的4×4离散余弦变换的快速并行装置,其特征在于它包括以下正变换装置和反变换装置:
正变换转置:用于对帧内预测或帧间预测产生的残差系数矩阵进行4×4离散余弦变换,包括:
信号输入模块:接收帧内预测和帧间预测产生的残差系数矩阵,其输入端连接帧内预测或帧间预测残差系数矩阵输出端,
行正变换模块:对输入的残差系数矩阵作水平方向的4×4离散余弦行正变换,得到中间结果,
列正变换模块:将行变换模块所得中间结果进行竖直方向的4×4离散余弦列正变换,
输出模块:将变换系数矩阵输出至量化模块进行量化和后续编码过程;
反变换装置:用于对反变换所得图像参数矩阵进行4×4离散余弦反变换,包括:
信号输入模块:接收反量化模块产生的系数矩阵,
行反变换模块:对输入的反量化系数矩阵作水平方向的4×4离散余弦行反变换,得到中间结果,
列反变换模块:将行反变换模块所得中间结果进行竖直方向的4×4离散余弦列反变换,
系数调整模块:对反变换后的系数按照AVS标准进行调整,
输出模块:将变换系数矩阵输出至运动补偿模块进行后续解码过程,
所述快速并行装置,包含两个公共运算模块:
矩阵变换模块,采用核心矩阵进行离散余弦变换的运算,列正变换模块和行反变换模块采用此模块;
转置矩阵变换模块,采用核心矩阵的转置矩阵进行离散余弦变换的运算,行正变换模块和列反变换采用此模块,
所述公共运算模块都包含并行运算子模块和输出排序子模块:
并行运算模块用来进行离散余弦变换的矩阵运算,输出排序模块将输出结果进行排序;
其中矩阵变换模块的并行运算模块包括第一矩阵模块、第二矩阵子矩阵1模块、第二矩阵子矩阵2模块、第三矩阵子矩阵1模块和第三矩阵子矩阵2模块,其中第二矩阵子矩阵1模块和第三矩阵子矩阵1模块可以与第二矩阵子矩阵2模块和第三矩阵子矩阵2模块并行运算;
转置矩阵变换模块的并行运算模块用来进行离散余弦变换的矩阵运算,包括第一转置矩阵模块、第二转置矩阵子矩阵1模块、第二转置矩阵子矩阵2模块、第三转置矩阵子矩阵1模块和第三转置矩阵子矩阵2模块,其中第二转置矩阵子矩阵1模块和第三转置矩阵子矩阵1模块可以与第二转置矩阵子矩阵2模块和第三转置矩阵子矩阵2模块并行运算,
所述核心矩阵为:
其转置矩阵为:
所述核心矩阵的分解矩阵为:
第一矩阵和转置矩阵
第二矩阵 第二矩阵子矩阵1
第二矩阵子矩阵2
第二转置矩阵 第二转置矩阵子矩阵1
第二转置矩阵子矩阵2
第三矩阵 第三矩阵子矩阵1
第三矩阵子矩阵2
第三转置矩阵 第三转置矩阵子矩阵1
第三转置矩阵子矩阵2
第四矩阵和转置矩阵:
2.按照权利要求1所述的基于AVS的4×4离散余弦变换的快速并行装置,其特征在于矩阵变换模块的并行运算模块包含的:
第一矩阵模块采用矩阵
第二矩阵子矩阵1模块采用矩阵
第二矩阵子矩阵2模块采用矩阵
第三矩阵子矩阵1模块采用矩阵
第三矩阵子矩阵2模块采用矩阵
矩阵变换模块的输出排序模块采用矩阵
转置矩阵变换模块的并行运算模块包含的:
第一转置矩阵模块块采用矩阵
第二转置矩阵子矩阵1模块采用矩阵
第二转置矩阵子矩阵2模块采用矩阵
第三转置矩阵子矩阵1模块采用矩阵
第三转置矩阵子矩阵2模块采用矩阵
转置矩阵变换模块输出排序模块采用矩阵:
3.一种按照权利要求1所述的基于AVS的4×4离散余弦变换的快速并行装置的方法,其特征在于它包括如下正变换和反变换实现步骤:
正变换步骤:
步骤1:信号输入模块接收帧内预测和帧间预测产生的残差系数矩阵,
步骤2:行正变换模块对输入的残差系数矩阵作水平方向的4×4离散余弦行变换,
步骤3:列正变换模块将行正变换模块所得中间结果进行竖直方向的4×4离散余弦列正变换,
步骤4:输出模块将变换所得系数矩阵输出至量化模块,进行参数调整、量化及后续编码过程;
反变换步骤:
步骤1:信号输入模块接收反量化模块产生的系数矩阵,
步骤2:行反变换模块对输入的反量化系数矩阵作水平方向的4×4离散余弦行反变换,
步骤3:列反变换模块将行反变换模块所得中间结果进行竖直方向的4×4离散余弦列反变换,
步骤4:系数调整模块对反变换后的系数按照AVS标准进行调整,
步骤5:输出模块将变换所得系数矩阵输出至运动补偿模块,进行运动补偿及后续解码过程。
4.按照权利要求3所述的基于AVS的4×4离散余弦变换的快速并行方法,其特征在于其正变换步骤2还包括:
步骤20:将该步骤2中所用核心矩阵的转置矩阵,分解为四个矩阵:第一转置矩阵、第二转置矩阵、第三转置矩阵和第四转置矩阵,
步骤21:将残差系数矩阵依次按行取出左乘第一转置矩阵,
步骤22:将上一步骤所得系数向量,分为两部分并行处理:将前两个元素作为第一子向量,依次与第二转置矩阵的子矩阵1和第三转置矩阵的子矩阵1左乘,将后两个元素作为第二子向量,依次与第二转置矩阵的子矩阵2和第三转置矩阵的子矩阵2左乘,
步骤23:将计算结果经输出排序模块,按照第四转置矩阵排序输出至暂存区,
步骤24:重复以上步骤21到23直至全部矩阵计算完成;
其正变换步骤3还包括:
步骤30:该步骤3中所用核心变换矩阵,同样分解为四个矩阵:第一矩阵、第二矩阵、第三矩阵和第四矩阵,其中前三个矩阵对应于并行运算子模块,最后一个矩阵对应于输出排序子模块,
步骤31:行变换所得系数矩阵依次按列取出右乘第一矩阵,
步骤32:将上一步骤所得系数向量,分为两部分并行处理:将前两个元素作为第一子向量,依次与第二矩阵的子矩阵1和第三矩阵的子矩阵1右乘,将后两个元素作为第二子向量,依次与第二矩阵的子矩阵2和第三矩阵的子矩阵2右乘,
步骤33:将计算结果经输出排序模块,按照第四矩阵排序输出至暂存区,
步骤34:重复以上步骤31到33直至全部矩阵计算完成;
其反变换步骤2还包括:
步骤20:该步骤2中所用核心变换矩阵,同样分解为四个矩阵:第一矩阵、第二矩阵、第三矩阵和第四矩阵,其中前三个矩阵对应于并行运算子模块,最后一个矩阵对应于输出排序子模块,
步骤21:输入的反量化系数矩阵依次按行取出左乘第四矩阵,
步骤22:将上一步骤所得系数向量,分为两部分并行处理:将前两个元素作为第一子向量,依次与第三矩阵的子矩阵1和第二矩阵的子矩阵1左乘,将后两个元素作为第二子向量,依次与第三矩阵的子矩阵2和第二矩阵的子矩阵2左乘,
步骤23:将计算结果左乘第一矩阵,并输出至暂存区,
步骤24:重复以上步骤21到23直至全部矩阵计算完成;
其反变换步骤3还包括:
步骤30:该步骤3中所用核心变换矩阵的转置,分解为四个矩阵:第一转置矩阵,第二转置矩阵,第三转置矩阵,第四转置矩阵,其中前三个矩阵对应于并行运算子模块,最后一个矩阵对应于输出排序子模块,
步骤31:将行反变换系数矩阵依次按列取出右乘第四转置矩阵,
步骤32:将上一步骤所得系数向量,分为两部分并行处理,将前两个元素作为第一子向量,依次与第三转置矩阵的子矩阵1和第二转置矩阵的子矩阵1右乘,将后两个元素作为第二子向量,依次与第三转置矩阵的子矩阵2和第二转置矩阵的子矩阵2右乘,
步骤33:将计算结果右乘第一转置矩阵,并输出至暂存区,
步骤34:重复以上步骤31到33直至全部矩阵计算完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510044689 CN100473161C (zh) | 2005-09-09 | 2005-09-09 | 基于avs的4×4离散余弦变换的快速并行装置及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510044689 CN100473161C (zh) | 2005-09-09 | 2005-09-09 | 基于avs的4×4离散余弦变换的快速并行装置及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1770864A CN1770864A (zh) | 2006-05-10 |
CN100473161C true CN100473161C (zh) | 2009-03-25 |
Family
ID=36751816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200510044689 Active CN100473161C (zh) | 2005-09-09 | 2005-09-09 | 基于avs的4×4离散余弦变换的快速并行装置及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100473161C (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090196342A1 (en) * | 2006-08-02 | 2009-08-06 | Oscar Divorra Escoda | Adaptive Geometric Partitioning For Video Encoding |
CN100452881C (zh) * | 2006-08-07 | 2009-01-14 | 清华大学 | 一种基于合并处理的反量化方法及其装置 |
CN101137063B (zh) * | 2007-01-30 | 2010-12-15 | 海信集团有限公司 | 离散余弦变换装置及用于图像处理的离散余弦变换方法 |
US8756482B2 (en) * | 2007-05-25 | 2014-06-17 | Nvidia Corporation | Efficient encoding/decoding of a sequence of data frames |
CN100563337C (zh) * | 2007-10-24 | 2009-11-25 | 上海广电(集团)有限公司中央研究院 | 基于avs的整数变换量化和整数反变换反量化方法 |
CN101222646B (zh) * | 2008-01-30 | 2010-06-02 | 上海广电(集团)有限公司中央研究院 | 一种适用于avs编码的帧内预测装置及预测方法 |
CN101888556B (zh) * | 2008-03-19 | 2012-04-25 | 华为技术有限公司 | 编码、解码方法和编码、解码装置 |
CN101562744B (zh) * | 2008-04-18 | 2014-04-23 | 展讯通信(上海)有限公司 | 二维反变换装置 |
CN101605259B (zh) * | 2009-05-31 | 2012-11-21 | 华亚微电子(上海)有限公司 | 对多媒体数据进行变换编、解码的装置及方法 |
CN101977318B (zh) * | 2010-10-29 | 2012-02-08 | 西安电子科技大学 | Dct量化的并行装置及其方法 |
GB2486726B (en) | 2010-12-23 | 2017-11-29 | British Broadcasting Corp | Compression of pictures |
TWI570573B (zh) * | 2014-07-08 | 2017-02-11 | 財團法人工業技術研究院 | 矩陣轉置電路 |
CN111556319B (zh) * | 2020-05-14 | 2021-12-17 | 电子科技大学 | 一种基于矩阵分解的视频编码方法 |
-
2005
- 2005-09-09 CN CN 200510044689 patent/CN100473161C/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN1770864A (zh) | 2006-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100473161C (zh) | 基于avs的4×4离散余弦变换的快速并行装置及其方法 | |
CN100463522C (zh) | 图像和视频编码用的改进的块变换和量化 | |
US7127482B2 (en) | Performance optimized approach for efficient downsampling operations | |
Shams et al. | NEDA: A low-power high-performance DCT architecture | |
RU2413983C2 (ru) | Обратимое преобразование для сжатия двумерных данных с потерями и без потерь | |
CN1697328B (zh) | 快速视频编解码变换实现 | |
MX2008008987A (es) | Transformadas con factores comunes. | |
US7263544B2 (en) | Performance optimized approach for efficient numerical computations | |
CN106254883B (zh) | 一种视频解码中的反变换方法和装置 | |
CN102595112B (zh) | 视频编码中编码和重建图像块的方法 | |
US6181831B1 (en) | Spatial frequency-domain video signal processing | |
CN101640791A (zh) | 一种解码方法、装置和解码器 | |
CN100477795C (zh) | Mpeg-2到h.264压缩域视频转码器系数转换方法 | |
CN102006478A (zh) | 一种视频解码的反变换方法及装置 | |
Wang et al. | 1-D and 2-D transforms from integers to integers | |
CN101729886B (zh) | 一种视频解码方法、系统和设备 | |
JPS63219066A (ja) | 直交変換装置 | |
CN102447898B (zh) | 用fpga实现klt变换的方法 | |
Petrovsky et al. | Embedded distributed arithmetic based quaternions multiplier of paraunitary filter bank for lossless-to-lossy image coding | |
He et al. | Improved conversion from DCT blocks to integer cosine transform blocks in H. 264/AVC | |
US20050004962A1 (en) | Scalable system for inverse discrete cosine transform and method thereof | |
JPH0644291A (ja) | 離散コサイン変換器及び情報符号化器 | |
CN102045569A (zh) | 用于视频编码器的整数变换装置及其实现方法 | |
CN101316367B (zh) | 一种视频编解码标准中的二维反变换方法及其实现电路 | |
US6374280B1 (en) | Computationally efficient inverse discrete cosine transform method and apparatus |
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 |