您好,欢迎访问三七文档
大学实验报告学院:计算机科学与技术专业:信息安全班级:131姓名学号实验组实验时间2016/5/27指导教师成绩实验项目名称图像的分割实验目的1、理解图像边缘提取的基本概念;2、熟悉进行边缘提取的基本方法;3、掌握用MATLAB语言进行图像边缘提取的方法4、用形态学运算实现灰度图像的噪声平滑和图像边缘提取。实验要求1、理解图像边缘提取的基本概念;2、熟悉进行边缘提取的基本方法;3、掌握用MATLAB语言进行图像边缘提取的方法4、用形态学运算实现灰度图像的噪声平滑和图像边缘提取。实验原理图像理解是图像处理的一个重要分支,他研究为完成某一任务需要从图像中提取哪些有用的信息,以及如何利用这些信息解释图像。边缘检测技术对于处理数字图像非常重要,因为边缘是所要提取目标和背景的分界线,提取出边缘才能将目标和背景区分开来。在图像中,边界表明一个特征区域的终结和另一个特征区域的开始,边界所分开区域的内部特征或属性是一致的,而不同的区域内部的特征或属性是不同的,边缘检测正是利用物体和背景在某种图像特性上的差异来实现的,这些差异包括灰度,颜色或者纹理特征。边缘检测实际上就是检测图像特征发生变化的位置。由于噪声和模糊的存在,检测到的边界可能会变宽或在某些点处发生间断,因此,边界检测包括两个基本内容:首先抽取出反映灰度变化的边缘点,然后剔除某些边界点或填补边界间断点,并将这些边缘连接成完整的线。1.基于导数算子的边缘检测边缘检测的方法大多数是基于方向导数掩模求卷积的方法。导数算子具有突出灰度变化的作用,对图像运用导数算子,灰度变化较大的点处算得的值比较高,因此可将这些导数值作为相应点的边界强度,通过设置门限的方法,提取边界点集。一阶导数fx与fy是最简单的导数算子,它们分别求出了灰度在x和y方向上的变化率,而方向α上的灰度变化率可以用下面式子计算:cossin(cossin)fffGijxy对于数字图像,应该采用差分运算代替求导,相对应的一阶差分为:(,)(,)(1,)(,)(,)(,1)xyfijfijfijfijfijfij方向差分为:(,)(,)cos(,)sinxyfijfijfij函数f在某点的方向导数取得最大值的方向是1tan/ffyx,方向导数的最大值是1222ffGxy称为梯度模。利用梯度模算子来检测边缘是一种很好的方法,它不仅具有位移不变性,还具有各向同性。为了运算简便,实际中采用梯度模的近似形式,如:(,)(,)xyfijfij、max((,),(,))xyfijfij及max(,)(,)fijfmn等。另外,还有一些常用的算子,如Roberts算子和Sobel算子。Roberts算子的表达式为:max((,)(1,1),(1,)(,1))fijfijfijfijSobel算子的表达式为:X方向算子:121000121y方向算子:101202101其中,由于Sobel算子是滤波算子的形式,用于提取边缘。我们可以利用快速卷积函数,简单有效,因此应用很广泛。拉普拉斯高斯(LoG)算法是一种二阶边缘检测方法。它通过寻找图像灰度值中二阶微分中的过零点(ZeroCrossing)来检测边缘点。其原理为,灰度级突变形成的边缘经过微分算子形成一个单峰函数,峰值位置对应边缘点;对单峰函数进行微分,则峰值处的微分值为0,峰值两侧符号相反,而原先的极值点对应于二阶微分中的过零点,通过检测过零点即可将图像的边缘提取出来。MATLAB的图像处理工具箱中提供的edge函数可以实现检测边缘的功能,其语法格式如下:BW=edge(I,‘sobel’)BW=edge(I,‘sobel’,direction)BW=edge(I,‘roberts’)BW=edge(I,‘log’,)这里BW=edge(I,‘sobel’)采用Sobel算子进行边缘检测。BW=edge(I,‘sobel’,direction)可以指定算子方向,即:direction=‘horizontal’,为水平方向;direction=‘vertical’,为垂直方向;direction=‘both’,为水平和垂直两个方向。BW=edge(I,‘roberts’)和BW=edge(I,‘log’)分别为用Roberts算子和拉普拉斯高斯算子进行边缘检测。2.形态学操作数学形态学图像处理的基本思想是利用一个称作结构元素的“探针”收集图像的信息。当探针在图像中不断移动时,便可考察图像各个部分间的相互关系,从而了解图像各个部分的结构特征。作为探针的结构元素,可直接携带知识(形态、大小、以及灰度和色度信息)来探测所研究图像的结构特点。2.1二值图像数学形态学二值形态学中的运算对象是集合,通常给出一个图像集合和一个结构元素集合,利用结构元素对图像进行操作。其基本运算有四种:腐蚀、膨胀、开运算和闭运算。基于这些基本运算和组合来进行图像形状和结构的分析及处理。如果A是图像集合,B是结构元素(B本身也是一个图像集合),形态学运算将使用B对A进行操作。结构元素往往比图像小得多。膨胀和腐蚀膨胀是在二值图像中“加长”或“变粗”的操作。这种特殊的方式和变粗的程度由一个称为结构元素的集合控制。数学上,膨胀定义为集合运算。A被B膨胀,记为AB,定义为[()]zABzBAA腐蚀“收缩”或“细化”二值图像中的对象。像在膨胀中一样,收缩的方式和程度由一个结构元素控制。腐蚀的数学定义与膨胀相似,A被B腐蚀记为A$B,定义为()zABzBA$开运算和闭运算在图像处理的实际应用中,更多地以各种组合的形式来使用膨胀和腐蚀,它们可以级连结合使用。膨胀后再腐蚀,或者腐蚀后再膨胀,通常不能恢复成原来图像(目标),而是产生一种新的形态变换,这就是开运算和闭运算。A被B的形态学开运算可以记做AoB,这种运算是A被B腐蚀后再用B来膨胀腐蚀结果:()ABABB$A被B的形态学闭运算记做A·B,它是先膨胀再腐蚀的结果:()ABABB$当处理二值图像时,采用上述的形态学变换组合,主要应用于提取某一区域的边界线、图像边缘轮廓、物体骨架特征和目标识别等众多的实际应用。2.2灰度图像的数学形态学二值形态学基本运算可以扩展到灰度图像。并由此建立一些基本的灰度形态学运算法则。与二值数学形态学不同的是,灰度形态学运算中的操作对象不再看成是集合而看作是灰度数字图像。设f(x,y)是输入图像,b(x,y)是结构元素(它本身也是一个子图像)。下面简单介绍基本的灰度形态学运算。膨胀和腐蚀对于灰度图像而言,膨胀和腐蚀是以像素邻域的最大值和最小值来定义的。使用结构元素b对f的灰度膨胀记为fb。通常灰度膨胀使用平坦的结构元素来执行,因此灰度膨胀公式可简化为()(,)max(,)(,)(),();(,)fbfbstfsxtybxysxtyDxyD因此,平坦的灰度膨胀是一个局部最大值算子,其中的最大值取自由Db的形状所确定的一系列像素邻域。其中Db是b的定义域。与膨胀一样,灰度腐蚀通常使用平坦的结构元素来执行,则灰度腐蚀公式可简化为()(,)min(,)(,)(),();(,)fbfbstfsxtybxysxtyDxyD$因此,平坦的灰度腐蚀是一个局部最小值算子,其中的最小值取自由Db的形状确定的一系列像素邻域。腐蚀和膨胀可以组合使用,以获得各种效果。例如,从膨胀后的图像中减去腐蚀过的图像可以产生一个“形态学梯度”,它是检测图像中局部灰度级变化的一种度量。开运算和闭运算灰度图像中开运算和闭运算的表达式与二值图像的相应表达式的形式相同。分别记为fob和f·b。由于开运算可以去除比结构元素更小的明亮细节,闭运算可以去除比结构元素更小的暗色细节,所以它们经常组合在一起用来平滑图像并去除噪声。2.3MATLAB函数用于图像形态学变换的MATLAB函数有:构造结构元素函数StrelSE=strel(shape,parameters)创建由指定形状shape对应的结构元素。其中shape的种类一般有'arbitrary'、'pair'、'diamond'、'disk'、'rectangle'、'line'、'square',参数parameters一般控制SE的大小。膨胀函数ImdilateIM2=imdilate(IM,SE)膨胀灰度图像或二值图像,返回膨胀图像M2。变量SE是一个结构元素或者一个结构元素的数组,其是通过strel函数返回的。腐蚀函数ImerodeIM2=imerode(IM,SE)腐蚀灰度图像或二值图像IM,返回腐蚀图像IM2。参数SE是函数strel返回的一个结构元素体或是结构元素体阵列。开运算函数ImopenIM2=imopen(IM,SE)用结构元素SE实现灰度图像或二值图像的IM的形态开运算。SE可以是单个结构元素对象或者结构元素对象数组。开运算一般能平滑图像的轮廓,消弱狭窄的部分,去掉细的突出闭运算函数imcloseIM2=imclose(IM,SE)用结构元素SE实现灰度图像或二值图像的IM的形态闭运算。SE可以是单个结构元素对象或者结构元素对象数组。闭运算也能平滑图像的轮廓,但与开运算相反,它一般融合窄的缺口和细长的弯口,去掉小洞,填补轮廓上的缝隙。实验仪器Pc一台,MATLAB7.0实验步骤(1)读取汽车牌照图像,并显示。(2)分别用Roberts、Sobel和拉普拉斯高斯算子对图像进行边缘检测。比较三种算子处理的结果。(3)用不同方向(‘水平’、‘垂直’、‘水平和垂直’)的Sobel算子对图像进行边缘检测。比较三种情况的结果。(4)将使用Roberts算子进行边缘检测后的汽车牌照图像按照不同大小的矩形结构元素进行腐蚀、膨胀、开、闭运算。比较不同的结果。实验内容实验数据clc;closeallclearallI=imread('room.tif');subplot(2,2,1),imshow(I);title('原图')BW1=edge(I,'roberts');subplot(2,2,2),imshow(BW1),title('用Roberts算子')BW2=edge(I,'sobel');subplot(2,2,3),imshow(BW2),title('用sobel算子')BW3=edge(I,'sobel');subplot(2,2,4),imshow(BW3),title('用拉普拉斯算子')clc;closeallclearallI=imread('room.tif');subplot(2,2,1)imshow(I);title('原图')BW2=edge(I,'sobel',[],'horizontal');subplot(2,2,2)imshow(BW2),title('用sobel算子为水平方向')BW3=edge(I,'sobel',[],'vertical');subplot(2,2,3)imshow(BW3),title('用sobel算子为垂直方向')BW4=edge(I,'sobel',[],'both');subplot(2,2,4)imshow(BW4),title('用sobel算子为水平和垂直方向')clc;closeallclearallI=imread('room.tif');subplot(2,2,1),imshow(I);title('原图')BW2=edge(I,'sobel');SE=strel('ball',3,3);IM2=imdilate(I,SE);subplot(2,2,2),imshow(IM2),title('膨胀函数Imdilate');clc;closeallclearallI=imread('room.tif');subplot(2,2,1),imshow(I)
本文标题:数字图像处理实验三
链接地址:https://www.777doc.com/doc-2335580 .html