基于matlab图像增强的比较的程序设计.docx
- 文档编号:7024745
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:17
- 大小:554.77KB
基于matlab图像增强的比较的程序设计.docx
《基于matlab图像增强的比较的程序设计.docx》由会员分享,可在线阅读,更多相关《基于matlab图像增强的比较的程序设计.docx(17页珍藏版)》请在冰豆网上搜索。
基于matlab图像增强的比较的程序设计
目录
1Matlab软件简介1
1.1Matlab语言的历史1
1.2Matlab软件概况1
2设计目的3
3原理分析4
3.1数字图像噪声4
3.2空间域图像增强4
3.3中值滤波5
4程序设计6
4.1程序设计思路6
4.2要使用的Matlab函数6
5程序流程图7
5.1添加高斯噪声流程图7
5.2添加椒盐噪声流程图8
5.3中值滤波流程图9
6源程序10
6.1添加高斯噪声再滤波10
6.2添加椒盐噪声再滤波11
7程序运行结果及分析12
7.1高斯噪声滤波结果12
7.2椒盐噪声滤波结果13
7.3结果分析14
结束语15
参考文献16
摘要
图像增强是数字图像处理的基本内容之一,其目的是突出在图像中的有用信息,扩大图像中不同物体特征之间的差别,为图像的信息提取及其他图像分析技术奠定良好的基础。
图像增强的主要目的是通过增强图像中的有用信息,抑制无用信息从而改善图像的视觉效果和有利于人工和机器分析。
处理的过程中,消除图像的噪声干扰是一个非常重要的问题。
图像在实际应用中可能会遇到各种噪声干扰,如高斯噪声、椒盐噪声等。
可以采用空间域图像增强的办法对其进行处理,减少噪声的影响。
本次课设使用的是空间滤波对图片处理,包括均值滤波和中值滤波。
关键词:
高斯噪声,椒盐噪声,均值滤波,中值滤波
1Matlab软件简介
1.1Matlab语言的历史
70年代后期,身为美国New Mexico大学计算机系系主任的Cleve Moler发现学生用FORTRAN编写接口程序很费时间,于是他开始自己动手,利用业余时间为学生编写EISPACK和LINPACK的接口程序。
Cleve Moler给这个接口程序取名为Matlab。
1984年,为了推广Matlab在数值计算中的应用,CleveMoler、JohonLittle等正式成立了Mathworks公司,从而把Matlab推向市场,并开始了对Matlab工具相等的开发设计。
1.2Matlab软件概况
Matlab是Matrix Laboratory的缩写,意为矩阵实验室。
它具有强大的矩阵处理功能和绘图功能,进还能进行文字处理,绘图,建模仿真等功能。
随着版本的不断升级,它在数值计算及符号计算功能上得到了进一步完善。
Matlab已经发展成为多学科、多种工作平台的功能强大的大型软件。
在欧美等高校,Matlab已经成为线性代数、自动控制理论、概率论及数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具。
Matlab有以下一些特点:
Matlab的帮助功能很强大,自带有详细的帮助手册,基于HTML的完整的帮助功能,也可以用help命令来得到帮助信息。
程序语法与C语言类似,设计自由度大,方便我们编程。
例如在Matlab里,用户无需对变量预定义就可使用。
大量数学函数已经定义好,并且有很强的用户自定义函数的能力。
Matlab有高级的程序环境,但程序环境很简单易用,有与其它语言编写的程序结合和输入输出格式化数据的能力;Matlab既具有结构化的控制语句,又有面向对象编程的特性。
还有一个原因使Matlab受人们欢迎的,那就是Matlab源程序具有很大的开放性。
除了内部函数以外,所有Matlab的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。
Matlab有强大的的图形绘制功能。
在Matlab里,数据可视化的操作非常简单易用。
Matlab还有较强的编辑图形界面的能力。
可以用来声成图解和可视化的二维、三维图。
Matlab还拥有功能强大的各种工具箱。
其工具箱分为两类:
功能性工具箱和学科性工具箱。
功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能。
功能性工具箱用于多种学科。
而学科性工具箱是专业性比较强的,如(control、signalproceessing、commumnication)toolbox等。
这些工具箱都是由该领域内学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,而直接进行高,精,尖的研究,能极大地促进我们的学习研究工作。
虽然Matlab有很多优点,但它也有一些缺点,比如:
由于Matlab的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。
2设计目的与要求
1)了解对灰度图片处理的基本原理和方法并熟悉掌握MATLAB编程环境的一般操作和运用。
2)通过MATLAB仿真软件,实现给定一张灰度图片,模拟加入高斯噪声、椒盐噪声,然后使用中值滤波、均值滤波等方法进行图像增强。
3)利用matlab对加入噪声的该图片进行处理,记录每一种方法的过程,并进行比较,分析哪种噪声的所对应的增强方法效果最好。
4)在加深对数字图像处理课本知识理解的基础上,学会运用已学的知识设计图像增强的处理方法并对结果进行分析。
5)根据课程设计有关规范,按时、独立完成课程设计说明书。
3原理分析
3.1数字图像噪声
数字图像在图像获取集数字化过程,以及在数字图像传输的过程中,有可能会受到噪声干扰。
图像传感器在获取图像中会受到环境和原件质量的影响,产生噪声。
例如照相机照相时会受到光照影响。
数字图像在传输过程中,由于传输信道回手到噪声干扰,也会产生噪声。
噪声有很多种类,例如:
高斯噪声,瑞利噪声,椒盐噪声,指数分布噪声等等。
本次课设讨论的是高斯噪声和椒盐噪声。
高斯噪声符合高斯分布,高斯噪声的产生源于电子电路噪声和由低照明度或高温带来的传感器噪声。
其概率密度函数为:
(3-1)
椒盐噪声又称(双极)脉冲噪声,其概率密度函数为:
(3-2)
b>a,灰度级b在图像中将显示为一个亮点,灰度级a为一个暗点。
椒盐噪声最主要表现在成像中的短暂停留中。
3.2空间域图像增强
对噪声图片处理要使用图像增强的方法。
图像增强技术是为了人类视觉系统的生理接受特点而设计一种改善图像的方法,处理图像,使其更适合于特定应用。
图像增强的方法有空间域方法和频域方法。
本次课设使用的是空间域方法。
空间域指图像平面本身,以图像像素直接处理为基础。
空间域增强包括灰度变换,直方图处理,用算数、逻辑操作增强,空间滤波等。
其中空间滤波包括平滑空间滤波器,锐化空间滤波器。
平滑空间滤波器包括平滑线性滤波器和统计排序滤波器。
3.3中值滤波
统计排序滤波器是一种非线性的空间滤波器,它的响应就与图像滤波器包围的图像区域中像素的排序,然后由统计排序结果决定的值代替中心像素的值。
最常见的例子就是中值滤波器。
为对一幅图像上的某个点做中值滤波处理,必须先将掩模内欲求的像素及其邻域的像素排序,确定出中值,并将该值赋予该像素点。
中值滤波器有优秀的去噪能力aaaaa,比小尺寸的线性平滑滤波器的模糊程度要低很多。
4程序设计
4.1程序设计思路
首先考虑如何在图像中加入噪声。
本次课设使用的图片是256级灰度图片,在Matlab中表示为一个矩阵。
加入噪声就是改变矩阵中某些点的值。
在加入高斯噪声时,可以使用函数随机生成高斯分布的矩阵,随机的加到某些点上。
在加入椒盐噪声时,也是二循环循环矩阵中每一点,随机的改变某一点的值为0或255。
中值滤波可以用两重循环循环图片中除了边缘的点,对该点及周围的八个点的数值进行排序,得到中值,将该点的值改为中值即可实现。
4.2要使用的Matlab函数
加入噪声要用到随机数生成函数。
加入高斯噪声用的函数是randn,随机数randn产生均值为0,方差σ^2=1,标准差σ=1的正态分布的随机数或矩阵的函数。
其用法有Y=randn,Y=randn(n),Y=randn(m,n),Y=randn([mn]),Y=randn(m,n,p,...),Y=randn([mnp...]),Y=randn(size(A)),randn(method,s),s=randn(method)。
本课设程序中的用法是Y=randn(size(A)),返回一个和A有同样维数大小的随机数组。
加入椒盐噪声时用的函数是rand,可以返回一个0-1之间均匀分布的随机数。
其用法有Y=rand,Y=rand(n),Y=rand(m,n),Y=rand([mn]),Y=rand(m,n,p,...),Y=rand([mnp...]),Y=rand(size(A)),rand(method,s),s=rand(method),本程序中的用法是Y=rand,Y值是一个随机数。
中值滤波时可以使用reshape函数进行矩阵变形,其用法有B=reshape(A,m,n),B=reshape(A,m,n,p,...),B=reshape(A,[mnp...]),B=reshape(A,...,[],...),B=reshape(A,siz)。
本程序中用法是b=reshape(a,1,9),就是把3×3矩阵转化为1×9的矩阵以便于排序。
再用sort函数对一个数组进行排序,用法是B=sort(A),B=sort(A,dim),B=sort(...,mode),[B,IX]=sort(...)。
本程序中用法是B=sort(A),把矩阵A按行进行升序排序。
5程序流程图
5.1添加高斯噪声流程图
如下图6.1是添加高斯噪声的流程图,通过高斯随机数函数生成高斯分布数,加到原图像中。
图5.1添加高斯噪声流程图
5.2添加椒盐噪声流程图
图5.2是添加椒盐噪声的流程图,通过均匀随机数函数随机的在图片中添加白点或黑点,噪声密度是0.05。
图5.2添加椒盐噪声
5.3中值滤波流程图
如图5.3是中值滤波流程图,首先找出某点及周围8个点的数值,对其进行排序,找出其中的中值,赋值给该点。
图5.3中值滤波流程图
6源程序
6.1添加高斯噪声再滤波
以下程序是给图片2.jpg添加高斯噪声,再用3×3的均值滤波和中值滤波处理。
clearall;
I=imread('G:
\12.jpg');%读入图片到I
figure
(1);%显示原图片
imshow(I);
J=round(0.1*randn(size(I))*256);%产生均值为0,方差0.1,范围0-1的高斯噪声矩阵J,再乘以256以适应灰度图片的数值,J与I大小相同
J=uint8(J);%把J转换为整数型矩阵
I=I+J;%I加入噪声
figure
(2);%显示加入噪声后的图片
imshow(I,[0255]);
form=2:
size(I,1)-1%中值滤波
forn=2:
size(I,2)-1%循环矩阵I中除了边缘外每一点
a=I(m-1:
m+1,n-1:
n+1);%a等于该点周围3×3矩阵
b=reshape(a,1,9);%把a转化为1×9矩阵
b=sort(b);%对b升序排序
I(m,n)=b(5);%该点值等于中值b(5)
end;
end;
figure(3)%显示中值滤波结果
imshow(I);
6.2添加椒盐噪声再滤波
以下程序是给图片2.jpg添加椒盐噪声,再用3×3的均值滤波和中值滤波处理。
clearall;
I=imread('G:
\12.jpg');%读入图片到I
figure
(1)%显示原图片
imshow(I);
form=1:
size(I,1)%加椒盐噪声。
噪声密度0.05
forn=1:
size(I,2)%循环I内每一点
ifrand>0.95%如果均匀随机数大于0.95
ifround(rand)%如果均匀随机数大于0.5
I(m,n)=0;%该点值变为0
else
I(m,n)=255;%否则该点值变为255
end;
end;
end;
end;
figure
(2)%显示添加椒盐噪声后的图片
imshow(I);
form=2:
size(I,1)-1%中值滤波
forn=2:
size(I,2)-1
a=I(m-1:
m+1,n-1:
n+1);
b=reshape(a,1,9);
b=sort(b);
I(m,n)=b(5);
end;
end;
figure(4) ;%显示中值滤波后图片
imshow(I);
7程序运行结果及分析
7.1高斯噪声滤波结果
首先在Matlab中输入源程序,然后保存,选择Debug菜单中的Run执行程序。
程序运行结果如图7.1-7.3:
图7.1原图片
图7.2添加高斯噪声图片
图7.3中值滤波结果
7.2椒盐噪声滤波结果
椒盐噪声滤波程序使用的图片和高斯噪声滤波程序一样,都是12.jpg,其程序运行结果如图7.4-7.6:
图7.4原图片
图7.5添加椒盐噪声图片
图7.6中值滤波结果
7.3结果分析
通过程序运行结果可以看出,在添加高斯噪声的图片中,使用中值滤波后,图像的噪声减弱了,同时图像也变模糊了。
在添加椒盐噪声的图片中,使用中值滤波后,滤除了椒盐噪声,图片也没有明显模糊,说明中值滤波滤除椒盐噪声很有效。
高斯噪声是幅值近似正态分布,但分布在每一点的像素上,因为图像中的每一点都是污染点,所以中值滤波选不到合适的污染点。
椒盐噪声是幅值近似相等但是随机分布在不同的位置上,图像中有干净点也有污点,中值滤波是选择适当的点来代替污染点的数所以处理效果好。
结束语
通过Matlab的学习研究,我对Matlab有了初步的认识,我掌握了Matlab的基本操作,并学会了用Matlab解决一些课程中的问题,下面是我具体的一些体会
Matlab功能非常强大,几乎可以计算我们目前所遇到的任何问题,不仅可以计算数学问题,也可以用来解决电路等其他学科的各种问题。
而且我们可以自编函数,从而可以解决更多样的问题。
但以目前我们的知识,只能掌握Matlab的一小部分功能,在以后的学习中,我还需要继续学习Matlab的相关知识。
Matlab虽然功能非常强大,但其操作却非常简单,它的语法类似于我们以前学过的C语言,使我很容易上手,而其语法比C语言更为自由,限制更少,语法类似于自然语言,简洁而智能化,使我可以很容易的编写程序且不容易出错。
关于绘图的操作则比C语言简单得多,用几条简单的语句就可以绘出各种曲线、图形,使我们的学习研究变的非常方便。
我认为学习Matlab的关键在于函数,只要掌握了函数的用法,那么就能很快的编出程序。
而Matlab的难点也正是函数,因为Matlab拥有大量的函数,仅仅基本的函数就超过七百个,要是算上专业拓展函数那就更多,想在短时间内掌握这么多函数是很难的。
我认为应该多练多学,在解决问题的过程中学习并记住所用的函数,有不懂的就查资料,问同学,争取彻底搞懂所作的问题,并牢牢掌握,这样以后就可以独立解决类似问题。
在这次课程设计中,我学到了很多关于Matlab的知识,但这还远远不够,我现在只掌握了一些基本的功能,而解决更高级问题我的知识还不够,我要在日后进一步学习,更好地掌握Matlab。
参考文献
[1]冈萨雷斯,伍兹.数字图像处理.北京:
电子工业出版社,2004.
[2]冈萨雷斯,伍兹.数字图像处理(Matlab版).北京:
电子工业出版社,2005.
[3]陈怀琛,吴大正,高西全.Matlab及在电子信息课程中的应用,第三版.北京:
电子工业出版社,2006.
[4]杨高波,元波.精通Matlab7.0混合编程.北京:
电子工业出版社,2006.
[5]陈怀琛.Matlab及其在理工课程中的应用指南.西安:
西安电子科技大学出版社,2000.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 matlab 图像 增强 比较 程序设计