matlab课设报告.docx
《matlab课设报告.docx》由会员分享,可在线阅读,更多相关《matlab课设报告.docx(19页珍藏版)》请在冰豆网上搜索。
matlab课设报告
课程设计任务书
学生姓名:
专业班级:
通信1003班
指导教师:
苏杭工作单位:
武汉理工大学
题目:
利用MATLAB仿真软件进行图像的变换域分析
初始条件:
(1)Matlab软件
(2)数字信号处理与图像处理的基本知识
要求完成的主要任务:
(1)了解Matlab的基本编程方法
(2)读取图像并求图像的奇异值(SVD)分解、正交分解(QR)、离散余弦变换(DCT)、离散傅利叶变换(DFT),小波变换(DWT),并保存和显示变换后的图像。
时间安排:
序
号
阶段内容
所需时间
1
方案设计
1天
2
软件设计
2天
3
系统调试
1天
4
答辩
1天
合计
5天
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要
MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。
它非常适合于图像处理,其自带的数字图像处理工具箱包括15类函数,支持四种图像类型,并可相互转换。
其能处理的图像格式包括PCX、BMP、HDF、JPEG、TIFF、XWD和TGA格式等等,图像文件类型包括索引图像、灰度图像和RGB图像等。
本次课程设计中所使用的图像格式为JPEG格式,图像的文件类型为灰度图像,通过调用相应的图像处理函数从而完成对图像变换域进行分析。
关键词:
MATLAB,图像处理函数,图像格式,图像文件类型,图像变换域
Abstract
MATLABisusedforalgorithmdevelopment,datavisualization,dataanalysis,andnumericcomputationleveltechnicalcomputinglanguageandinteractiveenvironment.Itisverysuitableforimageprocessing,anditsowndigitalimageprocessingtoolboxincludes15functions,supportsfourimagetypes,andcanbeinterchangeable.CanhandleimageformatsincludingPCX,BMP,HDF,JPEG,TIFF,XWDandTGAformatimagefiletypesincludingindeximages,grayscaleimagesandRGBimages.ThecurriculumdesignimageformatJPEGformatimagefiletypeasagray-scaleimage,thuscompletingtheanalysisoftheimagetransformdomainbycallingtheappropriateimageprocessingfunctions.
Keywords:
MATLAB,imageprocessingfunctions,imageformat,imagefiletypes,imagetransformdomain
1MATLAB图像处理
1.1图像格式简介
JPEG(JointPhotogyaphicExpeytsGroup):
一种称为联合图像专家组的图像压缩格式。
GIF(GraphicsInterchangeFormat):
任何1位到8位的可交换的图像。
BMP(WindowsBitmap):
有1位、4位、8位、24位非压缩图像,8位RLE(RunlengthEncoded)的图像。
文件内容包括文件头(一BITMAPFILEHEADER数据结构)、位图信息数据块(位图信息头BITMAPINFOHEADER和一个颜色表)和图像数据。
TIFF(TaggedIamgeFileFormat):
处理1位、4位、8位、24位非压缩图像,1位、4位、8位、24位packbit压缩图像,1位CCITT压缩图像等。
文件内容包括文件头、参数指针表与参数域、参数数据表和图像数据四部分。
PNG(PortableNetworkGraphics):
包括1位、2位、4位、8位和16位灰图像,8位和16位索引图像,24位和48位真彩色图像。
1.2图像文件格式
表1-2图像文件格式
图像类型
Double数据
uint8和uint16数据
二值图像
图像为m×n的整数矩阵,元素值范围[0,1]
图像为m×n的整数矩阵,元素值范围[0,1]
索引图像
图像为m×n的整数矩阵,元素值范围[0,p]
图像为m×n的整数矩阵,元素值范围[0,p-1]
灰度图像
图像为m×n的浮点数矩阵,元素值范围[0,1]
图像为m×n的整数矩阵,元素值范围[0,255]或[0,65535]
RGB图像
图像为m×n×3的浮点数矩阵,元素值范围[0,1]
图像为m×n×3的整数矩阵,元素值范围[0,255]或[0,65535]
1.3图像处理函数
读取数据imread()
调用格式:
A=imread(filename,fmt)
功能:
将文件名用字符串filename表示的,扩展名用fmt表示的图像文件中的数据读到矩阵A中。
如果filename所指的为灰度级图像,则A为一个二维矩阵;如果filename所指的为RGB图像,则A为一个m×n×3的三维矩阵。
filename表示的文件名必须在MATLAB的搜索路径范围内,否则需指出其完整路径。
写入数据imwrite()
调用格式imwrite(A,filename,fmt)
功能:
将数据写到指定路径,格式的图像中。
显示图像函数imshow()
调用格式1:
imshow(filename)
功能:
显示图像文件;
调用格式2:
imshow(X,map)
功能:
显示索引图像,X为索引图像矩阵,map为色彩图示。
2MATLAB图像操作
2.1读取图像
程序:
infile='F:
\peach.PNG';
A=imread(infile);
imshow(A);xlabel('原始图像');
运行结果如图2-1所示
图2-1读取图像显示窗口
2.2图像的奇异值分解(SVD)
2.2.1奇异值分解
奇异值分解(SingularValueDecomposition)是线性代数中一种重要的矩阵分解,是矩阵分析中正规矩阵酉对角化的推广。
在信号处理、统计学等领域有重要应用假设M是一个m×n阶矩阵,其中的元素全部属于域K,也就是实数域或复数域。
如此则存在一个分解使得M=UΣV*,其中U是m×m阶酉矩阵;Σ是半正定m×n阶对角矩阵;而V*,即V的共轭转置,是n×n阶酉矩阵。
这样的分解就称作M的奇异值分解。
Σ对角线上的元素Σi,i即为M的奇异值。
几何意义:
因为U和V向量都是单位化的向量,我们知道U的列向量u1,...,um组成了Km空间的一组标准正交基。
同样,V的列向量v1,...,vn也组成了Kn空间的一组标准正交基(根据向量空间的标准点积法则).
线性变换T:
Kn→Km,把向量x变换为Mx。
考虑到这些标准正交基,这个变换描述起来就很简单了:
T(vi)=σiui,fori=1,...,min(m,n),其中σi是对角阵Σ中的第i个元素;当i>min(m,n)时,T(vi)=0。
这样,奇异值分解理论的几何意义就可以做如下的归纳:
对于每一个线性映射T:
Kn→Km,T把Kn的第i个基向量映射为Km的第i个基向量的非负倍数,然后将余下的基向量映射为零向量。
对照这些基向量,映射T就可以表示为一个非负对角阵。
2.2.2程序及运行结果
程序:
infile='F:
\peach.PNG';
A=imread(infile);
imshow(A);xlabel('原始图像');
f=rgb2gray(A);
imshow(f);xlabel('灰度图像');
N=im2double(f);
[U,S,V]=svd(N);
SK=U*S*V';
SKB=U*S*V;
subplot(2,3,1);
imshow(U);xlabel('矩阵U等价图像');
subplot(2,3,2);
imshow(S);xlabel('矩阵S等价图像');
subplot(2,3,3);
imshow(V);xlabel('矩阵V等价图像');
subplot(2,3,4);
imshow(SK);xlabel('矩阵SK等价图像');
subplot(2,3,5);
imshow(SKB);xlabel('矩阵SKB等价图像');
运行结果如图2-2所示:
图2-2SVD变换后运行结果
2.3图像的正交分解(QR)
2.3.1正交分解
实数矩阵A的QR分解是把A分解为:
(公式2-1)
这里的Q是正交矩阵(意味着QTQ=1)而R是上三角矩阵。
类似的,我们可以定义A的QL,RQ和LQ分解。
更一般的说,我们可以因数分解复数m×n矩阵(有着m≥n)为m×n酉矩阵(在QTQ=1的意义上)和n×n上三角矩阵的乘积。
如果A是非奇异的,则这个因数分解为是唯一,当我们要求R的对角是正数的时候。
2.3.2程序及运行结果
程序:
infile='F:
\peach.PNG';
A=imread(infile);
imshow(A);
B=rgb2gray(A);
W=im2double(B);
subplot(1,3,1);
imshow(B);xlabel('灰度图像');
[Q,R]=qr(W,0);%对矩阵W进行经济型QR分解
H=Q*R;
subplot(1,3,2);
imshow(Q);xlabel('矩阵Q等价图像');
subplot(1,3,3);
imshow(R);xlabel('矩阵R等价图像')
运行结果如图2-3所示:
图2-3对图像进行正交分解后的显示窗口
2.4图像的离散余弦变换(DCT)
2.4.1离散余弦变换
离散余弦变换,经常被信号处理和图像处理使用,用于对信号和图像(包括静止图像和运动图像)进行有损数据压缩。
这是由于离散余弦变换具有很强的”能量集中特性”,大多数的自然信号(包括声音和图像)的能量都集中在离散余弦变换后的低频部分。
离散余弦变换(DiscreteCosineTransform)的计算速度要比对象为复数的离散傅立叶变换块得多,并且已经被广泛应用到图像压缩编码、语音信号处理等众多领域。
一维离散余弦变换的定义可以用下式表示:
(公式2-2)
(公式2-3)
式中
是第
个余弦变换系数,
是广义频率变量,
;
是时域
点序列
。
(公式2-4)
二维离散余弦变换的定义由下式表示:
(公式2-5)
其中
为空间域中二维向量,
,
为变换系数矩阵,
。
2.4.2程序及运行结果
程序:
A=imread('F:
\peach.PNG');
S=dct2(B);
subplot(1,2,1)
imshow(A);xlabel('原始图像');
subplot(1,2,2)
imshow(log(abs(S)),[]);xlabel('离散余弦图像');%输出频谱二维图像;
colormap(jet(64));%定义色图为HSV变异真彩色图;
运行结果如图2-4所示:
图2-4DCT变换后的图像
2.5图像的离散傅里叶变换(DFT)
2.5.1傅里叶变换知识
快速傅立叶算法(FastFourierTransform)可以大大减少计算次数,使计算量减少到只是相当于直接使用离散傅立叶变换所用的一小部分。
并且,二维离散傅立叶变换很容易从一维的概念推广得到。
在数字图像处理中,二维离散傅立叶被广泛的应用于图像增强、复原、编码和分类中。
如果为一长度为N的数字序列,则其离散傅里叶正变换定义由下式来表示如下:
(公式2-6)
二维离散函数
的傅立叶变换为:
(公式2-7)
离散傅里叶变换已成为数字信号处理的重要工具,但是它的计算量较大,运算时间长,在某种程度上限制了它的使用。
为了解决这一矛盾,引用了快速傅里叶变换的思想。
快速傅立叶算法以
的组成状况可以分成
为2的整数幂的算法;
为高复合数的算法;
为素数的算法三种情况。
这里介绍第一种算法。
令
(公式2-8)
一维离散傅立叶变换公式变为
(公式2-9)
且令
为
。
而
(公式2-10)
在此基础上,将
分解成为
和
对应的偶数和奇数两部分,
的取值范围由原来的0到
改为0到N/2-1。
下面我们按照奇偶来将序列
划分,设:
(公式2-11)
因此,离散傅立叶变换可以改写成下面的形式:
(公式2-12)
因此,一个求N点的离散傅立叶变换可以被转换成为两个求N/2点的离散傅立叶变换。
可以进一步写出8点DFT的完整FFT计算的流程框图,如图2-5所示:
图2-5FFT计算的流程框图
2.5.2程序及运行结果
程序:
A=imread('F:
\peach.PNG');
B=rgb2gray(A);
j=fft2(B);
k=fftshift(j);%做fft变换,同时将零点移到中心
l=log(abs(k));
n=ifft2(j)/255;%做fft逆变换
subplot(1,3,1);
imshow(B);xlabel('灰度图像');
subplot(1,3,2);
imshow(l,[]);xlabel('离散傅里叶变换图像');%显示频谱
subplot(1,3,3);
imshow(n);xlabel('傅里叶变换图像');
运行结果如图2-6所示
图2-6FFT变换后窗口显示图像
2.6图像的小波变换(DWT)
2.6.1小波变换
小波分析是一种新兴的数学分支,它是泛函数、Fourire分析、调和分析、数值分析的最完美的结晶;在应用领域,特别是在信号处理、图像处理、语音处理以及众多非线性科学领域,它被认为是继Fourier分析之后的又一有效的时频分析方法。
小波变换是一种新的变换分析方法,它继承和发展了短时傅立叶变换局部化的思想,同时又克服了窗口大小不随频率变化等缺点,能够提供一个随频率改变的时间一频率窗口,是进行信号时频分析和处理的理想工具。
它的主要特点是通过变换能够充分突出问题某些方面的特征。
本次设计采用二维离散小波变换。
运用的函数为dwt2函数:
[cA,cH,cV,cD]=dwt2(X,'wname')
使用指定的小波基函数wname对二维信号X进行二维离散小波变换;且其中cA,cH,cV,cD分别为近似分量、水平细节分量、垂直细节分量和对角细节分量。
而另一个函数wcodemat是用来对数据矩阵进行伪彩色。
2.6.2程序及运行结果
程序:
infile='F:
\peach.PNG';
A=imread(infile);
imshow(A);xlabel('原始图像');
f=rgb2gray(A);
Imshow(f);xlabel('灰度图像')
[cA,cH,cV,cD]=dwt2(f,'db1');
A=upcoef2('a',cA,'db1',1);
H=upcoef2('h',cH,'db1',1);
V=upcoef2('v',cV,'db1',1);
D=upcoef2('d',cD,'db1',1);
figure;
subplot(2,2,1);image(wcodemat(A,180));xlabel('近似细节系数');
subplot(2,2,2);image(wcodemat(H,180));xlabel('水平细节系数');
subplot(2,2,3);image(wcodemat(V,180));xlabel('垂直细节系数');
subplot(2,2,4);image(wcodemat(D,180));xlabel('对角细节系数');
运行结果如图2-7所示:
图2-7小波变换后图像
3心得体会
通过这次课程设计,让我进一步的接触了MATLAB这款功能强大的软件,对其基本功能及用法,都通过自身的学习,翻阅资料,以及与同学之间的相互探讨,有了一定了解,特别是图像处理工具箱v3.2(ImageProcessingToolbox)有了一定深度的学习及运用,书中较全面、系统地介绍了,图形的基本操作及增强功能,例如:
图形的导入和显示,图形绘制、图像变换、图像增强。
虽然在做课设的整个过程中遇到很多问题,比如说了解一些图像变换的定义、程序的输入,通过上网查资料及其他途径解决问题后,真的能从中学到很多,在做这些课设时,它本身内容并不是很复杂,更多的是需要我们仔细的观察和发现,加上认真的态度,相信我们都能收获很多。
总的来说,通过此次基础强化训练对MATLAB进行基础的运用和掌握,虽然只是对MATLAB一小部分进行运用。
虽然以前,在信号与系统和数字信号处理的实验课上有所接触,也自己自学了一些,但仅仅了解了其基本用法,和一些简单的处理函数。
但经过这次才发现,工具箱涉及的专业领域广泛且功能强大。
图像工具箱几乎包括所有经典的图像处理方法。
所以说对于这些软件还是应该自己动手实际操作才会有深刻理解。
所以,以后会认识到这款软件的重要作用,在今后的学习过程中努力学习它。
对于MATLAB这款功能强大,在各个领域均有运用的软件,有了一定程度的掌握,对以后的学习以及工作,受益无穷。
今后一定要更加紧的学习和掌握它,将它强大的功能运用于更广阔的领域。
4参考文献
[1]王华等,MATLAB电子仿真与应用教程,北京:
国防工业出版社,2001.
[2]王新成,高级图像处理技术,北京:
中国科学技术出版社,2001.
[3]周建兴等,MATLAB从入门到精通,北京:
人民邮电出版社,2008.
[4]张强,精通MATLAB图像处理,北京:
电子工业出版社,2008.
[5]赖志国,MATLAB图像处理与应用(第二版),北京:
国防工业出版社,2007.
[6]李文锋,图形图像处理与应用,北京:
中国标准出版社,2006.
[7]贺兴华,MATLAB7.X图像处理,北京:
人民邮电出版社,2006.
本科生课程设计成绩评定表
姓名
性别
专业、班级
课程设计题目:
课程设计答辩或质疑记录:
成绩评定依据:
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
年月日