武汉理工大学专业课程设计(图像变换编码程序设计)

更新时间:2023-10-09 03:07:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

专业综合课程设计任务书

学生姓名:_____________专业班级: 电信 班 指导教师: 工作单位: 信息工程学院 题 目10:图像变换编码程序设计 初始条件:

(1) 提供实验室机房及其matlab软件; (2) 信息论和数字图像编码的基本理论学习。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写

等具体要求):

(1)学习图像压缩和JPEG压缩的原理和方法;

(2)选择一幅256级的灰度图像,利用matlab设计程序完成以下功能; (3)计算该图像的信息熵;

(4)利用JPEG的压缩原理,将图像分成8?8的图像块,计算每个块的DCT系数;

(5)只保留DCT系数矩阵最左上角的10个系数,然后对每个图像块利用这10个系数进行DCT反变换来重构图像,显示重构后的图像;

(5)计算该图像经过离散余弦变换编码及重构后图像的信噪比; (6)要求阅读相关参考文献不少于5篇;

(7)根据课程设计有关规范,按时、独立完成课程设计说明书。

时间安排:

(1) 布置课程设计任务,查阅资料,确定方案 四天; (2) 进行编程设计 一周; (3) 完成课程设计报告书 三天;

武汉理工大学《专业综合课程设计》

指导教师签名: 年 月 日

系主任(或责任教师)签名: 年 月 日

目 录

摘 要............................................................................................................................... I 1 设计目的与意义........................................................................................................ 1

1.1设计目的.......................................................................................................... 1 1.2设计意义.......................................................................................................... 1 2 理论知识.................................................................................................................... 3

2.1信息熵.............................................................................................................. 3 2.2图像熵.............................................................................................................. 3 2.3基于DCT的JPEG图像压缩 ........................................................................ 4

2.3.1 DCT变换.............................................................................................. 4 2.3.2 DCT系数量化...................................................................................... 5 2.4图像的信噪比.................................................................................................. 5

2.4.1信噪比定义........................................................................................... 5 2.4.2峰值信噪比........................................................................................... 6

3 程序设计与实现........................................................................................................ 8

3.1图像信息熵程序设计...................................................................................... 8 3.2 DCT图像压缩程序设计................................................................................. 9 3.3图像信噪比程序设计.................................................................................... 11 4 MATLAB程序仿真 ................................................................................................. 13

4.1图像熵程序仿真............................................................................................ 13 4.2 DCT图像压缩程序仿真............................................................................... 13 4.3图像信噪比程序仿真.................................................................................... 14 5心得体会................................................................................................................... 15 参考文献...................................................................................................................... 17

武汉理工大学《专业综合课程设计》

摘 要

本设计是基于MATLAB的图像变换编码程序设计,介绍了图像压缩和JPEG压缩的原理和方法,简单介绍了信息熵、信噪比概念,并对离散余弦变换进行了详细的阐述。然后通过MATLAB软件和离散余弦变换原理实现了对JPEG图像的压缩和重构,同时利用程序计算原图像信息熵,以及重构前后图像的信噪比。

关键词:图像压缩,JPEG压缩,离散余弦变换,信息熵,信噪比

I

武汉理工大学《专业综合课程设计》

1 设计目的与意义

1.1设计目的

数字图像处理技术从出现到现在的几十多年时间里,经过初创期、发展期、普及期及广泛应用几个阶段,如今已是各个学科竞相研究并在各个领域广泛应用的一门学科,并迅速发展成一门独立的具有强大生命力的学科,随着计算机技术和半导体的发展,数字图像处理技术将更加迅速地向广度和深度发展。

本课程设计其目的是理解有损压缩的概念,特别是通过DCT变换,掌握压缩编码的基本原理、算法,并通过编程给予实现,对原始图像数据和解压后的图像数据进行失真估计,了解压缩性能及其重建效果的影响、作用,给出适当的理论分析。

1.2设计意义

数字图像处理是利用计算机或数字技术对图像信息进行加工处理以改善图像质量、压缩图像数据或从图像数据中获取更多信息。数字图像处理的主要方法可分为两大类:空域法和变换域法。

图像压缩即去除多余数据。以数学的观点来看图像压缩过程实际上就是将二维像素阵列变换为一个在统计上无关联的数据集合。因此图像压缩是指以较少的比特有损或无损地表示原来的像素矩阵的技术,也称图像编码。

图像压缩编码的必要性和可能性:图像压缩编码的目的是以尽量少的比特数表征图像同时保持复原图像的质量使它符合预定应用场合的要求。压缩数据量、提高有效性是图像压缩编码的首要目的。

图像数据可以进行压缩有以下几方面的原因:首先原始图像数据是高度相关的存在很大的冗余度,如空间冗余度,时间冗余度,频率域冗余度。数据冗余造成比特数浪费消除这些冗余就可以节约码字也就达到了数据压缩的目的,其次基用相同码长表示不同出现概率的符号也会造成符号冗余度;允许图像编码有一定的失真也是图像可以压缩的一个重要原因。

1

武汉理工大学《专业综合课程设计》

