图像处理图像滤波边缘处理_第1页
图像处理图像滤波边缘处理_第2页
图像处理图像滤波边缘处理_第3页
图像处理图像滤波边缘处理_第4页
图像处理图像滤波边缘处理_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、姓 名:学 号:学 院:专 业:课 目:数字图像处理图像处理实验部分此次实验在MATLAB中实现:打开MATLAB,“file”“new”“script”,则创建新文件即完成,在新建的“Editor-Untitled”即可编程。下面简单介绍此次实验中主要应用到的函数:1、 imread该函数用于读入各种图像文件。如:a=imread(),其中图像在MATLAB安装目录“matlab”-“toolbox”-“images”-“imdemos”下,若图片不在该目录下,则读入图像格式如下:a=imread(D:)。2、 imshow该函数用于图像文件得显示。如a=imshow()。3、 rgb2gr

2、ay该函数用于将彩色转为黑白图像。如:I=rgb2grayI。4、 subplot该函数一般格式为:subplot(m,n,p),用于在同一窗口中绘制多个子图,把图形窗口分割为m*n个子图,然后再第P个小窗口中创建坐标轴。5、 fspecial利用该函数可生成滤波时所用的模板。其调用格式如下:(1) h=fspecial(type)(2) h=fspecial(type,parameters)参数type指定滤波器的类型,parameters是与滤波器类型有关的具体参数。6、 medfilt2该函数用于实现中值滤波。其调用格式如下:B= medfilt2(A,m,n):对图像A执行二维中值滤波

3、。每个输出像素为m*n领域的中值。在图像边界用0填充,所以边缘的中值为m,n/2,区域的中值,可能失真。7、imfilter该函数对任意类型数组或多维图像进行滤波。调用方法如下:B=imfilter(A,H)B=imfilter(A,H,option1,option2,)或g=imfilter(f,w,filtering_mode,boundary_options,size_options)其中,f为输入图像,w为滤波掩膜,g为滤波后图像。filtering_mode用于指定在滤波过程中使用“相关”还是“卷积”。boundary_options用于处理的边界充零问题,边界的大小由滤波器的大小确

4、定。一、图像滤波:1、均值滤波基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点(x,y),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度值g(x,y)。3*3,5*5,7*7窗口下均值滤波实验程序如下:clear allI=imread('D:A.jpg');J=imnoise(I,'gaussian',0,0.02); %加入均值为0,方差为的高斯噪声w1=fspecial('average',3 3); % 先定义3*3窗口的滤波器w2=fs

