基于DCT的图像压缩及Matlab实现16页

上传人:文库****9 文档编号:173996497 上传时间:2021-03-15 格式:DOC 页数:16 大小:616.50KB
返回 下载 相关 举报
基于DCT的图像压缩及Matlab实现16页_第1页
第1页 / 共16页
基于DCT的图像压缩及Matlab实现16页_第2页
第2页 / 共16页
基于DCT的图像压缩及Matlab实现16页_第3页
第3页 / 共16页
基于DCT的图像压缩及Matlab实现16页_第4页
第4页 / 共16页
基于DCT的图像压缩及Matlab实现16页_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《基于DCT的图像压缩及Matlab实现16页》由会员分享,可在线阅读,更多相关《基于DCT的图像压缩及Matlab实现16页(16页珍藏版)》请在金锄头文库上搜索。

1、通信专业课程设计一 太原科技大学太原科技大学 课课 程程 设设 计(论计(论 文)文) 设计设计( (论文论文) )题目:基于题目:基于 DCTDCT 的图像压缩及的图像压缩及 MatlabMatlab 实现实现 姓姓 名名_ _ _ _ _ 学学 号号 _ _ 班班 级级_ _ 学学 院院_ _ _ _ _ 指导教师指导教师_ _ _ _ _ 2010 年 12 月 31 日 太原科技大学课程设计(论文)任务书 学院(直属系): 时间: 学 生 姓 名指 导 教 师 设计(论文)题目基于 DCT 的图像压缩及 Matlab 实现 主要研 究内容 掌握 DCT 变换实现图像压缩的基本方法,在不

2、损害图像信源的 有效信息量的情况下保证图像的质量,在 MATLAB 环境中进行图像 压缩技术的仿真,并对仿真结果进行分析。 研究方法 主要运用实验法与观察法,通过编写程序实现对图像的 DCT 变 换,观察图像结果进而实现对 DCT 变换的研究。 主要技术 指标(或研 究目标) 利用DCT变换编码方法进行图像压缩,提高信息传输的有效性及 通信质量。 教研室 意见 教研室主任(专业负责人)签字: 年 月 日 白杏林:基于 DCT 图像压缩及 Matlab 实现 I 目 录 摘 要 .II 第 1 章 绪论 .- 1 - 第 2 章 DCT 变换概述.- 2 - 2.1 DCT 函数介绍 .- 2

3、- 2.2 DCT 变换介绍.- 2 - 2.2.1 DCT 变换原理 .- 2 - 2.2.2 DCT 变换编码的步骤 .- 3 - 第 3 章 程序运行及结果分析. .- 5 - 3.1 程序代码 .- 5 - 3.2 运行结果分析 .- 7 - 第 4 章 结论 .- 11 - 参考文献 .- 12 - 白杏林:基于 DCT 图像压缩及 Matlab 实现 II 基于 DCT 变换函数的图像压缩 摘 要 图像压缩是关于用最少的数据量来表示尽可能多的原图像的信息的一个过程。对于 图像来说,如果需要进行快速或实时传输以及大量存储,就需要对图像数据进行压缩, 在同等的用心容量下如果图像数据压缩

4、后再传输,就可以传输更多的图像信息,也就 可以增加通信的能力。变换编码是把图像中的各个像素从一种空间变换到另一种空 间然后针对变换后的信号进行量化与编码操作的一种图象压缩编码技术。 本文提出了基于 DCT 变换的 JPEG 图像压缩编码算法进行研究,并通过对比分析各 种软件特性选取了 MATLAB 进行实验仿真,重点介绍了压缩编码的具体过程和方法 ,详细 介绍了编码中 DCT 变换、量化、熵编码等模块的原理和数学推导以及各模块的功能分析, 基于 DCT 变换的 JPEG 图像压缩方法简单、方便,既能保证有较高的压缩比,又能保证有 较好的图像质量,应用 MATLAB 仿真出来的结果较好的反应了其

