基于预计算和后校正的通用处理器快速正反精确DCT算法
马子扬
摘要:为了尽量提高正反向DCT(离散余弦变换)程序在通用CPU上的执行速度,推导了一种需要乘法次数更少的快速正反DCT算法,该算法基于预先计算的校验系数矩阵,如果和图像/视频压缩中的量化/逆量化过程合并,还可以进一步减少乘法的计算次数。算法使用乘法144次,加法464次,和量化结合后算法可以减少乘法到80次。而现在通常使用的快速精确算法(Chen-wang算法)需要乘法176次,加法464次。
关键词:DCT;快速算法;算法推导
正文:
正反向DCT(离散余弦变换)运算一直是视频压缩编码解码软件的核心部分,其计算的性能将直接影响图片/影像的编码/显示速度,成为制约这类多媒体程序运行效率的关键。
正反向DCT变换的运算主要涉及到余弦系数矩阵的乘法和加法运算,而对于一般的通用处理器(例如PC机器的Intel/AMD处理器),乘法运算消耗的CPU时间远远大于加法运算的时间。
这里介绍一种能和量化/逆量化过程结合从而减少乘法/加法运算次数的精确算法的推导过程:
7
由DCT定义式:F(0)=sqrt(2)/4 * ∑ f(x)
x=0
7
F(k)=0.5 * ∑ f(x)*cos( (2*x+1)*k*PI/16 ) (k=1,2,... 7)
x=0
先计算偶数项:
*f(0) *f(1) *f(2) *f(3) *f(4) *f(5) *f(6) *f(7)
F(0)=sqrt(2)/4 [ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ]