利用TMS320C6201芯片进行图像压缩
图4 量化表
3 利用DSP芯片进行图像压缩
3.1 图像压缩器的工作过程
图像压缩器工作过程方框图如图3所示。
图像数据通过I/O接口送入数字信号处理板,由DSP芯片中的DMA控制器负责将数据放入输入缓冲区中,DSP对缓冲的图像数据进行压缩后,通过HPI接口将压缩数据送出。
3.2 编程介绍
这里主要介绍压缩参数初始化和压缩程序。
3.2.1 压缩参数初始化
由图2所示的图像压缩算法可知,图像压缩过程中需要量化表和编码表,量化表如图4(a)所示。
量化操作就是把8×8图块进行FDCT变换,将变换后的的DCT系数用量化表元素来除。由于DSP中有硬件乘法器和移位指令,为了充分提高程序的执行
速度,应该将除法运算转化为乘法运算和移位运算,对上面的量化表元素逐个求倒数并用16进制表示,如图4(b)所示。
编码表有两个,一个是直流差值编码表,另一个是交流系数编码表,如图5所示。
编码表中的最左端的一列代表中间码字,具体编码时要根据8x8图块的DCT系数产生中间码字,再由中间码字查编码表,将中间码字转换为霍夫曼码,完成编码。在DSP程序初始化阶段要生成量化表和编码表,量化表可直接将图4(b)所示的量化表元素代入来得到,编码表就要按照霍夫曼码的编码方法生成霍夫曼码来得到。由于在压缩过程中要频繁地查找编码表,因此,编码表的组织形式对程序的执行效率影响很大。
3.2.2 压缩程序
图像压缩包括FDCT变换、标量量化、Zigzag扫描和编码等几个步骤,下面分别介绍。
3.2.2.1FDCT变换
DCT变换公式如下:
式中,Cu,Cv=
具体压缩的时候要采用DCT变换的快速算法来加快程序的运行速度,将二维的DCT变换分解为两个一维的DCT变换,可以有效地降低计算量。CCS2.0(Code Composer Studio)中提供了一个成熟的C语言函数库,里面包含了进行FDCT变换的函数。函数原型如下:
void fdct_8×8(short *dct_data, unsigned num_fdcts);
函数中dct_data指针指向待变换的图像数据,
《利用TMS320C6201芯片进行图像压缩(第3页)》