一、实验目的
学习图像离散余弦变换的原理,掌握图像的读取方法,并实现在LCD上显示余弦变换前后的图像。
二、实验原理
图像离散余弦变换
图像的离散余弦变换广泛用于图像的压缩。对原始图像进行离散余弦变换,变换后DCT系数能量主要集中在左上角,其余大部分系数接近于零,DCT具有适用于图像压缩的特性。将变换后的DCT系数进行门限操作,将小于一定值得系数归零,这就是图像压缩中的量化过程,然后进行逆DCT运算,可以得到压缩后的图像。
离散余弦变换(DCT for Discrete Cosine Transform)是与傅里叶变换相关的一种变换,它类似于离散傅里叶变换(DFT for Discrete Fourier Transform),但是只使用实数。离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换,这个离散傅里叶变换是对一个实偶函数进行的(因为一个实偶函数的傅里叶变换仍然是一个实偶函数),在有些变形里面需要将输入或者输出的位置移动半个单位。
对于给定的实际数据序列x( 0 ),X( 1 ),x( 2 )……X(N-1)的DCT算法如下:
其中:
二维离散余弦变换如下:
其逆运算是:
量化
量化过程实际上就是对DCT系数的一个优化过程。它是利用了人眼对高频部分不敏感的特性来实现数据的大幅简化。整个过程实际上是简单地把频率领域上每个成份,除以一个对应于该成份的常数,接着四舍五入取最接近的整数。这是整个过程中的主要的运算。以这个结果来说,经常会把很多高频率的成份四舍五入而接近0,且剩下很多会变成小的正或负数。
整个量化的目的是减小非“0”系数的幅度以及增加“0”值系数的数目。量化是图像质量下降的最主要原因。
因为人眼对亮度信号比对色差信号更敏感,因此使用了下表两种量化表:亮度量化值和色差量化值。
JPEG亮度量化表
JPEG色度量化
程序流程设计
程序流程设计中首先要进行外设使能配置,接着进行LCD管脚复用配置和LCD中断配置,进行LCD显示的初始化,然后读取工程目录下的BMP图像并进行图片的色彩分离,进行DCT和IDCT变换,最后将图像还原并将图像数据显示到LCD上。
图形处理库
C6000 图像处理库 (IMGLIB) 是为 C 程序员优化的图像/视频处理函数库。它包括 C 可调用的通用图像/视频处理例程,使用这些例程,可以获得比使用同等标准 ANSI C 语言代码更高的性能。通过提供带有源代码的即用型 DSP 功能,IMGLIB 可以显着缩短应用程序开发时间。提供的功能包括压缩、视频处理、机器视觉和医学成像。本实验中使用的功能是图像压缩和解压,实现正向和反向 DCT。
TMS320C6748处理器使用的是imglib_c64Px_3_1_0_1。
imglib_c64Px_3_1_0_1
将安装到CCS5.5 的安装路径,安装完成后会有相应的文件夹出现。源码所在路径:\imglib_c64Px_3_1_0_1\packages\ti\vlib\src
DCT变换
程序使用 IMGLIB 的库来进行DCT变换,调用的程序源码和使用说明可以安装IMGLIB后查看。调用的DCT变换函数中,第一个参数是指向 8x8 DCT 块的指针,第二个参数是DCT块的数量。
IDCT反变换
程序使用 IMGLIB 的库来进行IDCT反变换,调用的程序源码和使用说明可以安装IMGLIB后查看。调用的DCT变换函数中,第一个参数是指向 8x8 IDCT 块的指针,第二个参数是IDCT块的数量。
三、操作现象
实验设备
硬件连接
(1)连接仿真器和电脑的USB接口,
(2)将拨码开关拨到DEBUG模式01111,连接实验箱电源,拨动电源开关上电。
软件操作
导入工程,选择Demo文件夹下的对应工程
编译工程,生成可执行文件
将CCS连接实验箱并加载程序
程序加载完成后点击运行程序
运行程序后,CCS的Console窗口会打印相关信息,同时LCD会显示标题。
稍等片刻后,图像处理完成,LCD会显示原图像、DCT变换图像、IDCT变换图像及还原后的图像。
实验结束后,先点击黄色按钮暂停程序运行,再点击红色按钮退出CCS与实验箱的连接,最后实验箱断电即可。