MATLAB函数处理图像实现膨胀腐蚀

更新时间:2023-10-14 19:08:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

MATLAB函数处理图像实现膨胀腐蚀

一、实验目的

1、了解二值形态学的基本运算 2、掌握二值图像膨胀、腐蚀的基本方法 3、编程实现膨胀、腐蚀

二、实验要求

1、使用imdilate函数进行图像膨胀,并观察膨胀后图像的变化。 2、使用imerode函数进行图像腐蚀,观察腐蚀后的图像变化情况。

三、实验原理

膨胀:将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。利用它可以填补物体中的空洞。B对X膨胀所产生的二值图像D是满足以下条件的点(x,y)的集合:如果B的原点平移到点(x,y),那么它与X的交集非空。 数学表达式:C?A?B

腐蚀:一种消除边界点,使边界向内部收缩的过程。利用它可以消除小而且无意义的物体。B对X腐蚀所产生的二值图像E是满足以下条件的点(x,y)的集合:如果B的原点平移到点(x,y),那么B将完全包含于X中。数学表达式:

C?A?B

膨胀处理:一种消除边界点,使边界点向内部收缩的过程。

腐蚀处理:将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。

四、实验步骤

1.图像膨胀的Matlab实现:

可以使用imdilate函数进行图像膨胀,imdilate函数需要两个基本输入参数,即待处理的输入图像和结构元素对象。结构元素对象可以是strel函数返回的对象,也可以是一个自己定义的表示结构元素邻域的二进制矩阵。此外,

imdilate还可以接受两个可选参数:PADOPT(padopt) ——影响输出图片的大小、PACKOPT(packopt).——说明输入图像是否为打包的二值图像(二进制图像)。 步骤1,首先创建一个包含矩形对象的二值图像矩阵。 >> BW=zeros(9,10); >> BW(4:6,4:7) =1 BW =

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

步骤2,使用一个3×3的正方形结构元素对象对创建的图像进行膨胀。 >> SE=strel('square',3) SE =

Flat STREL object containing 9 neighbors. Neighborhood: 1 1 1 1 1 1 1 1 1

步骤3,将图像BW和结构元素SE传递给imdilate函数。 >> BW2=imdilate(BW,SE) BW2 =

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0

0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 步骤4,显示结果。 >> imshow(BW,'notruesize') >> imshow(BW2,'notruesize') 2.图像腐蚀的Matlab实现:

可以使用imerode函数进行图像腐蚀。imerode函数需要两个基本输入参数:待处理的输入图像以及结构元素对象。此外,imerode函数还可以接受3个可选参数:PADOPT(padopt) ——影响输出图片的大小、PACKOPT(packopt).——说明输入图像是否为打包的二值图像(二进制图像)。M——指定原始图像的行数。 以下程序示例说明了如何对某一副具体图像进行腐蚀操作,腐蚀前后的效果对比如图末。

步骤1,读取图像cameraman.tif (该图像是Matlab当前目录下自带的图片) >> BW1=imread('cameraman.tif');

步骤2,创建一个任意形状的结构元素对象 >> SE=strel('arbitrary',eye(5));

步骤3,以图像BW1和结构元素SE为参数调用imerode函数进行腐蚀操作。 >> BW2=imerode(BW1,SE); 步骤4,显示操作结果 >> imshow(BW1) >> figure,imshow(BW2)

五、实验代码及结果

代码:

imerode函数,该函数能够实现二值图像的腐蚀操作; imdilate函数,该函数能够实现二值图像的膨胀操作; bw=imread(‘d:\\image1’) bw=rgb2gray(bw) se1=strel(‘disk’,11);

se2=strel(‘line’,11,90); bw2= imdilate(bw,se2); bw1=imerode(bw,se1); imshow(bw),title(‘原图’)

figure,imshow(bw2), title(‘膨胀后的图像’) figure,imshow(bw1), title(‘腐蚀后的图像’)

结果:

原 图 膨胀后的图像

腐蚀后的图像

六、实验心得体会

通过本次的实验,我了解了二值形态学的基本运算,掌握了二值图像膨胀、腐蚀的基本方法,并且会运用编程实现膨胀、腐蚀,本次的实验目的已经完成,意识到在以后的生活中要了解做事情的目的,注重每一个与细节,认真思考遇到的所有问题,提高自己各方面的能力。感谢尹强老师教会我们理论与实践知识,也让我明白了什么是学习,怎么样学习,为以后的生活奠定的基础与指引了方向。

本文来源:https://www.bwwdw.com/article/0mjf.html

Top