MATLAB函数处理图像实现膨胀腐蚀_matlab图像的膨胀腐蚀
MATLAB函数处理图像实现膨胀腐蚀由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“matlab图像的膨胀腐蚀”。
MATLAB函数处理图像实现膨胀腐蚀
一、实验目的1、了解二值形态学的基本运算
2、掌握二值图像膨胀、腐蚀的基本方法
3、编程实现膨胀、腐蚀
二、实验要求
1、使用imdilate函数进行图像膨胀,并观察膨胀后图像的变化。
2、使用imerode函数进行图像腐蚀,观察腐蚀后的图像变化情况。
三、实验原理
膨胀:将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。利用它可以填补物体中的空洞。B对X膨胀所产生的二值图像D是满足以下条件的点(x,y)的集合:如果B的原点平移到点(x,y),那么它与X的交集非空。数学表达式:CAB
腐蚀:一种消除边界点,使边界向内部收缩的过程。利用它可以消除小而且无意义的物体。B对X腐蚀所产生的二值图像E是满足以下条件的点(x,y)的集合:如果B的原点平移到点(x,y),那么B将完全包含于X中。数学表达式:CAB
膨胀处理:一种消除边界点,使边界点向内部收缩的过程。
腐蚀处理:将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。
四、实验步骤
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(‘腐蚀后的图像’)
结果:
原
图
膨胀后的图像
腐蚀后的图像
六、实验心得体会
通过本次的实验,我了解了二值形态学的基本运算,掌握了二值图像膨胀、腐蚀的基本方法,并且会运用编程实现膨胀、腐蚀,本次的实验目的已经完成,意识到在以后的生活中要了解做事情的目的,注重每一个与细节,认真思考遇到的所有问题,提高自己各方面的能力。感谢尹强老师教会我们理论与实践知识,也让我明白了什么是学习,怎么样学习,为以后的生活奠定的基础与指引了方向。