5、编码算法原理。 关键词: 图像压缩 DCT 变换 JPEG MATLAB 白杏林:基于 DCT 图像压缩及 Matlab 实现 - 1 - 第 1 章绪论 离散余弦变换(DCT for Discrete Cosine Transform)是与傅里叶变换相关的一种变 换,它类似于离散傅里叶变换(DFT for Discrete Fourier Transform),但是只使用实数。 离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换,这个离散傅里叶变换是 对一个实偶函数进行的(因为一个实偶函数的傅里叶变换仍然是一个实偶函数),在有些 变形里面需要将输入或者输出的位置移动半个单位(DCT 有

6、8 种标准类型,其中 4 种是常 见的)。 最常用的一种离散余弦变换的类型是下面给出的第二种类型,通常所说的离散 余弦变换指的就是这种。它的逆,也就是下面给出的第三种类型,通常相应的被称为 反离散余弦变换 ,逆离散余弦变换 或者IDCT。 有两个相关的变换,一个是离散正弦变换 (DST for Discrete Sine Transform),它 相当于一个长度大概是它两倍的实奇函数的 离散傅里叶变换 ;另一个是改进的离散 余弦变换(MDCT for Modified Discrete Cosine Transform),它相当于对交叠的数 据进行离散余弦变换。 白杏林:基于 DCT 图像压缩

7、及 Matlab 实现 - 2 - 第 2 章 DCT 变换概述 2.1 DCT 函数介绍 常用的信源编码方法有算术编码、矢量量化、预测编码和变换编码等多种方法,变 换编码就是经变换后的信号的样值能更有效地编码,也就是通过变换来解除或减弱信源 符号间的相关性,再将变换后的样值进行标量量化,或采用对于独立信源符号的编码方 法,以达到压缩码率的目的。 在实用中常用离散余弦变换(DCT),尤其是对视频图像信号,其统计特性接近一阶 马尔可夫链,离散余弦变换的正交矢量近似于相应的K-L变换的正交矢量。 余弦变换的完备正交归一函数是 (2-1) (0,) = 1 ,t (2-2) (,) = 2 cos

8、(2 + 1) 2 (0,) 对这些函数在(0,T)内取N个样值,即得离散余弦变换矩阵的元为 (2-3) 0= 1/ (2-4) = 2 cos (2 + 1) 分别可得变换和反变换的矩阵形式。 2.2 DCT 变换介绍 2.2.1 DCT 变换原理 基于DCT(离散余弦变换)压缩编码算法是有失真的压缩编码,图2.1为DCT变换编码 原理图。 原图像 压缩图像 图2.1 DCT变换编码原理图 RGB/YUVDCT量化编码 解码 解量化 IDCTYVU/RGB 白杏林:基于 DCT 图像压缩及 Matlab 实现 - 3 - 2.2.2 DCT 变换编码的步骤 DCT 变换编码的主要步骤是:颜色

9、空间转换,正向离散余弦变换(FDCT),量化,熵 编码(哈达码编码和算术编码)1。 1) 颜色空间转换和采样 JPEG压缩只支持Y颜色模式,其中Y代表亮度,代表色度,所以在将彩色图像 进行数据压缩之前必须对颜色模式进行转换,将RGB模式转为Y模式。转换可通过计算 下述公式完成: Y=0.299R+0.587G+0.114B (2- 5) =-0.169R-0.331G+0.5B (2-6) =0.5R-0.4187G-0.0813B (2-7) 对转换后的数据进行采样,采样比例一般是4:2:2或4:1:1。 经过采样后的图像数据的色度数据比原来减少了一半。选择这样的采样方式是因为 人的视觉对亮

10、度要比对色度更敏感,而重建后的图像与原图的差异是人的视觉所不易察 觉到的。 2)DCT变换2 在进行DCT变换之前,先把图像分成88的子块。 将用P位表示的图像数据(一般用8位表示一个像素的颜色分量),即在0,范 ,2 1 围内表示的无符号整数,变成范围内表示的有符号数,作为DCT变换 2 1 ,2 1 1 的输入量。经过DCT变换,将空域中表示的图像数据转换到频域中进行表示,并获得N个 变换系数。变换公式为 (2-8) (,) = 1 4()() 7 = 0 7 = 0 (,)cos (2 + 1) 16 cos (2 + 1) 16 逆DCT变换公式为 (2-9) (,) = 1 4 7