起来反而比PSNR较低者差,这是因为人眼的视觉对于误差的敏感度并不是绝对的,其感知结果会受到许多因素的影响而产生变化例如人眼对空间频率较低的对比差异敏感度较高人眼对亮度对比差异的敏感度较色度高,人眼对一个区域的感知

7

武汉理工大学《专业综合课程设计》

3 程序设计与实现

3.1图像信息熵程序设计

1.求解信息熵过程:

1) 输入一个离散信源,并检查该信源是否是完备集。 2) 去除信源中符号分布概率为零的元素。 3) 根据平均信息量公式,求出离散信源的熵。 2.图像熵计算过程:

1) 输入一幅图像,并将其转换成灰度图像。 2) 统计出图像中每个灰度阶象素概率。

3) 统计出图像中相邻两象素的灰度阶联合分布矩阵。 4) 根据图像熵和二阶熵公式,计算出一幅图像的熵。 根据以上步奏设计MATLAB程序:

A=imread('ena.jpg'); %读入图像 n(1:256)=0; p(1:256)=0; S=0; H=0;

for i=1:256 %统计像素值 for j=1:256

n(A(i,j))=n(A(i,j))+1; end end

for i=1:256 %计算每个像素值的概率 p(i)=n(i)/(256*256);

end for i=1:256 %概率和为1 S=S+p(i);

8

武汉理工大学《专业综合课程设计》

end for i=1:256 %熵的计算 if p(i)~=0

H=H+p(i)*log2(1/p(i)); end end H

3.2 DCT图像压缩程序设计

由于后面的DCT变换是是对8x8的子块进行处理的,因此,在进行DCT变换之前必须把源图象数据进行分块。源图象中每点的3个分量是交替出现的,先要把这3个分量分开,存放到3张表中去。然后由左及右,由上到下依次读取8x8的子块,存放在长度为64的表中,即可以进行DCT变换。注意,编码时,程序从源数据中读取一个8x8的数据块后,进行DCT变换,量化,编码,然后再读取、处理下一个8*8的数据块。

JPEG 编码是以每8x8个点为一个单位进行处理的. 所以如果原始图片的长宽不是 8 的倍数, 都需要先补成8的倍数, 使其可以进行一块块的处理。将原始图像数据分为8*8的数据单元矩阵之后,还必须将每个数值减去128,然后一一带入DCT变换公式,即可达到DCT变换的目的。图像的数据值必须减去128,是因为DCT公式所接受的数字范围是-128到127之间。

图像块处理的整个过程由函数blkproc自动实现。函数blkproc的格式为: B=blkproc(A,[M,N],FUN,P1,P2?)

函数blkproc的参量为一幅输入图像A将被处理的块的大小[M,N],用于处理这些块的函数FUN,以及块处理函数FUN的一些可选输入参数P1,P2,并重新将结果组合到输出图像。

对一幅图像进行DCT压缩编码的MATLAB程序流程图如图3.2所示:

9

武汉理工大学《专业综合课程设计》

开始输入一幅图像DCT变换分成8*8像素块根据量化表对变换系数进行量化压缩图像数据反DCT变换结束 图3.1 图像DCT压缩编码的程序流程图

由此设计程序如下: I=imread('ena.jpg'); I=im2double(I);

T=dctmtx(8); %8*8的离散余弦变换矩阵

B=blkproc(I,[8,8],'P1*x*P2',T,T'); %对原图像进行DCT变换blkproc()函数是对f1矩阵中的%每个[8,8]模块,用公式‘P1*x*P2’进行计 算。其中x=[8,8],P1=T,P2=T'。用*表示的是%矩阵乘法,而.*表示的矩阵中相应数的乘积。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;

10

武汉理工大学《专业综合课程设计》

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; ];

B2=blkproc(B,[8 8],'P1.*x',mask); %数据压缩,只保留DCT系数矩阵最左上角的10个系数

I2=blkproc(B2,[8 8],'P1*x*P2',T',T);%进行DCT反变换,得到压缩后的图像 subplot(2,2,1);imshow(I);title('原图像'); subplot(2,2,2);imshow(I2);title('重构后图像');

subplot(2,2,3);imshow(abs(I-I2));title('原图象和复原后图象的差') subplot(2,2,4);imshow(B);title('DCT系数');

3.3图像信噪比程序设计

峰值信噪比定义为:

2552PSNR?10?log()MSEFramesizeMSE??n?1(In?Pn)Framesize (3.1)

Peak就是指8 bits表示法的最大值255。MSE指 Mean Square Error(均方误差各值相差的n次方和的平均值的n次平方根(这几个字应该没有)),I(角标n)指原始影像第n个pixel值,P(角标n)指经处理后的影像第n个pixel值。PSNR 的单位为dB。所以PSNR值越大,就代表失真越少。 根据公式构建一个函数,程序如下: function PSNR = PSNR(A,B)

%计算输入两图像A,B的峰值信噪比PSNR(dB) A = double(A); %图像数据类型转换 B = double(B);

[Row,Col] = size(A); %输入图像的大小

11

本文来源:https://www.bwwdw.com/article/xocf.html

Top