5、pecial('average',5 5); % 先定义5*5窗口的滤波器w3=fspecial('average',7 7); % 先定义7*7窗口的滤波器 a=imfilter(J,w1,'replicate'); %让图像通过滤波器 b=imfilter(J,w2,'replicate'); c=imfilter(J,w3,'replicate'); subplot(2,3,1);imshow(I);title('原始图像');subplot(2,3,2);imshow(J);title(&#

6、39;加入高斯噪声后图像');subplot(2,3,3);imshow(a); title('3*3均值滤波图像');subplot(2,3,4);imshow(b);title('5*5均值滤波图像');subplot(2,3,5);imshow(c);title('7*7均值滤波图像');运行结果:MATLAB中实现的均值滤波结果(包括3*3,5*5,7*7窗口)2、中值滤波中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是去某种结构的二维滑

7、动模板,将板内像素按照像素值的大小进行排序,生成单调上升的二维数据序列,并取出序列中位于中间位置的灰度作为中心像素的灰度。对一个滑动窗口内的诸像素灰度值排序,用中值代替窗口中心像素的原来灰度值(非线性)。中值滤波法能有效削弱椒盐噪声,且比邻域、超限像素平均法更有效3*3,5*5,7*7中值滤波实验程序:clear allI=imread('D:shu.bmp');I=rgb2gray(I);J=imnoise(I,'salt & pepper',0.02);subplot(2,3,1);imshow(I);title('原图像');sub

8、plot(2,3,2);imshow(J);title('添加椒盐噪声图像');k1=medfilt2(J); %进行3*3模板中值滤波k2=medfilt2(J,5,5); %进行5*5模板中值滤波k3=medfilt2(J,7,7); %进行7*7模板中值滤波subplot(2,3,3);imshow(k1);title('3*3模板中值滤波');subplot(2,3,4);imshow(k2);title('5*5模板中值滤波');subplot(2,3,5);imshow(k3);title('7*7模板中值滤波');结

9、果:MATLAB中实现的中值滤波结果(包括3*3,5*5,7*7窗口)3、试验比较:由上面两种滤波的结果可以得出以下结论:均值滤波算法简单,计算速度快,平滑后噪声方差为处理前的1/m。但是图像产生模糊,特别在边缘和细节处;而且邻域越大,模糊程度越严重,由图可以看出,即3*3模板去噪能力没有5*5模板强,但5*5模板的处理室图像更模糊。与均值滤波相比,中值滤波对脉冲干扰及椒盐噪声的抑制效果好,在抑制随机噪声的同时能有效保护边缘少受模糊。且运算速度快,可硬化,便于实时处理,但是对点、线等细节较多的图像却不太合适。由图可以看出,在三个窗口中实现的中值滤波,7*7窗口滤波后的图像最模糊。二、边缘检测1

10、. Roberts算子Roberts算子是最古老的算子之一,是一种交差差分算子。由于它只使用当前像素的2*2邻域,是最简单的梯度算子,所以计算非常简单。Roberts算子计算时利用的像素数一共有4个,可以用模板对应4个像素与模板相应的元素相乘相加得到。Roberts算子边缘定位准,主要缺点是其对噪声的高度敏感性,原因在于仅使用了很少几个像素来近似梯度。实用于边缘明显而且噪声较少的图像分割。2、Sobel的原理:Sobel算子根据像素点上下、左右邻点灰度加权差,在边缘处达到极值这一现象检测边缘。对噪声具有平滑作用,提供较为精确的边缘方向信息,边缘定位精度不够高。当对精度要求不是很高时,是一种较为

11、常用的边缘检测方法。在技术上,它是一离散性差分算子,用来运算图像亮度函数的梯度之近似值。在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量.该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。在边沿检测中,常用的一种模板是Sobel算子。由于Sobel算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数,简单有效,因此应用广泛。美中不足的是,Sobel算子并没有将图像的主体与背景严格地区分开来,换言之就是Sobel算子没有基于图像灰度进行处理,由于Sobel算子没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令

12、人满意。在观测一幅图像的时候,我们往往首先注意的是图像与背景不同的部分,正是这个部分将主体突出显示,基于该理论,我们给出了下面阈值化轮廓提取算法,该算法已在数学上证明当像素点满足正态分布时所求解是最优的。3、Laplacian算子这是二阶微分算子,对噪声比较敏感,所以,图像一般先经过平滑处理,因为平滑处理也是用模板进行的,所以,通常的分割算法都是把Laplacian算子和平滑算子结合起来生成一个新的模板。Laplacian算子一般不以其原始形式用于边缘检测,因为其作为一个二阶导数,Laplacian算子对噪声具有无法接受的敏感性;同时其幅值产生算边缘,这是复杂的分割不希望有的结果;最后Lapl

13、acian算子不能检测边缘的方向;所以Laplacian在分割中所起的作用包括:(1)利用它的零交叉性质进行边缘定位;(2)确定一个像素是在一条边缘暗的一面还是亮的一面;一般使用的是高斯型拉普拉斯算子(Laplacian of a Gaussian,LoG),由于二阶导数是线性运算,利用LoG卷积一幅图像与首先使用高斯型平滑函数卷积改图像,然后计算所得结果的拉普拉斯是一样的。所以在LoG公式中使用高斯函数的目的就是对图像进行平滑处理,使用Laplacian算子的目的是提供一幅用零交叉确定边缘位置的图像;图像的平滑处理减少了噪声的影响并且它的主要作用还是抵消由Laplacian算子的二阶导数引起

14、的逐渐增加的噪声影响。4、实验程序:clear all I=imread('D:Demo4.bmp');BW1=edge(I,'roberts');%采用roberts算子进行边缘检测BW2=edge(I,'sobel');%采用sobel算子进行边缘检测BW3=edge(I,'log');%采用log算子进行边缘检测subplot(2,2,1);imshow(I);title('原始图像');subplot(2,2,2);imshow(BW1);title('Roberts边缘检测');subpl

15、ot(2,2,3);imshow(BW2);title('sobel边缘检测');subplot(2,2,4);imshow(BW3);title('log边缘检测')5、实验结果:6、算法比较:算子加法运算PN乘法运算MNRoberts3*N20Sobel11*N22*N2Laplacian4*N2N2从加法的角度来看,Roberts算子的运算速度较快,从乘法的角度看Laplacian算子的运算速度较快。Roberts算子对边缘定位比较准,所以分割结果的边界宽度比较窄。但是Roberts算子由于不包括平滑,对噪声比较敏感,在图像噪声较少的情况下,分割的结果还是

16、相当不错的。Soble算子对噪声有抑制作用,因此不会出现很多孤立的边缘像素点,不过Soble算子对边缘的定位不是很准确,图像的边界宽度往往不止一个像素,不适合对边缘定位的准确性要求很高的应用。Sobel算子是通过像素平均来实现的,有一定的抗噪能力,同时图像也产生了一定的模糊。由于Laplacian算子利用的是二阶导数信息,对噪声比较敏感,所以分割结果中在一些像素上出现了散碎的边缘像素点。不过Laplacian算子对边缘的定位还是比较准的。三、图像分割:1、固定阈值法:利用图像的灰度特征来选择一个最佳阈值,使前景和背景的两个灰度级分布的有效信息为最大。这里主要以图像二值化为例。图像二值化是通过设

17、定某个阀值,把具有灰度级的图像变换成只有两个灰度级的黑白图像。设输入图像为f ( x, y ),二值化后的图像为g ( x, y ), 阀值为T, 那么图像二值化的方法为gx,y=0, &f(x,y)<T255, &f(x,y)T2、最大类间方差法(otsu方法)假定:图像f(i,j)的灰度区间为0,L-1,选择一阈值t 将图像的象元分为c1、c2两组。其中,C1 : f(i,j)<t, 象元数:w1,灰度均值:m1,均方差:s12。C2 :f (i,j)>t,

18、象元数:w2 ,灰度均值:m2,均方差:s22。当组内方差越小,则组内象素越相似;组间方差越大,则两组的差别越大。所以sB2/sw2的值越大,分割效果越好。3、实验程序:clear allI=imread('D:shu.bmp');I=rgb2gray(I);T=0.5*(double(min(I(:)+double(max(I(:);%设置初始阈值为最大灰度和最小灰度值和的一半done=false;while doneg=I>=T;%分成两组像素,灰度值大于或者等于T的和灰度值小于T的Tnext=0.5*(mean(I(g)+mean(I(g);%新阈值两个范围内像素平均值和的一半done=abs(T-Tnext是自己指定的参数,根据要达到的效果来自行选择T=Tnext;end%以下程序就是根据上面确定的阈值进行图像二值分割J=I;K=find(J>=T);J(K)=255;K=find(J<T);J(K)=0;figure;subplot(2,2,1),imshow(I,),title('原始图像');subplot(2,2,2),imshow(J,),title('固定阈值法分割后图像');Th=graythresh(I);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论