matlab进行图像变换域分析报告.docx
《matlab进行图像变换域分析报告.docx》由会员分享,可在线阅读,更多相关《matlab进行图像变换域分析报告.docx(21页珍藏版)》请在冰豆网上搜索。
matlab进行图像变换域分析报告
课程设计任务书
学生:
专业班级:
通信1005班
指导教师:
工作单位:
信息工程学院
题目:
利用MATLAB仿真软件系统进行图像变换域分析
初始条件:
装有matlab的pc机一台
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
利用MATLAB仿真软件进行图像的变换域分析。
要求:
读取图像并求图像的奇异值(SVD)分解、正交分解(QR)、离散余弦变换(DCT)、离散傅利叶变换(DFT),小波变换(DWT),并保存和显示变换后的图像。
课程设计进度安排:
1.
方案设计1天
2.
软件设计2天
3.
系统调试1天
4.
答辩1天
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要
MATLAB语言是由美国MathWorks公司推出的计算机软件,经过多年的逐步发展与不断完善,现已成为国际公认的最优秀的科学计算与数学应用软件之一,是近几年来在国外广泛流行的一种可视化科学计算软件。
它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便的、界面友好的用户环境,而且还具有可扩展性特征。
MATLAB是一种向量语言,非常适合于图像处理,其自带的数字图像处理工具箱包括15类函数,支持四种图像类型,并可相互转换,ATLAB可操作的图像文件包括BMP、HDF、JPEG、PCX、TIFF、XWD等格式。
本文介绍了MATLAB语言的特点以及图像处理工具箱实现的经典图像处理技术。
总体介绍了,对图像的基本操作,以及对图像进行FFT变换,DCT变换,SVD变换,QR变换,小波变换等。
通过对一副图像通过MATLAB的图像工具箱箱中imread;imshow;subplot;figure等基本图像处理函数以及fft;fft2;dct;dct2;svd;qr;wavedec2等图像矩阵变换函数,进行处理,能大致基本展示MATLAB对图像处理方面的强大功能。
并且通过本次课程设计,掌握了这款软件的基本操作,其图像工具栏的基本函数,以及对图像进行的一些增强操作等。
Abstract
MATLABlanguageisintroducedbytheUnitedStatesMathWorks,computersoftware,afteryearsofgradualdevelopmentandcontinuousimprovement,whichhasbecomeinternationallyrecognizedasthebestscientificcomputingandmathematicalapplication,oneathomeandabroadinrecentyearswidespreadakindsofscientificvisualizationsoftware.Itcombinesnumericalanalysis,matrixcomputation,signalprocessingandgraphicaldisplayonthewhole,constituteaconvenient,user-friendlyuserenvironment,butalsohasthescalabilitycharacteristics.
MATLABisavectorlanguageisverysuitableforimageprocessing,itsbuilt-indigitalimageprocessingtoolbox,including15classfunctionsinsupportoffourkindsofimagetypes,andcanbeinterchangeable,ATLABoperableimagefiles,includingBMP,HDF,JPEG,PCX,TIFF,XWDandotherformats.ThisarticledescribesthecharacteristicsofthelanguageoftheMATLABimageprocessingtoolboxtoachievetheclassicimageprocessingtechnology.Presentedanoverviewonthebasicoperationoftheimage,aswellasimagesFFTtransform,DCTtransform,SVDtransform,QRtransform,wavelettransform.
ThroughanimagethroughtheMATLABimagetoolboxboximread;imshow;subplot;figurethebasicimageprocessingfunctionsandfft;fft2;dct;dct2;svd;qr;wavedec2otherimagematrixtransformationfunctionsforprocessing,canberoughlydemonstratethebasicaspectsofMATLABforimageprocessingpower.Andthroughthiscurriculumdesign,andmasteredthebasicoperationofthissoftwareanditsbasicfunctionoftheimagetoolbar,aswellasanumberofimagestoenhanceoperationsandsoon.
1matlab基本操作
1.1基础知识
Matlab中基本变量都是以矩阵的形式保存的。
一幅图像即是一个二维的矩阵。
变量名区分大小写,如a和A表示两个不同的变量。
图像I中第i行第j列的像素用I(i,j)表示,其中行号和列号都从1开始计数。
要了解更多关于Matlab的基本知识,可看Matlabhelp下的Matlab目录。
本实验可能用到的matlab函数有:
zeros,imwrite,imread,imshow,FFT2,abs,log,min,max,查询具体的函数用法可以在Matlabhelp中查找,或在Matlabcommandwindow中打(空格)函数名。
在Matlabcommandwindow中的命令在打回车后直接执行。
也可以在m-fileeditor中编写程序,存盘为.m文件后,按Debug菜单下的Run,自动逐条执行命令。
Debug菜单下还提供了设置断点逐行执行等调试命令。
做本实验时可先在commandwindow中熟悉Matlab命令与函数,最后所有命令应保存在一个m文件中,便于检查和调试。
每次画图前可用figure命令新开一个图像窗口,否则前一次显示的图像会被新的图像覆盖。
也可用figure(n)命令规定当前图像窗口序号。
1.2图像的读取及程序
在编辑窗口中,如下编辑M文件,%表示注释部分:
%清除MATLAB中所有的工作平台变量,关闭打开的图形窗口
clear;
closeall;
I=imread('C:
\Users\Administrator\Pictures\002.jpg');%读取一图像到I
figure;
imshow(I);%调用函数显示导入的图像
在命令窗口中运行函数,可得到figure的运行结果了所选的图片,如图1-1所示。
图1-1
2matlab图像操作
2.1图像的奇异值分解
2.1.1奇异值分解理论知识
定义1:
对于
矩阵
有
个标量
满足:
(公式2-1)
则称这一组
为矩阵
唯一的特征值.
定义2如果存在这样一个
的向量
有:
(公式2-2)
则称
为
的与特征值
对应的一个特征向量.
一共有
个特征向量.
定义3(矩阵奇异值分解)矩阵的奇异值分解(SingularValueDecomposition,简称SVD)是矩阵所固有的特征,设矩阵
,
,那么矩阵
的奇异值分解定义如下:
(公式2-3)
其中,
和
是正交矩阵,其列向量分别为
和
;U,V分别称为矩阵A的左奇异矩阵和右奇异矩阵;D是对角阵;
称作矩阵
的奇异值,此处是
或
的特征值
的正平方根,满足
。
矩阵奇异值具有很好的稳定性,当矩阵A有微小振动时,其奇异值的改变不会大于振动矩阵的2-数。
若矩阵奇异值经过归一化处理,则可实现奇异值的比例不变性。
另外,矩阵奇异值还具有旋转不变性,因此,奇异值能有效地反映矩阵的特征,在图像处理中能表现图像的代数特性。
2.1.2程序及运行结果
I=imread('C:
\Users\Administrator\Pictures\002.jpg');
II=rgb2gray(I);%将图像转换为灰度图像
A=im2double(II)
[U,S,V]=svd(A)%对图像做svd分解
SN=U*S*V';%SN等价于原图像
SM=U*S*V%
subplot(1,6,1);%建立子图
imshow(II);
subplot(1,6,2);
imshow(U)
subplot(1,6,3)
imshow(S)
subplot(1,6,4)
imshow(V)
subplot(1,6,5)
imshow(SM)
subplot(1,6,6)
imshow(SN);
运行结果如图2-1所示,各图像依次为原图像转换为灰度图后的图像,矩阵U等价的图像,矩阵S等价的图像,矩阵V等价的图像,矩阵SM等价的图像,矩阵SN等价的图像。
图2-1asvd变换后运行结果
从左至右依次为:
原图像转换为灰度图后的图像,矩阵U等价的图像,矩阵S等价的图像
图2-1bsvd变换后运行结果
从左至右依次为:
矩阵V等价的图像,矩阵SM等价的图像,矩阵SN等价的图像
2.2图像的正交分解
2.2.1正交分解理论知识
实数矩阵A的QR分解是把A分解为
(公式2-4)
这里的Q是正交矩阵(意味着QTQ=1)而R是上三角矩阵。
类似的,我们可以定义A的QL,RQ和LQ分解。
更一般的说,我们可以因数分解复数m×n矩阵(有着m≥n)为m×n酉矩阵(在Q∗Q=1的意义上)和n×n上三角矩阵的乘积。
如果A是非奇异的,则这个因数分解为是唯一,当我们要求R的对角是正数的时候。
2.2.2程序及运行结果
I=imread('C:
\Users\Administrator\Pictures\002.jpg');
II=rgb2gray(I);
A=im2double(II)
[Q,R]=qr(A,0)%对矩阵A进行经济型QR分解
B=Q*R;
subplot(1,3,1);
imshow(II);
subplot(1,3,2);
imshow(Q)
subplot(1,3,3);
imshow(R)
运行结果如图2-3所示,各图像从左至右依次为原图像转换为灰度图后的图像,矩阵Q等价的图像,矩阵R等价的图像
图2-3对图像进行正交分解后的显示窗口
从左至右:
原始灰度图,分解后Q矩阵代表图,分解后R矩阵代表图
2.3图像的离散余弦变换
2.3.1离散余弦变换理论基础
离散余弦变换,尤其是它的第二种类型,经常被信号处理和图像处理使用,用于对信号和图像(包括静止图像和运动图像)进行有损数据压缩。
这是由于离散余弦变换具有很强的"能量集中"特性:
大多数的自然信号(包括声音和图像)的能量都集中在离散余弦变换后的低频部分。
离散余弦变换(DiscreteCosineTransform)的计算速度要比对象为复数的离散傅立叶变换块得多,并且已经被广泛应用到图像压缩编码、语音信号处理等众多领域。
一维离散余弦变换的定义可以用下式表示:
(公式2-5)
(公式2-6)
式中
是第
个余弦变换系数,
是广义频率变量,
;
是时域
点序列
。
(公式2-7)
二维离散余弦变换的定义由下式表示:
(公式2-8)
其中
为空间域中二维向量,
,
为变换系数矩阵,
。
2.3.2程序及运行结果
如下编辑M程序,可得如图2-4所示的经离散余弦变换后的图像
I=imread('C:
\Users\Administrator\Pictures\002.jpg');
S=dct2(II);
subplot(1,2,1)
imshow(I)
subplot(1,2,2)
imshow(log(abs(S)),[])%输出频谱二维图像
colormap(jet(64));%定义色图为HSV变异真彩色图
运行结果如图2-4所示,各图像从左至右依次为原图像,dct变换后输出图像。
图2-4dct变换后窗口显示图像
从左至右依次为:
原始图像,dct变换后图像
2.4图像的离散傅利叶变换
2.4.1离散傅利叶变换理论基础
离散傅立叶变换还有一个明显的优点就是具有快速算法,即快速傅立叶算法(FastFourierTransform),它可以大大减少计算次数,使计算量减少到只是相当于直接使用离散傅立叶变换所用的一小部分。
并且,二维离散傅立叶变换很容易从一维的概念推广得到。
在数字图像处理中,二维离散傅立叶被广泛的应用于图像增强、复原、编码和分类中。
如果为一长度为N的数字序列,则其离散傅里叶正变换定义由下式来表示:
(公式2-9)
二维离散函数
的傅立叶变换为:
(公式2-10)
离散傅里叶变换已成为数字信号处理的重要工具,但是它的计算量较大,运算时间长,在某种程度上限制了它的使用。
为了解决这一矛盾,引用了快速傅里叶变换的思想。
快速傅立叶算法以
的组成状况可以分成
为2的整数幂的算法;
为高复合数的算法;
为素数的算法三种情况。
这里介绍第一种算法。
令
一维离散傅立叶变换公式变为
(公式2-11)
分别为
。
再令
在此基础上,将
分解成为
和
对应的偶数和奇数两部分,
的取值围由原来的0到
改为0到
。
下面我们按照奇偶来将序列
进行划分,设:
(公式2-12)
因此,离散傅立叶变换可以改写成下面的形式:
(公式2-13)
因此,一个求
点的离散傅立叶变换可以被转换成为两个求点的离散傅立叶变换。
可以进一步写出8点DFT的完整FFT计算的流程框图,如图2-5
图2-5FFT计算的流程框图
2.4.2程序及运行结果
I=imread('C:
\Users\Administrator\Pictures\002.jpg');
II=rgb2gray(I);
figure
(1);
imshow(II)
colorbar;
j=fft2(II);
k=fftshift(j);%做fft变换,同时将零点移到中心
figure
(2);
l=log(abs(k));
imshow(l,[]);%显示频谱
colorbar
n=ifft2(j)/255;%做fft逆变换
figure(3);
imshow(n);
colorbar
运行结果如图2-6所示,各图像从左至右依次为原图像,快速傅里叶变换后输出图像,快速傅里叶逆变换后输出图像。
图2-6fft变换后窗口显示图像
从左至右依次为:
原始灰度图,fft变换后图,fft逆变换后图
2.5图像的小波变换
2.5.1小波变换的理论基础
小波(Wavelet)这一术语,顾名思义,“小波”就是小的波形。
所谓“小”是指它具有衰减性;而称之为“波”则是指它的波动性,其振幅正负相间的震荡形式。
与Fourier变换相比,小波变换是时间(空间)频率的局部化分析,它通过伸缩平移运算对信号(函数)逐步进行多尺度细化,最终达到高频处时间细分,低频处频率细分,能自动适应时频信号分析的要求,从而可聚焦到信号的任意细节,解决了Fourier变换的困难问题,成为继Fourier变换以来在科学方法上的重大突破。
有人把小波变换称为“数学显微镜”。
傅里叶与小波两者都是基,信号都可以分成无穷多个他们的和(叠加)。
而
展开系数就是基与信号之间的积,更通俗的说是投影。
展开系数大的,说明信号和基,是足够相似的。
这也就是相似性检测的思想。
但我们必须明确的是,傅里叶是0-2pi标准正交基,而小波是-inf到inf之间的基。
因此,小波在实轴上是紧的。
而傅里叶的基(正弦或余弦),与此相反。
而小波能不能成为Reisz基,或标准稳定的正交基。
所有满足容许性条件(从-INF到+INF积分为零)的函数,都可以成为小波。
小波作为尺度膨胀和空间移位的一组函数也就诞生了。
对于任何一个尺度a和平移因子b的小波,和原信号积,所得到的小波系数,都可以表示成,在a,b附近生成的小波,投影后小波系数的线性组合,这时的连续小波是与正交基毫无关系的东西,它顶多也只能作为一种积分变换或基。
但它的显微镜特点和相似性检测能力,已经显现出来了。
经过一次小波分解后,图像都被分解为四个1/4大小的图像,它们都是由原图与一个小波基图像的积后,再经过在行和列方向进行2倍的间隔抽样而生成的。
设y(t)∈L2(R)(L2(R)表示平方可积的实数空间,即能量有限的信号空间),其傅里叶变换为Y(w)。
当Y(w)满足允许条件(AdmissibleCondition):
(公式2-14)
时,我们称y(t)为一个基本小波或母小波(MotherWavelet)。
将母函数y(t)经伸缩和平移后,就可以得到一个小波序列。
对于任意的函数f(t)∈L2(R)的连续小波变换为:
(公式2-15)
Haar函数是在小波分析中最早用到的一个具有紧支撑的正交小波函数,同时也是最简单的一个函数,它是非连续的,类似一个阶梯函数。
Haar函数与db1小波函数是一样的。
Haar函数的定义为:
(公式2-16)
尺度函数为:
(公式2-17)
在实际运用中,尤其是在计算机上实现,连续小波必须加以离散化。
因此,有必要讨论一下连续小波ya,b(t)和连续小波变换Wf(a,b)的离散化。
下列三个二维小波基是建立二维小波的基础:
y1(x,y)=f(x)y(y)
y2(x,y)=y(x)f(y)
y3(x,y)=y(x)y(y)
它们构成二维平方可积函数空间L2(R2)的正交归一基:
(公式2-18)
二维离散小波分解的过程如下:
从一幅N×N的图像f1(x,y)开始,其中上标指示尺度N是2的幂。
对于j=0,2j=20=1尺度,也就是原图像的尺度。
j值的每一次增大都使尺度加倍,而使分辨率减半。
在变换的每一层次,图像都被分解为四个1/4大小的图像,它们都是由原图与一个小波基图像的积后,再经过在行和列方向进行2倍的间隔抽样而生成的。
对于第一个层次(j=1),可写成
(公式2-19)
(公式2-20)
(公式2-21)
(公式2-22)
后续的层次(j>1),依次类推,形成如图2-7所示的形式。
图2-7二维离散小波分析原理示意图
在matlab中可以借助函数wavedec2实现二维小波变换,进行二维信号的多层小波分解
格式:
[C,S]=wavedec2(X,N,'wname')
[C,S]=wavedec2(X,N,Lo_D,Hi_D)
其中[C,S]=wavedec2(X,N,'wname')使用小波基函数'wname'对二维信号X进行N层分解;[C,S]=wavedec2(X,N,Lo_D,Hi_D)使用指定的分解低通和高通滤波器Lo_D和Hi_D分解信号X。
别可以实现一维、二维和N维DFT
2.4.2程序及运行结果
Clearall
clc%清楚上次程序执行结果
I=imread('C:
\Users\Administrator\Pictures\002.jpg');
II=rgb2gray(I);
imshow(II)
A=im2double(II)
[L,H]=wfilters('haar','d')%调用haar小波的分解和综合滤波器系数,只返回Lo_D和Hi_D的分解滤波器系数
[C,S]=wavedec2(A,1,L,H)%对图像进行二维信号的多层小波分解
%使用指定的分解低通和高通滤波器L和H分解信号A。
可以实现一维DFT,其中C是小波变换后的结果数据,以一维矢量的形式组织,S是二维矩阵,记录了C中数据的分布形式
isize=prod(S(1,:
))
cA=C(1:
isize)
cH=C(isize+(1:
isize))
cV=C(2*isize+(1:
isize))
cD=C(3*isize+(1:
isize))
cA=reshape(cA,S(1,1),S(1,2))
cH=reshape(cH,S(2,1),S(2,2))
cV=reshape(cV,S(2,1),S(2,2))
cD=reshape(cD,S(2,1),S(2,2))
figure,
colormapgray
subplot(2,2,1)
imagesc(cA)%显示cA图像并显示标尺
subplot(2,2,2)
imagesc(cH)
subplot(2,2,3)
imagesc(cV)
subplot(2,2,4)
imagesc(cD)
运行结果如图2-8a,2-8b所示。
图2-8a小波变换后图像
从左至右依次为:
cA矩阵等价图像,cH矩阵等价图像
从左至右依次为:
cV矩阵等价图像,cD矩阵等价图像
三收获、体会和建议
通过这次课程设计,让我进一步的接触了MATLAB这款功能强大的软件,对其基本功能及用法,都通过自身的学习,翻阅资料,以及与同学之间的相互探讨,有了一定了解,特别是图像处理工具箱v3.2(ImageProcessingToolbox)有了一定深度的学习及运用,书中较全面、系统地介绍了,图形的基本操作及增强功能,例如:
图形的导入和显示,图形绘制、图像变换、图像增强。
总的来说,通过此次基础强化训练对MATLAB进行基础的运用和掌握,虽然只是对MATLAB一小部分进行运用。
虽然以前,在信号与系统的实验课上有所接触,也做过一次课程设计,但仅仅了解了其基本用法,和一些简单的处理函数。
但经过这次才发现,工具箱涉及的专业领域广泛且功能强大。
图像工具箱几乎包括所有经典的图像处理方法。
所以说对于这些软件还是应该自己动手实际操作才会有深刻理解。
所以,以后会认识到这款软件的重要作用,在今后的学习过程中努力学习她。
对于MATLAB这款功能强大,在各