数字图像处理及算术编码.docx
《数字图像处理及算术编码.docx》由会员分享,可在线阅读,更多相关《数字图像处理及算术编码.docx(22页珍藏版)》请在冰点文库上搜索。
数字图像处理及算术编码
数字图像处理及算术编码
————————————————————————————————作者:
————————————————————————————————日期:
学校代码:
10128
学号:
数字图像处理课程设计
题目:
数字图像处理及算术编码
(或DCT压缩编码)仿真实现
学生姓名:
学院:
信息工程学院
系别:
电子信息工程系
专业:
电子信息工程
班级:
电子09-2班
指导教师:
韩建峰辛莉
2012年12月17日
数字图像处理课程设计
1、课程设计目的
通过本课程设计使学生了解数字图像的基本概念,掌握数字图像处理的基本内容,如图像点运算、几何变换、增强处理、图像复原、边缘检测以及图像压缩等的基本原理和Matlab实现方法。
通过本次课程设计,让学生掌握如何学习一门语言,如何进行资料查阅搜集,如何自己解决问题等方法,养成良好的学习习惯。
扩展理论知识,培养学生的综合设计能力。
2、课程设计内容
2.1图像处理基本功能
1)数字图像的变换:
普通傅里叶变换(ft)与逆变换(ift)、快速傅里叶变换(fft)与逆变换(ifft)、离散余弦变换(DCT),小波变换.
2)数字图像直方图的统计及绘制等;
2.2图像处理综合功能
1)图像平滑算法程序设计:
2)DCT压缩(保留不同系数),要求显示原图像、压缩后图像的文件大小、压缩比或算术编码压缩
3、课程设计的一般步骤
1)选题与搜集资料:
选择课题,进行系统调查,搜集资料。
2)分析与设计:
根据搜集的资料,进行功能分析,并对系统功能与模块划分等设计。
3)程序设计:
运用掌握的语言,编写程序,实现所设计的功能.
4)调试与测试:
自行调试程序,同学之间交叉测试程序,并记录测试情况。
5)验收与评分:
指导教师对每个成员开发的程序进行综合验收,结合设计报告,根据课程设计成绩的评定方法,评出成绩。
4、要求
4。
1总体要求
1、要充分认识课程设计对培养自己的重要性,认真做好设计前的各项准备工作。
尤其是对编程软件的使用有基本的认识。
2、既要虚心接受老师的指导,又要充分发挥主观能动性。
结合课题,独立思考,努力钻研,勤于实践,勇于创新。
3、独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成绩以不及格计。
4、在设计过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、按质、按量完成课程设计。
4。
2课程设计报告的内容及要求
在完成课题验收后,学生应在规定的时间内完成课程设计报告一份,报告的内容和要求如下:
1.目的与要求
这部分主要说明本课程设计的目的、任务和要求;
2.设计的内容
根据指导书的讲述,介绍系统中所设计的主要功能和原理方法;
3.各个功能的实现程序及结果
附各个功能的实现程序,需要在程序中做适当的注释,附处理前后效果图。
5.测试和调试
按课程设计要求,选用多幅图像(自己的照片)对程序进行测试,并提供系统的主要功能实现的效果图。
并在调试中发现的问题做说明。
6.课程设计总结与体会
主要说明设计中学到的东西和取得的经验总结,心得体会.
7.参考文献
写出具体的主要参考文献,标明其作者、出处、年代、若是期刊文章,还需要给出期刊名。
网络的文章要给出网址。
5、课程设计的质量标准与成绩评定
本课程的考核方式为:
对学生单独进行验收和答辩,学生必须演示程序,并回答教师提出的问题。
根据验收答辩的情况和课程设计说明书的质量综合给出成绩.
课程设计成绩考核采用:
优、良、中、及格、不及格五级评分制,评分标准如:
优秀:
格式完整;课设总体方案正确、详细,系统中完成了所要求的所有功能;有实现功能的必要流程图。
设计说明书层次清楚、条理分明,理论分析正确、书写工整。
回答问题快速准确。
对善于独立思考设计中有所创新的学生优先考虑。
良好:
格式完整;设计方案合理,制作规范,系统基本满足要求;有实现功能的必要流程图。
设计说明书层次比较清楚;回答问题准确;书写工整。
中:
格式正确,设计方案基本正确,完成功能基本符合要求,设计说明书仅存在少量的问题(如:
方案分析有少量错误、条理不十分清晰、流程图、书写不大规范等)。
能够正确回答问题。
及格:
设计方案基本正确,实现了主要的功能,有小部分功能尚未实现,设计说明书存在一些问题。
回答问题基本正确。
不及格:
设计方案不合理,没有实现出系统功能,概念不清,层次混乱,书写极不认真,
或者根本不交课程设计程序和报告的.
另外,对于请人代做,完全照抄他人课题。
请人代写抄袭他人说明书,严重违反纪律者以不及格论处。
数字图像处理课程设计
一、课程设计目的
通过本课程设计使学生了解数字图像的基本概念,掌握数字图像处理的基本内容,如图像点运算、几何变换、增强处理、图像复原、边缘检测以及图像压缩等的基本原理和Matlab实现方法。
通过本次课程设计,让学生掌握如何学习一门语言,如何进行资料查阅搜集,如何自己解决问题等方法,养成良好的学习习惯.扩展理论知识,培养学生的综合设计能力.
二、图像处理基本功能
1.快速傅里叶变换(fft)与逆变换(ifft)
1。
1原理
2—D傅里叶变换变换公式
傅立叶变换是数字信号处理领域一种很重要的算法。
傅立叶原理表明:
任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。
而根据该原理创立的傅立叶变换算法利用直接测量到的原始信号,以累加方式来计算该信号中不同正弦波信号的频率、振幅和相位。
和傅立叶变换算法对应的是反傅立叶变换算法。
该反变换从本质上说也是一种累加处理,这样就可以将单独改变的正弦波信号转换成一个信号。
因此,可以说,傅立叶变换将原来难以处理的时域信号转换成了易于分析的频域信号(信号的频谱),可以利用一些工具对这些频域信号进行处理、加工。
最后还可以利用傅立叶反变换将这些频域信号转换成时域信号。
傅立叶变换在实际中有明显的物理意义,设f是一个能量有限的模拟信号,则其傅立叶变换就表示f的谱。
从数学意义上看,傅立叶变换是将一个函数转换为一系列周期函数来处理的。
从物理效果看,傅立叶变换是将图像从空间域转换到频率域,其逆变换是将图像从频率域转换到空间域。
换句话说,傅立叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数,傅立叶逆变换是将图像的频率分布函数变换为灰度分布函数.
对图像进行二维傅立叶变换得到频谱图,傅立叶变换后的频谱图,也叫功率图,我们首先就可以看出,图像的能量分布,如果频谱图中暗的点数更多,那么实际图像是比较柔和的(因为各点与邻域差异都不大,梯度相对较小),反之,如果频谱图中亮的点数多,那么实际图像一定是尖锐的,边界分明且边界两边像素差异较大的。
对频谱移频到原点以后,可以看出图像的频率分布是以原点为圆心,对称分布的.将频谱移频到圆心除了可以清晰地看出图像频率分布以外,还有一个好处,它可以分离出有周期性规律的干扰信号,比如正弦干扰,一副带有正弦干扰,移频到原点的频谱图上可以看出除了中心以外还存在以某一点为中心,对称分布的亮点集合,这个集合就是干扰噪音产生的,这时可以很直观的通过在该位置放置带阻滤波器消除干扰。
1。
2程序
%快速傅里叶变换(fft)与逆变换(ifft)
I=imread(’D:
/zuan.jpg’);%图像的读入
subplot(2,2,1),imshow(I);
title('原图’);
f=rgb2gray(I);%真彩色图像转换成灰度色图
subplot(2,2,2),imshow(f);
title(’灰度图');
%二维傅里叶变换
F=fft2(f);%傅里叶变换
subplot(2,2,3),imshow(F);
title('傅里叶变换’);
g=ifft2(F);%傅立叶逆变换
subplot(2,2,4),imshow((g),[]);
title(’逆傅里叶变换’);
1。
3结果
2离散余弦变换(DCT)
2.1原理
1-D离散余弦变换(DCT)和其反变换
x=0,1,…,N-1
u=0,1,…,N-1
2—D离散余弦变换(DCT)和其反变换
离散余弦变换在图像处理中占有重要的位置,尤其是在图像的变换编码中有着非常成功的应用.近年来十分流行的静止图像颜色标准JPEG(JointPictureExpertGroup)、在运动图像编码标准MJPEG和MPEG的各个标准中就采用了离散余弦变换。
离散余弦变换实际上是傅里叶变换的实数部分,但是它比傅里叶变换有更强的信息集中能力.对于大多数自然图像,离散余弦变换将大多数的信息放到较少的系数上去,因此就更能提高编码的效率。
改进的离散余弦变换被用在高级音频编码(AACforAdvancedAudioCoding),MP3音频压缩当中。
2.2程序
%离散余弦变换(DCT)
I=imread(’D:
/uan.jpg’);
X=rgb2gray(I);%真彩色图像转化为灰度图像
subplot(1,2,1),imshow(X);
title(’灰度图');
D=dct2(X);%离散余弦变换
subplot(1,2,2),imshow(D);
title(’离散余弦变换’);
2.3结果
3小波变换
3.1原理
小波序列展开就是将连续变量函数映射为一系列展开系数;对一个给定函数f(x),可以用u(x)和v(x)对它进行展开。
一般将a0(k)称为缩放系数(近似系数),dj(k)称为小波系数(细节系数)。
如果f(x)是一个离散序列(如对一个连续函数的采样),则对f(x)展开得到的系数称为f(x)的离散小波变换(DWT)。
一般选M为2的整数次幂
快速小波变换(FWT):
快速小波反变换:
2-D小波函数:
vH(x,y)、vv(x,y)、vD(x,y),其中H、V、D分别指示水平、垂直和对角方向。
它们每一个都是1—D缩放函数u和对应的小波函数v的乘积:
u(x,y)=u(x)u(y)
vH(x,y)=v(x)u(y)
vV(x,y)=u(x)v(y)
vD(x,y)=v(x)v(y)
小波分解:
金字塔结构,多级递归分解
LL:
低低,HL:
高低,LH:
低高,HH:
高高
3。
2程序
%小波变换
I=imread('D:
/zuan。
jpg’);%图像的读入
x=rgb2gray(I);%真彩色图像转化为灰度图像
subplot(2,3,1),imshow(x);
title(’灰度图');
%小波变换
[cA,cH,cV,cD]=dwt2(x,'db1’);%对图像进行单层分解,小波为bd1
A=upcoef2('a',cA,’db1’,1);%二维小波分解系数的直接重构
H=upcoef2(’h',cH,’db1',1);
V=upcoef2(’v',cV,'db1’,1);
D=upcoef2(’d’,cD,'db1’,1);%图像编码
subplot(2,3,2);image(wcodemat(A,128));%对数据矩阵进行伪彩色编码函数
title(’近似细节系数’);
subplot(2,3,3);image(wcodemat(H,128));
title('水平细节系数');
subplot(2,3,4);image(wcodemat(V,128));
title('垂直细节系数');
subplot(2,3,5);image(wcodemat(D,128));
title('对角细节系数');
d=idwt2(cA,cH,cV,cD,’db1');%对分解的细节系数执行单层重构,小波为db1
subplot(2,3,6);imshow(d,[]);
title('重构图象');
figure,
subplot(2,2,1);
image(cA);
title(’db1低频系数图像’);
subplot(2,2,2);
image(cH);
title(’db1水平高频图像');
subplot(2,2,3);
image(cV);
title(’db1垂直高频图像’);
subplot(2,2,4);
image(cD);
title(’db1对角高频图像’);
3.3结果
4数字直方图的统计及绘制等
4。
1原理
直方图反映的总体性质:
明暗程度、细节是否清晰、动态范围大小等。
均衡化(线性化)基本思想
(1)变换原始图像的直方图为均匀分布==〉增大动态范围
(2)使象素灰度值的动态范围最大==〉增强图像整体对比度(反差)
4.2程序
%数字图像直方图的统计及绘制
I=imread(’D:
/zquan.jpg’);%图像的读入
x=rgb2gray(I);%真彩色图像转化为灰度图像
subplot(2,2,1),imshow(x);
title(’灰度图’);
subplot(2,2,2);imhist(x,64);title(’灰度图象直方图');
[J,T]=histeq(x,64);
subplot(2,2,3);imshow(J);title('直方图均衡化图象’);
subplot(2,2,4);imhist(J);title('均衡化图象直方图’);
4.3结果
三、图像处理综合功能
1图像平滑算法程序设计:
1.1原理
邻域平均
1—D中值滤波原理
示例如图:
2—D中值滤波
(1)将模板中心与象素位置重合
(2)读取模板下各对应象素的灰度值;
(3)将这些灰度值从小到大排成1列;
(4)找出这些值里排在中间的1个;
(5)将这个中间值赋给模板中心位置象素
中值滤波与均值滤波的对比
中值滤波可以保留目标边缘,这是中值滤波相对均值滤波的最大优势。
1.2程序
%图像平滑
I=imread('D:
/uan。
jpg’);%图像的读入
figure;
subplot(131),imshow(I);title(’原图像');
I1=imnoise(I,'salt&pepper',0.05);%加入噪声密度为0.05椒盐噪声
subplot(132),imshow(I1);title('加入椒盐噪声后的图像’);
I2=imnoise(I,’gaussian',0,0.005);%加入均值为0,方差为0。
005高斯噪声
subplot(133),imshow(I2);title('加入高斯噪声后的图像’);
%--—--—---对椒盐噪声做均值滤波-—————---%
II1=rgb2gray(I1);
a=1/9。
*[111
111
111];
b=conv2(a,II1);%二维卷积,滑动平均
figure;
subplot(221),imshow(b,[0255]);title('对椒盐噪声的均值滤波模板1’);
a1=1/13。
*[00100
01110
11111
01110
00100];
b1=conv2(a1,II1);
subplot(222),imshow(b1,[0255]);title(’对椒盐噪声的均值滤波模板2');
a2=1/34.*[11111
12221
12221
12221
11111];
b2=conv2(a2,II1);
subplot(223),imshow(b2,[0255]);title('对椒盐噪声的均值滤波模板3’);
a3=1/16.*[121
242
121];
b3=conv2(a3,II1);
subplot(224),imshow(b3,[0255]);title(’椒盐噪声的均值滤波模板4');
%——--—--——对高斯噪声做均值滤波---—-——-—%
II2=rgb2gray(I2);
a=1/9.*[111
111
111];
b=conv2(a,II2);
figure;
subplot(221),imshow(b,[0255]);title('高斯噪声的均值滤波模板1');
a1=1/13。
*[00100
01110
11111
01110
00100];
b1=conv2(a1,II2);
subplot(222),imshow(b1,[0255]);title(’高斯噪声的均值滤波模板2');
a2=1/34。
*[11111
12221
12221
12221
11111];
b2=conv2(a2,II2);
subplot(223),imshow(b2,[0255]);title('高斯噪声的均值滤波模板3’);
a3=1/16。
*[121
242
121];
b3=conv2(a3,II2);
subplot(224),imshow(b3,[0255]);title('高斯噪声的均值滤波模板4');
%-—-——----对椒盐噪声做中值滤波-————--——%
c=medfilt2(II1,[33]);%二维中值滤波
figure;
subplot(231),imshow(c);title(’椒盐噪声图像3×3’);
c1=medfilt2(II1,[55]);
subplot(232),imshow(c1);title(’椒盐噪声图像5×5’);
c2=medfilt2(II1,[77]);
subplot(233),imshow(c2);title(’椒盐噪声图像7×7');
%—--———-—-对高斯噪声做中值滤波——-—---——%
c=medfilt2(II2,[33]);
subplot(234),imshow(c);title('高斯噪声图像3×3');
c1=medfilt2(II2,[55]);
subplot(235),imshow(c1);title(’高斯噪声图像5×5’);
c2=medfilt2(II2,[77]);
subplot(236),imshow(c2);title('高斯噪声图像7×7');
1.3结果
2DCT压缩(保留不同系数),要求显示原图像、压缩后图像的文件大小、压缩比或算术编码压缩
2。
1原理
基于DCT算法的图像压缩是有损的.简单地说,它就是把大量的数据简化为较小的、真正有意义的数据,删除只带有极少视觉效果的信息,并且根据数据出现的概率大小选择不同码长的码字来表示。
由于人眼对亮度信息比较敏感,而对颜色的反应相对较弱,所以可以通过色度空间转化,把三基色(RGB)表示的图像转换为由色度亮度(YCbCr)表示的图像,然后对视觉效果影响不大的色度信息进行二次采样,使输入编码器的信息量先减少一半,然后对各分量分成8×8象素块,这些块以特定顺序输入编码器,系统流程图如图
DCT的实现常常将图像分成一些小而易处理的块,这里假设选择8×8的块作为DCT计算的大小。
DCT变换的实现有两种方法,一种是基于FFT的快速算法;另一种是DCT变换矩阵(transformmatrix)方法.后者非常适合做8×8或16×16的图像块的DCT变换。
一副原始输入图像经DCT产生的输出矩阵有个特点:
随着元素离DCT系数越来越远,它的模就倾向于越来越小.这意味着通过DCT来处理数据,已将图像的表示集中到输出矩阵的左上角的系数,而矩阵的右下部分系数几乎不包含有用信息。
系数量化的作用是在一定的主观保真图像质量的前提下,丢掉那些对视觉影响不大的信息,以获得较高的压缩比。
然而,量化也是致使图像质量下降的最主要原因.这里使用量化矩阵来实现量化。
对于DCT输出矩阵中每一个元素,量化矩阵中的同一位置都有一个相应的量化值,范围是0~255.在DCT变换时使用量化矩阵很容易对图像的压缩质量进行控制,用户可根据具体的硬件存储容量和所需要的图像质量,选择合适的量化值。
8×8的矩阵进行系数量化后,DCT系数会产生很多个为0的值,而舍弃这些0值,在解压缩图像时,并不会使画面质量显著下降,并且由经验可知,连续的0值越多,编码效率越高.个人收集整理,勿做商业用途本文为互联网收集,请勿用作商业用途
2.2程序
%DCT压缩
I=imread(’D:
/zuan.jpg');%图像的读入
I=rgb2gray(I);
I=im2double(I);%图片存储类型转换
disp(’压缩前图像的大小:
’);%显示矩阵%
whos('I')
T=dctmtx(8);%离散余弦变换矩阵
B=blkproc(I,[88],'P1*x*P2',T,T’);%对源图像进行DCT变换
mask=[11110000
11100000
11000000
10000000
00000000
00000000
00000000
00000000];
B2=blkproc(B,[88],'P1。
*x',mask);%数据压缩,丢弃右下角高频数据
I2=blkproc(B2,[88],'P1*x*P2',T’,T);%进行反DCT变换
subplot(1,2,1);imshow(I,[]);title(’原图像');
subplot(1,2,2);imshow(I2,[]);title(’压缩后图像’);
disp(’压缩后的图像大小:
');
whos(’I2')
imwrite(I,’y。
jpg’);imwrite(I2,’c。
jpg');
y1=imfinfo(’y。
jpg’);c=imfinfo('c。
jpg’);
y_size=y1.FileSize
Y_size=c.FileSize
y2=c.FileSize/y1。
FileSize
2。
3结果
>〉压缩前图像的大小:
NameSizeBytesClass
I432x3241119744doublearray
Grandtotalis139968elementsusing1119744bytes
压缩后的图像大小:
NameSizeBytesClass
I2432x3241119744doublearray
Grandtotalis139968elementsusing1119744bytes
y_size=
13804
Y_size=
10104
y2=
0.7320
四、心得体会
数字图像处理是电子信息工程专业的一门基础课,它是集光学、数学、计算机科学等多门学科为一体化的综合性学科。
MATLAB既是一种直观、高效的计算机语言,同时又是一个科学计算平台.它为数据分析和数据可视化、算法和应用程序开发提供了最核心的数学和高级图形