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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

一、实验目的

1、了解二值形态学的基本运算

2、掌握二值图像膨胀、腐蚀的基本方法

3、编程实现膨胀、腐蚀

二、实验要求

1、使用imdilate 函数进行图像膨胀,并观察膨胀后图像的变化。

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

三、实验原理

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

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

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

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

四、实验步骤

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(‘腐蚀后的图像’)

结果:

原图膨胀后的图像

腐蚀后的图像

六、实验心得体会

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

相关文档
最新文档