matlab数字图像处理 膨胀和腐蚀
基于Matlab的腐蚀和膨胀的边缘检测 一、实验目的: 掌握运用Matlab软件对灰度与二值图像的膨胀与腐蚀的处理方法。 二、实验环境(软件条件): Windws2000/XP MATLAB 7.x 三、实验内容: 1、图像膨胀的Matlab实现 ① 实验原理: 膨胀:给图像中的对象边界添加像素。 在操作中,输出图像中所有给定像素的状态都是通过对输入图像的相应像素及邻域使用一定的规则进行确定。在膨胀操作时,输出像素值是输入图像相应像素邻域内所有像素的最大值。在二进制图像中,如果任何像素值为1,那么对应的输出像素值为1。 可以使用imdilate函数进行图像膨胀,imdilate函数需要两个基本输入参数,即待处理的输入图像和结构元素对象。结构元素对象可以是strel函数返回的对象,也可以是一个自己定义的表示结构元素邻域的二进制矩阵。此外,imdilate还可以接受两个可选参数:PADOPT(padopt) ——影响输出图片的大小、PACKOPT(packopt).——说明输入图像是否为打包的二值图像(二进制图像)。 ② 实验步骤: A、首先创建一个包含矩形对象的二值图像矩阵。 R=zeros(9,10); R(4:6,4:7) =1 R = 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 的正方形结构元素对象对创建的图像进行膨胀。33×、使用一个B. C=strel( square ,3) C = Flat STREL object containing 9 neighbors. Neighborhood: 1 1 1 1 1 1 1 1 1 C、将图像R和结构元素C传递给imdilate函数。 R1=imdilate(R,C) R1 = 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 D、显示结果: imshow(R, notruesize ) imshow(R1, notruesize ) ③ 实验结果: 膨胀前后效果图: 实现2、图像腐蚀的Matlab 实验原理:① 腐蚀:删除对象边界某些像素。. 在操作中,输出图像中所有给定像素的状态都是通过对输入图像的相应像素及邻域使用一定的规则进行确定。在腐蚀操作中,输出像素值是输入图像相应像素邻域内所有像素的最小值。在二进制图像中,如果任何一个像素值为0,那么对应的输出像素值为0。 可以使用imerode函数进行图像腐蚀。imerode函数需要两个基本输入参数:待处理的输入图像以及结构元素对象。此外,imerode函数还可以接受3个可选参数:PADOPT(padopt) ——影响输出图片的大小、PACKOPT(packopt).——说明输入图像是否为打包的二值图像(二进制图像)。M——指定原始图像的行数。 ② 实验内容及步骤: A、读取图像cameraman.tif (该图像是Matlab当前目录下自带的图片) R=imread( cameraman.tif ); B、创建一个任意形状的结构元素对象 C=strel( arbitrary ,eye(5)); C、以图像R和结构元素C为参数调用imerode函数进行腐蚀操作。 R1=imerode(R,C); D、显示操作结果 imshow(R); figure,imshow(C); ③ 实验结果: 图像cameraman.tif 腐蚀前后的效果对比: 、膨胀和腐蚀联合操作3 实验内容及步骤:① A、创建结构元素:clear;close all C= strel( rectangle ,[40 30]); %结构元素必须具有适当的大小,既可以删电流线又可以删除矩形. : 、使用结构元素腐蚀图像B. %将会删除所有直线,但也会缩减矩形 R=imread( circbw.tif ); R1=imerode(R,C); imshow(R1); figure,imshow(R); C、恢复矩形为原有大小,使用相同的结构元素对腐蚀过的图像进行膨胀. R2=imdilate(R1,C); figure,imshow(R2); ② 实验结果: 最终效果如下图: