电子专业——数字图像处理实验_第1页
电子专业——数字图像处理实验_第2页
电子专业——数字图像处理实验_第3页
电子专业——数字图像处理实验_第4页
电子专业——数字图像处理实验_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、数字图像处理实验讲义(Digital Image Processing) 实验一 图像的显示与格式变换一、实验目的了解Matlab软件/语言,学会使用Matlab的图像处理工具箱(Image Processing Toolbox),使学生初步具备使用本软件处理图像信息的能力,并能够利用Matlab完成本课程规定的其他实验和作业。熟悉常用的图像文件格式与格式转换,熟悉图像矩阵的显示方法(灰度、索引、黑白、彩色),熟悉图像矩阵的格式转换。二、实验要求学生应当基本掌握Matlab的操作,掌握Matlab图像处理工具箱中最常用的函数的用法。练习图像读写命令imread和imwrite并进行图像文件格式

2、间的转换。三、实验设备与软件(1)硬件:学生每人一台PC机。(2)软件:Matlab软件,包括图像处理工具箱;实验所需的图片。四、实验内容与步骤(1)学会Matlab的基本操作;(2)使用read函数读入图像rice.png,pout.tif;(3)使用figure函数创建窗口;(4)使用image/imshow函数显示图像;(5)使用colorbar函数在图像的右侧显示图像的亮度条。五、思考题(1)简述Matlab的特点。(2)Matlab可以支持哪些图像文件格式?(3)说明函数imread的用途格式以及各种格式所得到图像的性质。(4)用I=imread(rice.png)命令得到的图像能否

3、进行算术运算?六、实验报告要求描述实验的基本步骤,用数据和图片给出各个步骤中取得的实验结果,并进行必要的讨论,须包括原始图像及其计算/处理后的图像。七、实验图像 rice.png pout.tif实验一 步骤与讲解1. matlab 7.0自带测试图片目录D:MATLAB7toolboximagesimdemos (也可能安装在C盘)2. 测试图片格式各有不同,rice.png , pout.tif, cameraman.tif,等。可以找到这些图片右击鼠标查看属性,即可知道个图片的格式。3. image函数是MATLAB提供的最原始的图像显示函数,如:a=1,2,3,4;4,5,6,7;8,

4、9,10,11,12;image(a);4. 读入图片、显示图片的matlab命令 f=imread(rice.png); %读入图片size(f) %得出图片的行数和列数imshow(f) %显示图片注意,命令行后面有无分号“;” ,无分号的Matlab 会立即显示该行中指的运算的结果,有分号则不运算。分号不能是中文状态下的” ;”,必须在英文状态下输入 “;”在Matlab的工作目录或者搜索路径下的图片可以直接打开,不用填写文件目录。否则f=imread(D:MATLAB7toolboximagesimdemosrice.png).5. 使用figure函数创建窗口;f=imread(ri

5、ce.png);g=imread(rice.png); imshow(f),figure,imshow(g) % 当用imshow显示另一幅图像时会使用新图像替换旧图像,而使用figure函数则可以保持第一副图像同时显示第二幅图像。注意只要用逗号或者分号正确的分隔开了不同的命令,一行中就可以写几条命令。任何时候都可以使用分号来取消一个命令行的输出。6. 使用colorbar函数在图像的右侧显示图像的亮度条。f=imread(rice.png);imshow(f)colorbar % 此时图片右侧显示亮度条。实验二 图像的运算一、实验目的学会使用Matlab对图像作几何运算,使学生掌握图像点运算

6、和代数运算的实现方法、体会图像运算效果。了解几种图像几何运算的简单应用,培养处理实际图像的能力,并为课堂教学提供配套的实践机会。二、实验要求了解Matlab工具箱中关于图像运算的函数;学生应当完成对于给定图像进行点运算、代数运算及几何运算等,并能够正确地评价处理的结果,能够从理论上做出合理的解释。三、实验设备与软件(1)硬件:学生每人一台PC机。(2)软件:Matlab软件,包括图像处理工具箱;实验所需的图片。四、实验内容与步骤(一)实验内容(1)选择一幅图像,通过图像点运算改变对比度。(2)选择一幅图像,做加、减、乘、除代数运算,(3)选择一幅图像,改变图像大小,分别将原图像放大1.5倍和缩

7、小0.5倍。(4)选择一幅图像,分别进行顺时针和逆时针旋转任意角度,观察显示效果。(5)通过交互式操作,从一幅图像中剪切一个矩形区域。(6) 图像镜像变换,教材43页例题3.2(7) 图像旋转变换,教材46页例题3.3 (二)实验步骤(1)图像点运算读入图像“rice.png”,通过图像点运算改变对比度。rice=imread(rice.png);subplot(131),imshow(rice); I=double(rice); % double把任何类型数据转换成双精度数值,32位 J=I*0.43+60; rice2=uint8(J); subplot(1 3 2),imshow(ric

8、e2); J=I*1.5-60; rice3=uint8(J); subplot(1 3 3),imshow(rice3);(2)图像的代数运算a 加法运算图像相加一般用于对同一场景的多幅图像求平均效果,以便有效地降低具有叠加性质的随机噪声。直接采集的图像品质一般都较好,不需要进行加法运算处理,但是对于那些经过长距离模拟通信方式传送的图像(如卫星图像),这种处理是必不可少的。在MATLAB7.0中,如果要进行两幅图像的加法,或者给一幅图像加上一个常数,可以调用imadd函数来实现。imadd函数将某一幅输入图像的每一个像素值与另一幅图像相应的像素值相加,返回相应的像素值之和作为输入图像。ima

9、dd函数的调用格式可参考图像处理的工具箱。下面的程序可将图1两幅图像叠加在一起,叠加效果如图2所示。imshow(rice.png); imshow(cameraman.tif); I=imread(rice.png); J=imread(cameraman.tif); K=imadd(I,J,uint16); imshow(K,) 图1 图2给图像的每一个像素加上一个常数可以使图像的亮度增加。例如以下程序示例的处理效果如图3所示。I=imread(rice.png);J=imadd(I,50);subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J)

10、; 图3b 减法运算图像减法也称为差分方法,是一种常用于检测图像变化及运动物体的图像处理方法。图像减法可以作为许多图像处理过程的准备步骤。例如,可以使用图像减法来检测一系列相同场景图像的差异。图像减法与阈值化处理的综合使用通常是建立机器视觉系统最有效的方法之一。当然,在利用图像减法处理图像时,往往需要考虑背景的更新机制,尽量补偿因天气、光线等因素对图像显示效果造成的影响。在MATLAB7.0中,使用imsubtract函数可以将一幅图像从另一幅图像中减去,或者从一幅图像中减去一个常数。imsubtract函数将一幅输入图像的像素值从另一幅输入图像相应的像素值中减去,再将相应的像素值之差作为输出

11、图像相应的像素值。以下的程序代码示例首先根据原始图像生成其背景亮度图像,然后再从原始图像中将背景亮度图像减去,从而生成如图4所示的图像。I=imread(rice.png);blocks=blkproc(I,32 32,min(x(:);background=imresize(blocks,256 256,bilinear); %双线性(bilinear)插值Ip=imsubtract(I,background);imshow(Ip,) 图41. x是一个二维矩阵, x(:)表示将矩阵中的数据以一列输出 例如x=1 2 3;4 5 6;x(:)ans = 1 4 2 5 3 62. blkpr

12、oc()对图像进行分块处理函数pic=imread(lena.bmp);img=blkproc(pic,8,8,dct2);该例中把lena.bmp图片分成8*8像素块进行dct2变换。3. imresize() 函数用于对图像做缩放处理B = imresize(A, numrows numcols)numrows和numcols分别指定目标图像的高度和宽度。 显而易见, 由于这种格式允许图像缩放后长宽比例和源图像长宽比例不相同,因此所产生的图像有可能发生畸变。B = imresize(A, m) 返回的图像B的长宽是图像A的长宽的m倍,即缩放图像。 m大于1, 则放大图像; m小于1, 缩小

13、图像。c 乘法运算两幅图像进行乘法运算可以实现掩模操作,即屏蔽掉图像的某些部分。一幅图像乘以一个常数通常被称为缩放,这是一种常见的图像处理操作。如果使用的缩放因数大于1,那么将增强图像的亮度,如果因数小于1则会使图像变暗。缩放操作通常将产生比简单添加像素便宜量自然得多的明暗效果。这是因为该操作能够更好的维持图像的相关对比度。此外,由于时域的卷积或相关运算与频域的乘积运算对应,因此乘法运算有时也作为一种技巧来实现卷积或相关处理。在MATLAB7.0中,可以使用immultiply函数实现两幅图像的乘法。immultiply函数将两幅图像相应的像素值进行元素对元素的乘法操作,并将乘法的运算结果作为

14、输出图像相应的像素值。例如,以下程序示例将使用给定的缩放因数对图5所示的图像进行缩放,从而得到如图6所示的较为明亮的图像。I=imread(moon.tif);I16=uint16(I);J=immultiply(I16,I16);imshow(I),figure,imshow(J) 图5 缩放前 图6 缩放后d 除法运算除法运算可用于校正成像设备的非线性影响,这在特殊形态的图像(如断层扫描等医学图像)处理中经常用到。图像除法也可以用来检测两幅图像间的区别,但是除法操作给出的是相应像素值的变化比率,而不是每个像素的绝对差异,因而图像除法操作也称为比率变换。在MATLAB7.0中,可以使用imd

15、ivide函数进行两幅图像的除法。imdivide函数对两幅输入图像的所有相应像素执行元素对元素的除法操作(点除),并将得到的结果作为输出图像的相应像素值。以下程序代码示例将图7的两幅图进行除法操作,得到如图8所示的效果图。I=imread(rice.png);subplot(1,2,1),imshow(I);blocks=blkproc(I,32 32,min(x(:);background=imresize(blocks,256 256,bilinear);Ip=imdivide(I,background);subplot(1,2,2),imshow(Ip,) a 图像一 b 图像二 图7

16、 两幅待相除的图像 图8 相除后的图像(3)图像的插值运算MATLAB7.0中的imresize函数和imrotate函数用于二维图像的差值运算,MATLAB7.0的图像处理工具箱提供了3种插补方法:近邻(nearest neighbor)插值双线性(bilinear)插值双立方(bicubic)插值这三种插补方法的运算方式基本类似。对于每种插补方法,为了确定插值像素点的数据值,用户必须在输入图像中查找到与输出像素相应的点。但是上述三种插值方法的主要区别在于其对像素点赋值内容的不同:对于近邻插值来说,输出像素的赋值为当前点的像素点。对于双线性插值来说,输出像素的赋值为2*2矩阵所包含的有效点的

17、加权平均值。对于双立方插值来说,输出像素的赋值为4*4矩阵所包含的有效点的加权平均值。(4)调整图像的大小改变图像的大小可用imresize函数来调整。imresize函数主要特点有:可以指定输出图像的大小。可以指定插值方法。可以指定滤波器来阻止混淆。a 指定输出图像的大小指定输出图像大小的方法有两种:一是指定放大因子,二是指定输出图像的维数。以下程序代码示例用指定放大因子的方法说明imresize函数的使用用法,并将原图像放大了1.5倍,其效果如图9所示。 a 改变前 b 改变后 图9 图像大小改变前、后的效果对比b 指定插值方法在默认的情况下,imresize函数可用最近邻插值法来指定输出

18、图像的像素值。当然,也可以指定其他的插值方法,以下命令行用imresize函数指定了双线性插值方法。Y=imresize(X,100 150,bilinear)(5)图像旋转变换, 完成教材46页例题3.3程序可通过imrotate函数来旋转图像。imrotate函数主要包括两个参数:需要旋转的图像和旋转的角度。如果指定一个正的旋转角度,那么imrotate函数将使用指定的插值方法和旋转角度将图像逆时针旋转;如果指定一个负值,那么将按顺时针方向旋转。如果命令中没有指定插补方法,则函数采用默认的最近邻插补方法。例如以下的程序代码示例将ic.tif图像旋转35,其旋转效果如图10所示。I=imre

19、ad(circuit.tif);J=imrotate(I,35,bilinear);imshow(I);figgure,imshow(J); a 旋转前 b 旋转后 图10 图像旋转前、后的显示效果比较(6) 图像镜像变换,完成教材43页例题3.2程序 五、思考题(1)简述图像进行代数运算和几何运算特点。(2)结合实验内容,定性评价图像经过几何运算后的效果以及代数运算和几何运算的适用场合。六、实验报告要求描述实验的基本步骤,用数据和图片给出各个步骤中取得的实验结果,并进行必要的讨论,须包括原始图像及其计算/处理后的图像。实验三 图像的增强一、实验目的学习常见的图像增强的方法,并实际体会图像增强

20、前后画质的变化;了解几种不同增强方式用于不同图像处理所取得的效果,培养处理实际图像的能力,并为课堂教学提供配套的实践机会。二、实验要求利用Matlab工具箱中关于图像增强的函数,计算本指导书中指定图像的直方图,并对其进行灰度增强处理,自己编写程序实现Matlab工具箱中函数以外的图像增强算法,对于本指导书中指定的图像进行处理。三、实验设备与软件(1)硬件:学生每人一台PC机。(2)软件:Matlab软件,包括图像处理工具箱;实验所需的图片。四、实验内容与步骤(一)实验内容(1)选择一幅对比度不足的图像,进行灰度变换,增强对比度,显示增强前后的图像及其直方图;(2)选择一幅直方图不均匀的图像,进

21、行直方图均衡化,显示处理前后的图像及其直方图;(3)选择一副直方图不均匀的图像,进行直方图规定化,显示处理前后的图像及其直方图。 (二)实验步骤(1)图像的对比度调整MATLAB7.0图像处理工具箱中的imadjust函数可以实现对图像的对比度进行调整。imadjust函数调用模式为J=imadjust(I,low_in high_in,low_out high_out,gamma)其中low_in high_in指定输入图像需要调整的灰度范围,low_out high_out指定输出图像的灰度范围。gamma描述I和J关系曲线的形状,默认时,gamma=1,表示线性变换。说明:使用imadj

22、ust函数时,按照以下两个步骤1、 绘制直方图,观察灰度范围;2、 将灰度范围转换为0.0-1.0之间的分数。例:I=imread(pout.tif);subplot(2,2,1); imshow(I);subplot(2,2,2); imhist(I); % imhist该函数用于获取图像数据直方图J=imadjust(I,0.3 0.7,0 1); subplot(2,2,3); imshow(J);subplot(2,2,4); imhist(J);注意区分大小写注释:subplot(m,n,p)或者subplot(m n p)。subplot是将多个图画到一个平面上的工具。其中,m表示

23、是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一列的,一共m行,如果m=2就是表示2行图。p表示图所在的位置,p=1表示从左到右从上到下的第一个位置。 简单的例子把绘图窗口分成两行两列四块区域,然后在每个区域分别作图,基本步骤:subplot(2 2 1); % 2、2、1之间没有空格也可以在第一块绘图subplot(2 2 2)在第二块绘图subplot(2 2 3)在第三块绘图subplot(2 2 4)在第四块绘图(2)直方图均衡化MATLAB7.0图像处理工具箱中,可以使用histeq函数实现直方图均衡化。函数的调用方法为:J,T=histeq(I,N)该函数对

24、图像I进行变换,返回有N个灰度级的图像J,J中的每一个灰度级具有大致相等的像素点,所以图像J的直方图比较平坦,N的默认值为64, T是转移函数。例:I=imread(pout.tif);imshow(I);figure,imhist(I);J,T=histeq(I,64);figure,imshow(J);figure,imhist(J);上述命令后将得到4个Figure窗口,可以采用subplot( ) 命令将一个窗口分块I=imread(pout.tif);subplot(2,2,1),imshow(I); %两个命令之间用逗号或分号隔开,也可以分两行写subplot(2,2,2),imh

25、ist(I);J,T=histeq(I,64);subplot(2,2,3),imshow(J);subplot(2,2,4),imhist(J);原始图与其直方图:均衡化后的结果(3)直方图规定化MATLAB7.0图像处理工具箱中,可以使用histeq函数实现直方图规定化。函数的调用方法为: J=histeq(I,hgram)其中hgram用户指定的矢量,将原始图像I的直方图近似变换成hgram,hgram中的每一个元素都在0,1中。I=imread(tire.tif);hgram=0:255;J=histeq(I,hgram);imshow(I);figure,imshow(J);figu

26、re,imhist(I,64);figure,imhist(J,64);五、思考题(1)直方图的物理含义是什么?(2)结合实验内容,定性地评价直方图均衡化和规定化增强效果。六、实验报告要求描述实验的基本步骤,用数据和图片给出各个步骤中取得的实验结果,并进行必要的讨论,须包括原始图像及其计算/处理后的图像。实验四 图像的滤波(恢复)一、实验目的学会使用Matlab对图像作滤波处理,使学生掌握滤波算法、体会滤波效果。了解几种不同滤波方式的使用和使用的场合,培养处理实际图像的能力,并为课堂教学提供配套的实践机会。二、实验要求学生应当完成对于给定图像+噪声,使用平均滤波器、中值滤波器对不太强度的高斯噪

27、声和椒盐噪声进行滤波处理;能够正确地评价处理的结果,能够从理论上做出合理的解释。三、实验设备与软件(1)硬件:学生每人一台PC机。(2)软件:Matlab软件,包括图像处理工具箱;实验所需的图片。四、实验内容与步骤(一)实验内容(1)选择一幅图像,增强零均值噪声,采用平均滤波、中值滤波等方法对图像进行滤波,比较滤波效果。(2)选择一幅图像,叠加椒盐噪声,采用平均滤波、中值滤波等方法对图像进行滤波,比较滤波效果。(3) 巴特沃斯低通滤波器去除图像椒盐噪声,教材112页例题5.5(4)理想高通滤波器、巴特沃斯高通滤波器、指数型高通滤波器、梯形高通滤波器图像增强对比实验,教材114页例题5.6(5)

28、考虑滤波器模板大小对平均滤波器滤波效果的影响。(6)考虑滤波器模板大小对中值滤波器滤波效果的影响。(二)实验步骤MATLAB的图像处理工具箱提供imnoise函数,可以用该函数模拟给图像加不同类型的噪声。该函数的调用格式如下:J=imnoise(I,type,parameters);其中I为加噪声前的图像,J为加噪声后的图像,type为噪声类型。imnoise函数能够产生5种噪声。imnoise函数支持的噪声类型及参数说明类 型参 数说 明Gaussianm,v均值为m,方差为v的高斯噪声localvarv均值为0,方差为v的高斯噪声possion无泊松噪声salt&pepperd密度为d的椒

29、盐噪声specklev均值为0,方差为v的均匀分布的随机噪声 MATLAB7.0图像处理工具箱提供了多种去除图像噪声的方法,主要有: 线性滤波 中值滤波 自适应滤波(1)线性滤波对一些图像进行线性滤波可以去除图像中某些类型的噪声,如采用邻域平均法的均值滤波器就非常适用于去除通过扫描得到的图像中的颗粒噪声。下面程序代码示例是对一幅含噪图像进行去噪处理,其结果如图所示。I=imread(rice.png);I=imnoise(I,gaussian,0,0.02); %为图像添加均值是0方差是0.02的高斯噪声,imshow(I); %读入含噪图像, h=1 1 1;1 1 1;1 1 1;J=co

30、nv2(I,h); %含噪图像与矩阵h卷积I=uint16(J); % uint16( )函数表示转换成无符号16位整数figure,imshow(I, ) H=h/9;J=conv2(I,H);I=uint16(J);figure,imshow(I, )注释:1. g=imnoise(f,gaussian,m,var)将均值M,方差为var的高斯噪声加到图像f上,默认值为均值是0,方差是0.01的噪声。2. C = conv2(A,B)返回矩阵A和B的二维卷积C 3. imshow(I)就是直接按I的灰度级画出图;imshow(I, )是灰度级最小的将被画成黑色,而最大的灰度级将被画成白色,

31、其他的不变。如果是low,high,那么灰度级小于low的将被画成黑色,大于high的将被画成白色,其他的不变。 a 滤波前原图像 b 滤波后的图像(h)C 滤波后的图像(H) 对噪声图像线性滤波的结果(2)中值滤波中值滤波也是一种典型的低通滤波器,主要目的是保护图像边缘,同时也能去除噪声。与加权平均方式的平滑滤波不同,中值滤波是将邻域中的像素按灰度级排序,取其中间值为输出像素。中值滤波的效果依赖于两个要素:邻域的空间范围和中值计算中涉及的像素数(当空间范围较大时,一般只取若干稀疏分布的像素作中值计算)。中值滤波能够在抑制随机噪声的同时不使边缘模糊,因而受到欢迎。中值滤波的方法简单,易于实现,

32、而且能较好地保护边界,但有时会丢失图像中的细线和小块目标区域。邻域的大小决定在多少个数值中进行求中值操作,窗口的形状决定了在什么样的几何空间中取元素计算中值。对二维图像,窗口的形状可以是矩形、圆形等,它的中心一般位于被处理点上。窗口大小及形状有时对滤波效果影响较大。一维信号中值滤波具有如下重要性质:输入是阶跃信号或斜坡信号时,输出信号和输入信号相同。若输入是脉宽小于窗口一半的脉冲p,则该脉冲被滤除,否则输出和输入相同。输入是三角形信号时,输出时其顶部被削平。二维信号的中值滤波性质与之类似。在MATLAB7.0图像处理工具箱中,提供了medfilt2函数用于实现中值滤波。例如对加入椒盐噪声的图像

33、eight.tif作中值滤波,程序代码示例如下,处理结果如图所示。I=imread(eight.tif);J=imnoise(I,salt & pepper,0.02);K=medfilt2(J);subplot(1,2,1),imshow(J) subplot(1,2,2),imshow(I) 噪声图像中值滤波结果(3)自适应滤波MATLAB7.0图像处理工具箱中的wiener2函数可以实现对图像噪声的自适应滤除。wiener2函数根据图像的局部方差来调整滤波器的输出。以下程序代码示例说明了该函数的用法,对加入高斯噪声的图像eight.tif作维纳滤波,结果如图所示。I=imread(eig

34、ht.tif);J=imnoise(I,gaussian,0,0.008);K=wiener2(J,5 5);subplot(1,2,1),imshow(J);subplot(1,2,2),imshow(K); 噪声图像维纳滤波前、后效果注释:二维维纳滤波函数wiener2K=wiener2(J,5 5),其中J表示待滤波图像矩阵,5,5表示滤波器窗口大小(4) 巴特沃斯低通滤波器去除图像椒盐噪声,教材112页例题5.5(5)理想高通滤波器、巴特沃斯高通滤波器、指数型高通滤波器、梯形高通滤波器图像增强对比实验,教材114页例题5.6五、思考题(1)简述高斯噪声和椒盐噪声的特点。(2)结合实验内

35、容,定性评价平均滤波器/中值滤波器对高斯噪声和椒盐噪声的去噪效果。(3)结合实验内容,定性评价滤波窗口对去噪效果的影响。六、实验报告要求描述实验的基本步骤,用数据和图片给出各个步骤中取得的实验结果,并进行必要的讨论,须包括原始图像及其计算/处理后的图像。实验五 图像边缘检测一、实验目的学习常见的边缘检测基本方法,了解几种不同边缘检测方式用于不同图像处理所取得的效果,培养学生处理实际图像的能力,并为课堂教学提供配套的实践机会。二、实验要求了解Matlab工具箱中关于图像边缘检测的函数;用梯度算子检测图像中的边缘;用Sobel算子检测图像中的边缘;比较两种方法的处理结果。三、实验设备与软件(1)硬

36、件:学生每人一台PC机。(2)软件:Matlab软件,包括图像处理工具箱;实验所需的图片。四、实验内容与步骤(一)实验内容(1)调入并显示图像rice.png。(2)用Roberts算子检测图像中的边缘信息:(3)用Prewitt算子和Sobel算子检测图像中的边缘信息;(4)用拉普拉斯高斯算子检测图像中的边缘信息。(5)改变阈值,观察边缘状况。(6)将上述几种处理方法的结果作比较。(二)实验步骤在图像的识别中常需要突出边缘和轮廓信息,图像锐化就是增强图像的边缘或轮廓。 数字图像的边缘检测是图像分割、目标区域识别、区域形状提取等图像分析领域十分重要的基础,也是图像识别中提取图像特征的一个重要属

37、性。在进行图像理解和分析时,第一步往往就是边缘检测,目前已成为机器视觉研究领域最活跃的课题之一,在工程应用中占有十分重要的地位。物体的边缘是以图像的局部特征不连续的形式出现的,即是指图像局部亮度变化最显著的部分,例如灰度值的突变、颜色的突变、纹理结构的突变等,同时物体的边缘也是不同区域的边界处。图像具有方向和幅值两个特征,通常沿边缘的走向灰度变化平缓,垂直于边缘走向的像素灰度变化剧烈。根据灰度变化的特点,可分为阶跃型、房顶型和凸缘型。图像平滑处理是通过平均(类似积分)过程使得图像边缘模糊,而图像锐化处理则是通过微分而使图像边缘突出、清晰。常用的微分算子有Roberts算子、Prewitt算子、

38、Sobel算子等。(1)Roberts算子对于离散图像来说,边缘检测算子就是用图像的垂直和水平查分来逼近梯度算子:f=(f(x,y)-f(x-1,y),f(x,y)-f(x,y-1)因此当需要检测图像边缘时,最简单的方法就是对每个像素计算f ,然后求绝对值,最后进行阈值操作就可以实现。Roberts算子就是基于这种思想,该算子如下式所示:=它可以由以下两个2*2的模板共同实现: (2)Prewitt算子和Sobel算子在比较复杂的图像中,仅用2*2的Roberts算子得不到较好的边缘检测,而相对较复杂的3*3的Prewitt算子和Sobel算子检测效果较好。和Roberts算子类似,Prewi

39、tt算子也可以通过以下两个模板实现: 以上两矩阵分别代表图像的水平梯度和垂直梯度。如果用Prewitt算子检测图像M的边缘,一般先用水平算子和垂直算子对图像进行卷积,得到两个矩阵M1和M2,在不考虑边界因素的时候,它们与原图像有相同的大小,分别表示图像M中相同位置对于x和y的偏导数。然后求M1和M2对应位置的两个数的平方和,得到一个新的矩阵G。G是M中像素灰度梯度的近似值,然后经过阈值操作得到边缘。Sobel算子与Prewitt算子的区别仅在于选用的模板不同: 为了方便,下面对上述常用算子的模板进行总结,如下表所示:常用边缘检测算子模板算子名称H1H2特点Roberts边缘定位准对噪声敏感Pr

40、ewitt平均、微分对噪声有抑制作用Sobel加权平均边宽=2像素Isotropic Sobel权值反比于临点与中心点的距离检测沿不同方向边缘时梯度幅度一致MATLAB7.0图像处理工具箱中提供了专门的边缘检测函数,其调用格式如下:BW=edge(I,method)BW=edge(I,method,thresh)BW=edge(I,method,thresh,direction)BW,thresh=edge(I,method,)其中,I是输入图像,method是选用的方法(算子),可以选择的method有Sobel、Prewitt、Roberts、log、candy、zerocross等。可选

41、的参数有thresh(门限)、sigma(方差)、direction(方向)。下边的程序代码示例为分别采用3种不同的边缘检测算子对原始图像rice.png进行边缘提取,检测结果如下图所示。I=imread(rice.png);BW1=edge(I,roberts);figure;imshow(BW1);BW2=edge(I,sobe);figure;imshow(BW2);BW3=edge(I,prewitt);figure;imshow(BW3); 原始图像 Roberts Sobel Prewitt 不同的边缘检测算子进行边缘提取的效果(3)拉普拉斯高斯算子前面都是利用边缘处的梯度最大(正

42、的或负的)这一性质来进行边缘检测,即利用了灰度图像的拐点位置是边缘的性质。除了这一点,边缘还有另外一个性质,即在拐点位置处的二阶导数为0,由这一性质可以发现通过寻找二阶导数的零交叉点来寻找边缘,而Laplacian算子是最常用的二阶导数算子。需要注意的是,一阶导数对噪声敏感因而不稳定,由此,二阶导数对噪声就会更加敏感从而更加不稳定,所以在作Laplacian变换之前需要做平滑。同时又因为卷积是可交换、可结合的,所以先作高斯卷积,再用Laplacian算子作卷积等价于对原图像用高斯函数的Laplacian变换后的滤波作卷积。这样就得到一个新的滤波器LoG(Laplacian of Gaussia

43、n)滤波器。利用以下代码可以得到LoG算子的图像:clearx=-2:0.05:2;y=-2:0.05:2;sigma=0.5;y=y;for i=1:(4/0.05+1) xx(i,:)=x; yy(:,i)=y;endr=-1/(2*pi*sigma4)*(xx.2+yy.2)/(sigma2)-2).*exp(-(xx.2+yy.2)/(2*sigma2);colormap(jet(16);mesh(xx,yy,r);在实际应用中,使用LoG模板做卷积,然后寻找那些零交叉像素:如果一个像素值小于-(theta)0,而周围邻接的8个像素都大于(theta)0,则这个像素就是零交叉点。利用以

44、下程序代码,对原始图像进行LoG算子边缘提取,得到如下图所示的效果。BW=edge(I,log);figure;imshow(BW);LoG算子边缘提取结果比较以上几个算子,可以发现用LoG算子进行边缘检测的效果比较好。(4)Canny算子还有一个很重要的边缘检测算子,即Canny算子,它是最优的阶梯型边缘(step edge)检测算子。从以下的三个标准意义来说,Canny边缘检测算子对受到白噪声影响的阶跃型边缘是最优的。(1) 检测标准。不丢失重要的边缘,不应有虚假的边缘。(2) 定位标准。实际边缘与检测到的边缘位置之间的偏差最小。(3) 单响应标准。将多个响应降低为单个边缘响应。Canny

45、算子的实现步骤如下:(1) 首先用2D高斯滤波模板与原始图像进行卷积,以消除噪声。(2) 利用导数算子(如Prewitt算子、Sobel算子)找到图像灰度沿着两个方向的导数,并求出梯度的大小。(3) 利用上步的结果计算出梯度的方向。(4) 求出边缘的方向,就可以把边缘的梯度方向大致分为4种(水平、垂直、45度方向和135度方向),并可以找到这个像素梯度方向的邻接像素。(5) 遍历图像。若某个像素的灰度值与其梯度方向上前后两个像素的灰度值相比不是最大的,那么将这个像素值置为0,即不是边缘。(6) 使用累计直方图计算两个阈值。凡是大于高阈值的一定是边缘;凡是小于低阈值的一定不是边缘。如果检测结果在

46、两个阈值之间,则根据这个像素的邻接像素中有没有超过高阈值的边缘像素,如果有,则它是边缘,否则不是。以下程序代码是利用MATLAB中 edge函数,并采用Canny算子,对原始图像进行边缘检测,检测效果如下图所示。I=imread(rice.png);BW=edge(I,canny);imshow(BW); Canny算子边缘检测效果比较如上几个算子进行边缘检测的结果,可以看出Canny算子检测结果不仅能清晰地提取图像的边缘,而且边缘连续性比较好,这是Canny的优良之处。五、思考题(1)在一幅图像中存在多个方向的边缘,是否能用拉普拉斯算子只检测某个特定方向的边缘?(2)用Sobel算子可以检测

47、对角线边缘吗?(3)选取的阈值对最终检测得到的边缘有何影响?六、实验报告要求描述实验的基本步骤,用数据和图片给出各个步骤中取得的实验结果,并进行必要的讨论,须包括原始图像及其计算/处理后的图像。实验六 图像的区域分割一、实验目的学习常用的区域分割基本方法,了解几种不同区域分割方式用于不同图像处理所取得的效果,培养学生处理实际图像的能力,并为课堂教学提供配套的实践机会。二、实验要求了解Matlab工具箱中关于图像区域分割的函数;用阈值化方法分割图像;用分水岭算法分割图像;比较两种方法的处理结果。三、实验设备与软件(1)硬件:学生每人一台PC机。(2)软件:Matlab软件,包括图像处理工具箱;实

48、验所需的图片。四、实验内容与步骤(一)实验内容(1)调入并显示图像rice.png。(2)用迭代式阈值选择方法分割图像:(3)用Otsu法阈值选择法分割图像;(4)用分水岭算法分割图像。(5)将上述几种处理方法的结果作比较。(二)实验步骤在一幅图像中,人们常常只对其中的部分目标感兴趣,这些目标通常占据一定的区域,并且在某些特性(如灰度、轮廓、颜色和纹理等)上和临近的图像有差别。这些特性差别可能非常明显,也可能很细微,以至肉眼察觉不出来。随着计算机图像处理技术的发展,使得人们可以通过计算机来获取和处理图像信息。图像识别的基础是图像分割,其作用是把反映物体真实情况的、占据不同区域的、具有不同特性的

49、目标区分开来,并形成数字特征。图像分割是图像理解的基础,而在理论上图像分割又依赖图像理解,它们彼此是紧密关联的。图像分割在一般意义下是十分困难的问题,目前的图像分割一般作为图像的前期处理阶段,是针对分割对象的技术,最常用到的是利用阈值化处理进行的图像分割。所谓阈值的方法实质是利用图像的灰度直方图信息得到用于分割的阈值。基于阈值的分割方法可以分为全局阈值的方法好局部阈值的方法,全局阈值的方法是利用整幅图像的灰度信息,从整个图像中得到用于分割的阈值,并且根据该阈值对图像进行分割;而局部阈值的方法是根据图像中不同区域获得对应不同区域的几个阈值,利用这些得到的阈值对图像进行分割,也就是一个阈值对应图像

50、中的一个子区域。该方法的关键是如何合理地选择阈值,人工选择法是通过人眼的观察,应用人们对图像的知识,在分析图像直方图的基础上人工选出合适的阈值,也可以在人工选出阈值后,根据分割效果不断地交换操作,从而选择出较佳的阈值;自动阈值法通常使用灰度直方图来分析图像中灰度值的分布,结合特定的应用区域知识来选取合适的阈值。(1)迭代式阈值选择迭代式阈值选择方法的基本思想是:开始时候选择一个阈值作为初始计值,然后按某种策略不断地改进这一估计值,直到满意给定的准则为止。在迭代过程中,关键之处在于选择什么样的阈值改进策略。好的与之改进侧率应该具备两个特征:一是能够快速收敛;二是在每一个迭代过程中,新产生阈值优于

51、上一次的阈值。如下是具体操作步骤:a 选择图像灰度的中值作为初始阈值;b 利用此阈值把图像分割成两个区域和,用下式计算区域和的灰度均值和 c 计算出和后,计算新的阈值d 重复步骤2和3,直到和的差小于某个给定值。下面为实现迭代式阈值选择的MATLAB代码:f=imread(rice.png);subplot(121);imshow(f);title(原始图像)f=double(f);T=(min(f(:)+max(f(:)/2;done=false;i=0;while done r1=find(fT); Tnew=(mean(f(r1)+mean(f(r2)/2; done=abs(Tnew-

52、T)1; T=Tnew; i=i+1;endf(r1)=0;f(r2)=1;subplot(122);imshow(f);title(迭代阈值二值化图像) 用迭代式阈值选择法二值化图像(2)Otsu法阈值选择Otsu法是一种使类间方差最大的自动确定阈值的方法,该方法具有简单、处理速度快的特点,是一种常用的阈值选取方法。MATLAB工具箱提供的graythresh函数求取阈值采用的就是这种方法。其基本思想是:设图像像素数为N,灰度范围为0,L-1,对应灰度级i的像素数为,概率为 i=0,1,2,L-1 把图像中的像素按灰度值用阈值T分成两类和,由灰度值在0,T之间的像素组成,由灰度值在T+1,L-1之间的像素组成,对于灰度分布概率,整幅图像的均值为则和的均值为,其

温馨提示

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

评论

0/150

提交评论