11、= 0 7 = 0 ()()(,)cos (2 + 1) 16 cos (2 + 1) 16 其中, () = () = 1 2 = = 0 白杏林:基于 DCT 图像压缩及 Matlab 实现 - 4 - 其他 () = () = 1 输出系数排列按Zig-zag排序,其中直流量为DC系数,交流量为AC系数。排列 (,) 中越往后0越多。 3)量化3 为了达到进一步压缩数据的目的,需要对DCT系数进行量化。在JPEG中采用了 (,) 线性均匀量化器,为减少比较数,增加零值,JPEG分别对Y,U,V的不同系统有不同量化间 隔Q(u,v),并提供了亮度与色度两张量化表。 4)熵编码 根据信息论的

12、原理,可以找到最佳数据压缩编码的方法,数据压缩的理论极限是 信息熵。如果要求编码过程中不丢失信息量,即要求保存信息熵,这种信息保持编码 叫熵编码,是根据消息出现概率的分布特性而进行的,是无损数据压缩编码。 根据输入熵编码器表格的符号节点的加权值和与其相邻的其它节点的加权值对哈夫 曼树进行有效的变换,从而提高压缩效率;利用八字形树旋转和准旋转对哈夫曼树进行 有效的变换,从而使输入符号的加权值具有与现在输入的视频数据最合适的值,缩短变 换表格的时间。可以查看相关的码表进行熵编码。 第 3 章 程序调试及运行结果分析 3.1 程序代码 I=imread(cameraman.tif) 白杏林:基于 D

13、CT 图像压缩及 Matlab 实现 - 5 - I=im2double(I) %转换图像矩阵为双精度型。 J=dct2(I); T=dctmtx(8) %产生二维DCT变换矩阵 a1=16 11 10 16 24 40 51 61; 12 12 14 19 26 58 60 55; 14 13 16 24 40 57 69 56; 14 17 22 29 51 87 80 62; 18 22 37 56 68 109 103 77; 24 35 55 64 81 104 113 92; 49 64 78 87 103 121 120 101; 72 92 95 98 112 100 103

14、99 ; for i=1:8:200 for j=1:8:200 P=I(i:i+7,j:j+7); K=T*P*T; I2(i:i+7,j:j+7)=K; K=K./a1; %量化 K(abs(K)0.03)=0; I3(i:i+7,j:j+7)=K; end end figure; imshow(I2); title(DCT变换后的频域图像); %显示DCT变换后的频域图像 for i=1:8:200 for j=1:8:200 P=I3(i:i+7,j:j+7).*a1; %反量化 K=T*P*T; I4(i:i+7,j:j+7)=K; end 白杏林:基于 DCT 图像压缩及 Matl

15、ab 实现 - 6 - end figure; imshow(I4); title(复原图像); B=blkproc(I,8,8,P1*x*P2,T,T) %计算二维DCT,矩阵T及其转置是DCT函数P1*X*P2的参数 mask=1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 %二值掩模,用来压缩DCT系数,只留下DCT系数中左上角的10个 B2=blkproc(B,8 8,P1.*x,

16、mask) %只保留DCT变换的10个系数 I2=blkproc(B2,8 8,P1*x*P2,T,T) %重构图像 figure imshow(I) title(原始图像); figure imshow(I2); title(压缩图像); figure imshow(J); figure mesh(J) %画出J的立体网状图 colorbar(horiz) %在水平条方向用不同的颜色表示曲面的高度 白杏林:基于 DCT 图像压缩及 Matlab 实现 - 7 - 3.2 运行结果分析 执行程序产生的二维DCT变换矩阵T如下: T = 0.3536 0.3536 0.3536 0.3536 0.3536 0.3536 0.3536 0.3536 0.4904 0.4157 0.2778 0.0975 -0.0975 -0.2778 -0.4157 -0.4904 0.4619 0.1913 -0.1913 -0.4619 -0.4619 -0.1913 0.1913 0.4619 0.4157 -0.0975 -0.4904 -0.2778 0.2778 0.4904

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号