MATLAB课程设计基于MATLAB的图像处理的基本运算.docx
- 文档编号:26012316
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:23
- 大小:825.79KB
MATLAB课程设计基于MATLAB的图像处理的基本运算.docx
《MATLAB课程设计基于MATLAB的图像处理的基本运算.docx》由会员分享,可在线阅读,更多相关《MATLAB课程设计基于MATLAB的图像处理的基本运算.docx(23页珍藏版)》请在冰豆网上搜索。
MATLAB课程设计基于MATLAB的图像处理的基本运算
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
题 目:
基于MATLAB的图像处理的基本运算
初始条件
1MATLAB软件
2数字信号处理与图像处理基础知识
要求完成的主要任务:
(1)能够对图像亮度和对比度变化调整,并比较结果。
(2)编写程序通过最近邻插值和双线性插值等算法将用户所选取的 图像区域进行放大和缩小整数倍的和旋转操作,并保存,比较几种插值的效果。
(3)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。
(4)对图像加入各种噪声,比较效果。
时间安排:
第1周:
安排任务,分组 第2-17周:
设计仿真,撰写报告
第18周:
完成设计,提交报告,答辩 地点:
鉴主3楼计算机实验室
指导教师签名:
2010年 月 日
系主任(或责任教师)签名:
2010年 月 日
摘要
MATLAB是—套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成—个方便的、界面友好的用户环境。
MATLAB强大的扩展功能为各个领域的应用提供了基础,由各个领域的专家相继给出了MATLAB工具箱,其中主要有信号处理,控制系统,神经网络,图像处助,鲁棒控制,非线性系统控制设计,最优化,小波,通信等工具箱,这此工具箱给各个领域的研究和工程应用提供了有力的工具。
借助于这些“巨人肩膀上的工具”,各个层次的研究人员可直现方便地进行分析、计算及设计工作,从而大大地节省了时间。
本次课程设计的目的在于较全面了解常用的数据分析与处理原理及方法,能够运用相关软件进行模拟分析。
通过对采集的图像进行常规的图像的亮度和对比度的调整,并进行最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的和旋转操作,并保存,比较几种插值的效果,以及对图像进行直方图和直方图均衡并加入噪声进行对比,达到本次课程设计的目的
关键词:
MATLAB亮度和对比度 插值 放大 旋转 噪声
Abstract
MATLABis-setofhigh-performancenumericalcomputationandvisualizationsoftware,whichcombinesnumericalanalysis,matrixcomputation,signalprocessingandgraphicsinoneform-aconvenient,user-friendlyuserenvironment.MATLABisapowerfulextensionapplicationinvariousfieldstoprovideabasisbyexpertsinvariousfieldshavebeengivenaMATLABtoolbox,whicharesignalprocessing,controlsystems,neuralnetworks,imageprocessingsupport,robustcontrol,nonlinearcontrolsystemdesign,optimization,wavelets,communicationstoolkit,whichthiskittothevariousareasofresearchandengineeringapplicationsapowerfultool.Withthese"toolsontheshouldersofgiants,"researchersatalllevelscannowbeeasilyanalyzeddirectly,calculationanddesignwork,whichgreatlysavestime.
Thetrainingaimstostrengthenthebasisofamorecomprehensiveunderstandingofcommonlyuseddataanalysisandprocessingprinciplesandmethodsrelatedtotheuseofsimulationsoftware.Imagescollectedbyconventionalimagebrightnessandcontrastadjustments,andthenearestneighborinterpolationandbilinearinterpolationalgorithmtotheuserselectedimageareatozoominandoutseveraltimesandrotatethewholeoperation,andsave,comparetheeffectofseveralinterpolationandtheimagehistogramandhistogramandcomparedwithnoise,tothepurposeofthiscoursedesign.
Keywords:
MATLAB brightnessandcontrast rotation interpolation noiseamplification
目 录
1.MATLAB简介 1
1.1MATLA的基本用途 1
1.2MATLAB的语言特点 1
1.3MATLAB系统构成 1
2.数据采集 2
2.1图像的选取 2
2.2图像亮度和对比度的调整 2
2.2.1编辑M文件 2
2.2.2MATLAB支持的图像格式和类型 3
2.2.3图像的读取 3
2.2.4调整图像亮度和对比度 4
3.图像的几何操作 6
3.1插补操作 6
3.1.1插补功能介绍 6
3.1.2插补具体操作 6
3.2放缩操作 8
3.2.1放缩功能介绍 8
3.2.2具体操作 9
3.3旋转操作 10
3.3.1旋转功能介绍 10
3.3.2具体操作 10
4.直方图统计 12
4.1灰度图的获取 12
4.1.1灰度图的转换功能介绍 12
4.1.2具体操作 12
4.2直方图以及直方图均衡 13
4.2.1直方图函数功能介绍 13
4.2.2直方图具体操作 14
5.图像的噪声处理 15
5.1添加噪声的功能介绍 15
5.2添加噪声的具体操作 16
6.总结(心得体会) 18
7.参考文献 19
1.MATLAB简介
1.1MATLA的基本用途
MATLAB是矩阵实验室(MatrixLaboratory)之意。
除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。
经过不断完善,MATLAB已经发展成为适合多学科,多种工作平台的功能强大大大型软件。
成为线性代数,自动控制理论,数理统计,数字信号处理,时间序列分析,动态系统仿真等高级课程的基本教学工具。
1.2MATLAB的语言特点
(1).语言简洁紧凑,使用方便灵活,库函数极其丰富。
运算符丰富。
(2).MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。
(3)程序限制不严格,程序设计自由度大。
(4)MATLAB的图形功能强大。
(5)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。
(6)由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。
1.3MATLAB系统构成
主要由以下五部分构成:
MATLAB系统构成
(1)MATLAB语言
(2)MATLAB工作环境
(3)图形处理
(4)MATLAB数学函数库
(5)MATLAB应用编程人员接口(API)
2数据采集
2.1图像的选取
从互联网上下载一张图片,图像为彩图,能够满足设计要求,如图1所示。
图1原彩色图
2.2图像亮度和对比度的调整
2.2.1编辑M文件
MATLAB是解释型语言,就是说MATLAB命令行中敲入的命令在当前MATLAB进程中被解释运行。
为方便起见,有两种方法可以使MATLAB的力量得到扩展——脚本和函数。
这两种方法都用像emacs一样的文本编辑器中编写的m文件(因为扩展名是.m所以这样命名,m文件还称点m文件)。
m文件的好处在于它可以保存命令,还可以轻易地修改命令而无需重新敲入整个命令行。
新建m文件的方法为File->New->M-File。
2.2.2MATLAB支持的图像格式和类型
1、MATLAB支持的几各图像文件格式:
(1)JPEG(JointPhotogyaphicExpeytGroup):
联合图像专家组的图像压缩格式。
(2)BMP(WindowsBitmap):
有1位、4位、8位、24位非压缩图像,8位RLE(RunlengthEncoded)的图像。
(3)TIFF(TaggedNetworkGraphics):
处理1位、4位、8位、24位非压缩图像,1位、4位、8位、24位packbit压缩图像,1位CCITT压缩图像等。
(4)PNG(PortableNetworkGraphics):
处理1位、4位、8位、16位灰度图像,8位和16位索引图像,24位和48位真彩色图像。
(5)GIF(GraphicsInterchangeFormat):
任何1位到8位的可交换的图像。
等等14种。
2、MATLAB支持五种图像类型,即:
(1)二值图像:
Double数据——图像为
的整数矩阵,元素值范围[0,1];unit8和unit16数据——图像为
的整数矩阵,元素值范围[0,1]。
(2)索引图像:
Double数据——图像为
的整数矩阵,元素值范围[0,p];unit8和unit16数据——图像为
的整数矩阵,元素值范围[0,p-1];
(3)灰度图像:
Double数据——图像为
的浮点数矩阵,元素值范围[0,1];unit8和unit16数据——图像为
的整数矩阵,元素值范围[0,255]或[0,65535];
(4)RGB图像:
Double数据——图像为
的浮点数矩阵,元素值范围[0,1];unit8和unit16数据——图像为
的整数矩阵,元素值范围[0,255]或[0,65535];
(5)多帧图像阵列。
2.2.3图像的读取
MATLAB为用户提供了专门的函数以从图像的格式的文件中读写图像数据。
这种方法不像其他的编程语言一样,需要编写复杂的代码,只需要简单的调用MATLAB提供的函数即可。
利用函数imread()可完成图形图像文件的读取,语法:
a=imread(filename,fmt)
[X,map]=imread(filename,fmt)
[...]=imread(filename)
[...]=imread(filename,idx)(只对TIF格式的文件)
[...]=imread(filename,ref)(只对HDF格式的文件)
2.2.4调整图像亮度和对比度
MATLAB中的图像调整技术用于图像的改善。
此处的改善有两方面的含义:
客观方面,可以提高图像的信噪比;主观方面,通过修正图像的亮度和对比度是某些特征更加容易辨认,。
为了调整图像的亮度和对比度,利用MATLAB中的J=imadjust(I,[low_in;high_in],[low_out;high_out],gamma)命令实现图像的亮度和对比度调整。
关于这条命令的说明如下所示:
将图像I中的亮度值映射到J中的新值,即将low_in至hige_in之间的值映射到low_out至high_out之间的值。
low_in以下与high_in以上的值被剪切掉了,也就是说,low_in以下的值映射到low_out,high_in以上的值映射到high_out。
它们都可以使用空的矩阵[],默认值是[01]。
Matlab中文论坛
将图像I中的亮度值映射到J中的新值,其中gamma指定描述值I和值J关系的曲线形状。
如果gamma小于1,此映射偏重更高数值(明亮)输出,如果gamma大于1,此映射偏重更低数值(灰暗)输出,如果省略此参数,默认为(线性映射)。
相关的MATLAB命令为:
a=imread('E:
/北戴河.jpg'); %读取图像路径
figure,
subplot(1,3,1)
imshow(a); %显示图像
title('原彩色图像')
K=imadjust(a,[0.30.7],[0.81]);%将图像调的明亮
subplot(1,3,2)
imshow(K);
title('明亮的图像')
J=imadjust(a,[0.30.7],[00.2]);%将图像调的灰暗
subplot(1,3,3)
imshow(J);
title('灰暗的图像')
这段命令可以原彩图读取和对图像的亮度和对比度的调整使得图像变得明亮和灰暗。
调整后的结果如下图2所示。
图2图像亮度和对比度的调整
由上面的处理结果可以看出,经过图像的亮度和对比度调整之后,图像的亮度和对比度发生了明显的变化。
将图像I中的亮度值映射到J中的新值,其中gamma指定描述值I和值J关系的曲线形状。
如果gamma小于1,此映射偏重更高数值(明亮)输出,如果gamma大于1,此映射偏重更低数值(灰暗)输出。
和理论结果一致。
3图像的几何操作
MATLAB图像处理工具箱中提供了一些基本的图像处理工具,包括几何操作函数。
这些函数支持所有的图像类型。
利用它们,可以对图像进行插值,缩放和旋转等几何操作。
3.1插补操作
3.1.1插补功能介绍
MATLAB中的immerize函数用于图像的插补。
MATLAB工具箱中提供了3种插补操作。
分别为'nearest'(默认值)最近邻插值,'bilinear'双线性插值',bicubic'双三次插值。
这三种插补方法的运算方式基本类似。
对于每一种来说。
为了确定插补像素点的数据值,用户必须在输入的图像中查找到与输出像素对应的点。
这三种插补的方法区别在于其对像素点颠覆值的不同。
对于最近邻插值来说,输出像素的赋值为当前点的像素点。
对于双线性插值来说,输出像素的赋值为2X2矩阵所包含的有效点的加权平均值。
对于双三次插值来说,输出像素的赋值为4X4矩阵所包含的有效点的加权平均值。
这里的像素的数目直接影响了运算过程的复杂度。
因此双线性插补的方法需要的运算时间比邻插补方法需要的时间长。
同样双三次插值比双线性插补方法需要的时间要长。
3.1.2插补具体操作
输入MATLAB命令:
k=imresize(a,1,method);根据method的不同,可以对图像进行不同方式的插值方式。
最近邻插值具体程序如下所示:
a=imread('E:
/北戴河.jpg'); %读取图像路径
figure,
subplot(1,2,1)
imshow(a); %显示图像
title('原彩色图像')
k=imresize(a,1);
subplot(1,2,2)
imshow(k);
title('最近邻插入图像')
最近邻插值输出的图像如图3所示:
图3 最近邻插值输出
双线性插值具体程序如下所示:
a=imread('E:
/北戴河.jpg'); %读取图像路径
figure,
subplot(1,2,1)
imshow(a); %显示图像
title('原彩色图像')
J=imresize(a,1,'bilinear');
subplot(1,2,2)
imshow(J);
title('双线性插入图像')
双线性插值输出的图像如图4所示:
图4 双线性插值
三线性插值具体程序如下所示:
a=imread('E:
/北戴河.jpg'); %读取图像路径
figure,
subplot(1,2,1)
imshow(a); %显示图像
title('原彩色图像')
l=imresize(a,1,'bicubic');
subplot(1,2,2)
imshow(l);
title('三线性插入图像')
双三次插值输出的图像如图5所示:
图5 双三次插值图像输出
由上面的处理结果可以看出,经过不同的插值处理运算后,根据插值的计算方法的不同,得到的图像显示结果出来的时间不一致,算法越复杂,所需要得到结果的时间越长。
3.2放缩操作
3.2.1放缩功能介绍
MATLAB影像工具箱中的immersize函数可以通过一种特定的插补方法来改变图像的大小。
该函数的语法如下面所述:
B=immersize(A,m,method)。
如果用户没有指定插补方法,则该函数将采用缺省的近邻插补方法。
另外,我们还可以根据指定的放大系数来改变图像的大小。
例如,下面的代码可以将X中的像素数目增加一倍。
Y=immersize(X,2)。
其中2为放大的系数。
如果希望缩小系数,只需将放大系数设置在0到1之间即可。
3.2.2具体操作
输入MATLAB命令:
immersize(A,m,method),根据m的不同,可以得到不同的图像大小。
下面是具体的程序:
a=imread('E:
/北戴河.jpg'); %读取图像路径
figure,
subplot(1,3,1)
imshow(a); %显示图像
title('原彩色图像')
k=imresize(a,0.1);
subplot(1,3,2)
imshow(k);
title('缩小后的图像')
J=imresize(a,3,'bilinear');
subplot(1,3,3)
imshow(J);
title('放大后的图像')根据上面的程序,可以得到下面的图像:
图6放大和缩小图
3.3旋转操作
3.3.1旋转功能介绍
在MATLAB处理工具箱中的imrotate函数可以通过一种特定的插补方法来改变图像显示的角度。
该函数的语法如下所示:
B=imrotate(A,angle,method)
该函数以图像中心点为基准,以角度angle逆时针方向旋转。
指定angle为负值,可实现图像顺时针旋转。
该函数是旋转图像A,使用指定的差值方法,method是可以有下列值之一的一个文本字符串,默认值是包含在大括号({}).
如果用户没有指定插补方法,则该函数将采用缺省的近邻插补方法。
另外,用户还需指定旋转的角度。
3.3.2具体操作
输入MATLAB命令:
B=imrotate(A,angle,method)得到旋转图像,根据angle的不同,得到的旋转角度也不同。
下面是具体的程序:
a=imread('E:
/北戴河.jpg'); %读取图像路径
figure,
subplot(2,2,1)
imshow(a); %显示图像
title('原彩色图像')
J=imrotate(a,90);
subplot(2,2,2)
imshow(J);
title('逆时针旋转90度')
K=imrotate(a,-90);
subplot(2,2,3)
imshow(K);
title('顺时针旋转90度')
L=imrotate(a,45);
subplot(2,2,4)
imshow(L);
title('逆时针旋转45度')
根据上面的程序,可以得到下面的图像:
图7旋转图像
4.直方图统计
在MATLAB处理工具箱中有imhist函数,可以用这个函数对图像进行直方图统计,至于图像的均衡处理,可以采用histeq这个函数,但是这两个函数只是适用于二维图像,因而我们在操作的过程中首先得对图像进行灰度图的转换。
4.1灰度图的获取
4.1.1灰度图的转换功能介绍
灰度图像保存在—个矩阵中,矩阵的每个元素代表—个像素点。
矩阵可以是双精度类型,值域为[0,1],也可以为uint8类型,其数据范围为[0,256],矩阵的每个元素值代表不同的亮度或灰度级,亮度值为0表示黑色;亮度值为1代表白色。
为了转换为灰度图,利用MATLAB中的rgb2gray()命令实现RGB图像到灰度图像的转化。
转化后在使用命令isgray()判断图像是否变为灰度图,如果是灰度图将返回为1,不是将返回0。
灰度图转换成功后,将转化后的灰度图读取出来。
4.1.2具体操作
输入MATLAB中的rgb2gray()命令实现RGB图像到灰度图像的转化。
下面是具体的程序:
a=imread('E:
/北戴河.jpg'); %读取图像路径
figure,
subplot(1,2,1)
imshow(a); %显示图像
title('原彩色图像')
k=rgb2gray(a);
isgray(k);
subplot(1,2,2)
imshow(k);
title('灰度图像')
根据上面的程序,可以得到下面的图像:
图8灰度图的获取
4.2直方图以及直方图均衡
前面已经提到过可以采用imhist函数和histeq函数,对图像进行直方图统计以及图像的均衡处理。
下面对其功能分别进行介绍:
4.2.1直方图函数功能介绍
imhist(I)显示图像I的直方图,图像的灰度数由图像类型指定,如果I为灰度图像,imhist使用一个默认的256值,如果I为二值图像,imhist则使用2值。
imhist(I,n)计算和显示图像I的直方图,n为指定的灰度级数目,默认为256。
如果I是二值图像,那么n仅有两个值。
J=histeq(I,hgram)实现了所谓"直方图规定化",即将原是图象I的直方图变换成用户指定的向量hgram。
J=histeq(I,n) 均衡化后的级
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 课程设计 基于 图像 处理 基本 运算