matlab数字图像处理膨胀和腐蚀.doc
图像分析MATLAB实现的图像的基本操作5 实现图像的膨胀腐蚀闭运算 实现图像的边缘和骨架提取

生作业科目:数字图像分析与理解学号:姓名:时间:通过matlab对图像的一些基本操作如下:g5=imread('timg(5).jpg');R_data =g5(:,:,1);G_data =g5(:,:,2);B_data =g5(:,:,3);%imshow(RGB_data);[ROW,COL, DIM] = size(g5);Y_data = zeros(ROW,COL);Cb_data = zeros(ROW,COL);Cr_data = zeros(ROW,COL);Gray_data = g5;for r = 1:ROWfor c = 1:COLY_data(r, c) = 0.299*R_data(r, c) + 0.587*G_data(r, c) +0.114*B_data(r, c);Cb_data(r, c) = -0.172*R_data(r, c) - 0.339*G_data(r, c) +0.511*B_data(r, c) + 128;Cr_data(r, c) = 0.511*R_data(r, c) - 0.428*G_data(r, c) -0.083*B_data(r, c) + 128;endendGray_data(:,:,1)=Y_data;Gray_data(:,:,2)=Y_data;Gray_data(:,:,3)=Y_data;%Median Filterimgn = imnoise(Gray_data,'salt & pepper',0.02);Median_Img = Gray_data;for r = 2:ROW-1for c = 2:COL-1median3x3 =[imgn(r-1,c-1) imgn(r-1,c) imgn(r-1,c+1)imgn(r,c-1) imgn(r,c) imgn(r,c+1)imgn(r+1,c-1) imgn(r+1,c) imgn(r+1,c+1)];sort1 = sort(median3x3, 2, 'descend');sort2 = sort([sort1(1), sort1(4), sort1(7)], 'descend');sort3 = sort([sort1(2), sort1(5), sort1(8)], 'descend');sort4 = sort([sort1(3), sort1(6), sort1(9)], 'descend');mid_num = sort([sort2(3), sort3(2), sort4(1)], 'descend');Median_Img(r,c) = mid_num(2);endendMedian_Img = double(Median_Img);Sobel_Threshold = 150;Sobel_Img = zeros(ROW,COL);for r = 2:ROW-1for c = 2:COL-1Sobel_x = Median_Img(r-1,c+1) + 2*Median_Img(r,c+1) +Median_Img(r+1,c+1) - Median_Img(r-1,c-1) - 2*Median_Img(r,c-1) -Median_Img(r+1,c-1);Sobel_y = Median_Img(r-1,c-1) + 2*Median_Img(r-1,c) +Median_Img(r-1,c+1) - Median_Img(r+1,c-1) - 2*Median_Img(r+1,c) -Median_Img(r+1,c+1);Sobel_Num = abs(Sobel_x) + abs(Sobel_y);%Sobel_Num = sqrt(Sobel_x^2 + Sobel_y^2);if(Sobel_Num > Sobel_Threshold)Sobel_Img(r,c)=255;elseSobel_Img(r,c)=0;endendend%DilationDilation_img = zeros(ROW,COL);for r = 2:ROW-1for c = 2:COL-1or1 = bitor(Sobel_Img(r-1, c-1), bitor(Sobel_Img(r-1, c),Sobel_Img(r-1, c+1)));or2 = bitor(Sobel_Img(r, c-1), bitor(Sobel_Img(r, c), Sobel_Img(r, c+1)));or3 = bitor(Sobel_Img(r+1, c-1), bitor(Sobel_Img(r+1, c),Sobel_Img(r+1, c+1)));Dilation_img(r, c) = bitor(or1, bitor(or2, or3));endend%ErosionErosion_img = zeros(ROW,COL);for r = 2:ROW-1for c = 2:COL-1and1 = bitand(Dilation_img(r-1, c-1), bitand(Dilation_img(r-1, c), Dilation_img(r-1, c+1)));and2 = bitand(Dilation_img(r, c-1), bitand(Dilation_img(r, c), Dilation_img(r, c+1)));and3 = bitand(Dilation_img(r+1, c-1), bitand(Dilation_img(r+1, c), Dilation_img(r+1, c+1)));Erosion_img(r, c) = bitand(and1, bitand(and2, and3));endend%开闭运算g6=imread('timg(6).jpg');i1=rgb2gray(g6); %转灰度图像i2=im2bw(i1); %二值化搜索i3 = bwmorph(i2,'open'); %开运算i4 = bwmorph(i2,'close'); %闭运算%边缘提取i=imread('1.jpg');i=im2double(i);ihd=rgb2gray(i);[thr,sorh,keepapp]=ddencmp('den','wv',ihd);ixc=wdencmp('gbl',ihd,'sym4',2,thr,sorh,keepapp);k2=medfilt2(ixc,[7 7]);isuo=imresize(k2,0.25,'bicubic');%sobert、robert和prewitt算子检测图像边缘esobel=edge(isuo,'sobel');erob=edge(isuo,'roberts');eprew=edge(isuo,'prewitt');subplot(2,2,1);imshow(isuo);title('前期处理图像');subplot(2,2,2);imshow(esobel);title('sobel算子提取');subplot(2,2,3);imshow(erob);title('roberts算子提取');subplot(2,2,4);imshow(eprew);title('prewitt算子提取');%骨架提取I2=imread('2.jpg'); %读取当前路径下的图片subplot(2,2,1),imshow(I2);title('原始图像');axis([50,250,50,200]);axis on;I1=im2bw(I2);subplot(2,2,2),imshow(I1);title('二值图像');axis([50,250,50,200]);axis on;I2=bwmorph(I1,'skel',1);subplot(2,2,3),imshow(I2);title('1次骨架提取');axis([50,250,50,200]);axis on ;I3=bwmorph(I1,'skel',2);subplot(2,2,4),imshow(I3);title('2次骨架提取');axis([50,250,50,200]);axis on ;figure;subplot(221);imshow(Gray_data);title('原图'); subplot(222);imshow(imgn);title('含噪声图');subplot(223);imshow(Dilation_img);title('膨胀图'); subplot(224);imshow(Erosion_img);title('腐蚀图');figure;subplot(221);imshow(i1);title('原图');subplot(222);imshow(i2);title('二值图');subplot(223);imshow(i3);title('开运算图');subplot(224);imshow(i4);title('闭运算图');。
《图像处理》实验8:二值图像膨胀、腐蚀

二值图像膨胀、 二值图像膨胀、腐蚀实验步骤
BYTE* TempData=new BYTE[linebytes*infoheader->biHeight]; memset(TempData,0,linebytes*infoh eader->biHeight); //开辟临时空间,存放数据 开辟临时空间, 开辟临时空间
实验八 二值图像膨胀、 二值图像膨胀、腐蚀
矿大信电学院 蔡利梅
一、实验目的
掌握二值图像膨胀、 掌握二值图像膨胀、腐蚀的基本方法 编程实现膨胀、 编程实现膨胀、腐蚀
二、实验原理
膨胀 腐蚀
二值图像膨胀、 二值图像膨胀、腐蚀实验步骤
打开应用程序Clm 打开应用程序 修改程序菜单 添加“二值图像处理”下拉菜单, 添加“二值图像处理”下拉菜单,并添加下 一级子菜单“膨胀” 一级子菜单“膨胀”,ID:ID_DILATION, : , 添加子菜单“腐蚀” 添加子菜单“腐蚀”,ID:ID_EROSION : 创建菜单项“膨胀” 腐蚀” 创建菜单项“膨胀” 、“腐蚀”的消息响 应函数OnDilation() 、OnErosion()。(基 。(基 应函数 。( 于CClmDoc类) 类
二值图像膨胀、 二值图像膨胀、腐蚀实验步骤
switch(nbtype) { case 0: nbw=1; nbh=3; break; case 1: nbw=3; nbh=1; break; case 2: nbw=3; nbh=3; break; case 3: nbw=5; nbh=5; break; }
二值图像膨胀、 二值图像膨胀、腐蚀实验步骤
BYTE* TempData=new BYTE[linebytes*infoheader->biHeight]; memset(TempData,255,linebytes*infohe ader->biHeight); //开辟临时空间,存放数据 开辟临时空间, 开辟临时空间
matlab腐蚀运算

matlab腐蚀运算什么是腐蚀运算?腐蚀运算是图像处理中常用的一种形态学图像处理算法。
它用于去除图像中的噪点和细小的不连续区域,并可以缩小或改变图像中的物体形状。
腐蚀运算是一种局部的、基于形态学的图像处理操作,其基本思想是通过对图像进行逐像素的扫描来改变像素的值。
对于输入图像中的每个像素,通过与一个预先定义的结构元素进行比较,并将输出像素置为与邻域内像素的最小值。
这个结构元素可以是任意形状的二值图像。
腐蚀运算的目的是缩小或消除图像中明亮区域的边缘,并将它们腐蚀为更小的或更简单的形状。
腐蚀运算在图像的预处理过程中经常用于去除噪点和细小的不连续区域,以便更好地进行后续分析和处理。
如何进行腐蚀运算?在MATLAB中,可以使用imerode函数来实现腐蚀运算。
imerode函数的基本语法如下:outputImage = imerode(inputImage, structuringElement);其中,inputImage表示要进行腐蚀运算的输入图像,structuringElement 是一个预先定义的结构元素。
MATLAB提供了多种预先定义的结构元素形状,包括线形、圆形、方形等。
可以根据具体的应用需求选择合适的结构元素形状。
为了更好地理解腐蚀运算的原理,请考虑以下示例。
假设我们有一幅二值图像,其中包含了一些噪点,我们希望去除这些噪点,使得图像中的对象更加清晰明确。
首先,我们需要将输入图像转换为二值图像,可以使用im2bw函数来实现。
假设我们将输入图像存储在变量inputImage中,可以使用以下代码将其转换为二值图像:binaryImage = im2bw(inputImage);然后,我们定义一个结构元素,可以选择圆形结构元素,具体代码如下:structuringElement = strel('disk', radius);其中,radius是圆形结构元素的半径。
通过调整radius的值,可以控制腐蚀运算的程度。
腐蚀膨胀算法详细解释

形态学运算中腐蚀,膨胀,开运算和闭运算(针对二值图而言)6.1腐蚀腐蚀是一种消除边界点,使边界向内部收缩的过程。
可以用来消除小且无意义的物体。
腐蚀的算法:用3x3的结构元素,扫描图像的每一个像素用结构元素与其覆盖的二值图像做“与”操作如果都为1,结果图像的该像素为1。
否则为0。
结果:使二值图像减小一圈把结构元素B平移a后得到Ba,若Ba包含于X,我们记下这个a点,所有满足上述条件的a点组成的集合称做X被B腐蚀(Erosion)的结果。
用公式表示为:E(X)={alBa C X}=X©B,如图6.8所示。
图6.8腐蚀的示意图图6.8中X是被处理的对象,B是结构元素。
不难知道,对于任意一个在阴影部分的点a,Ba包含于X,所以X被B腐蚀的结果就是那个阴影部分。
阴影部分在X的范围之内,且比X小,就象X被剥掉了一层似的,这就是为什么叫腐蚀的原因。
值得注意的是,上面的B是对称的,即B的对称集Bv=B,所以X被B腐蚀的结果和X被Bv腐蚀的结果是一样的。
如果B不是对称的,让我们看看图6.9,就会发现X被B腐蚀的结果和X被Bv腐蚀的结果不同。
y图6.9结构元素非对称时,腐蚀的结果不同图6.8和图6.9都是示意图,让我们来看看实际上是怎样进行腐蚀运算的。
在图6.10中,左边是被处理的图象X (二值图象,我们针对的是黑点),中间是结构元素B ,那个标有origin 的点是中心点,即当前处理元素的位置,我们在介绍模板操作时也有过类似的概念。
腐蚀的方法是,拿B 的中心点和X 上的点一个一个地对比,如果B 上的所有点都在X 的范围内,则该点保留,否则将该点去掉;右边是腐蚀后的结果。
可以看出,它仍在原来X 的范围内,且比X 包含的点要少,就象X 被腐蚀掉了一层。
o Q Q Q o & QO Qo Q o O oooo o o o o o 0- 0 O 0 o o •• • ■ Oo o oo o o 0 o o o o o 0 0 o o o ••o o o oo o o o ■ ■ o o 0 0 o o o ••o 0 0 oo o o 0 ■ • ♦ o QQ Q ■0 0 & o Q Q Q 0 0 * * 0 0 0 O 0 0 • ♦ ♦■ 0 Q Q ◎ 00o o ■ •0 0 o O ■ ■ ■ ■ *« O Q Qo o■ ■ ■ ■ Q Q c- O■ * ■ o GO O O O o o •o o ■ •• ■ o o o o O oO ■ ■ ■o 0o O O o O ♦<Q 0■••■ o a o o O o O o o 0 0 o 0oO o oooo\>o0 00o o o o 0 0 0'originFEX e 6图6.10腐蚀运算 图6.11为原图,图6.12为腐蚀后的结果图,能够很明显地看出腐蚀的效果。
matlab腐蚀膨胀分割

matlab腐蚀膨胀分割英文回答:Erosion and dilation are two fundamental operations in image segmentation using MATLAB. These operations are used to remove noise and enhance the features of the image.Erosion is a morphological operation that shrinks the boundaries of objects in an image. It is achieved by convolving the image with a structuring element, which is usually a small binary matrix. The structuring element acts as a filter that scans the image and removes pixels that do not meet certain criteria. This process helps in removing small details and smoothing the image.For example, let's say we have an image of a handwritten digit with some noise. By applying erosion, we can remove the noise and make the digit appear clearer. The structuring element could be a small square matrix with all ones. The erosion operation will scan the image and removepixels that do not have all neighboring pixels as ones. This will effectively shrink the boundaries of the digit and remove any noisy pixels.Dilation, on the other hand, is a morphological operation that expands the boundaries of objects in an image. It is achieved by convolving the image with a structuring element that defines the shape and size of the dilation. Dilation is useful for filling in gaps andjoining broken parts of objects.For example, let's consider an image of a circle with a gap in it. By applying dilation with a circular structuring element, we can fill in the gap and make the circle complete. The dilation operation will scan the image and add pixels to the boundaries of objects that meet certain criteria defined by the structuring element.In MATLAB, erosion and dilation operations can be performed using the `imerode` and `imdilate` functions, respectively. These functions take the input image and the structuring element as arguments and return the eroded ordilated image.To illustrate this, let's say we have a binary image of a letter 'A' with some noise. We can use erosion to remove the noise and then use dilation to enhance the features of the letter. Here's the MATLAB code:matlab.% Read the image.image = imread('letter_A.png');% Define the structuring element.se = strel('square', 3);% Perform erosion.eroded_image = imerode(image, se);% Perform dilation.dilated_image = imdilate(eroded_image, se);% Display the results.subplot(1, 3, 1), imshow(image), title('OriginalImage');subplot(1, 3, 2), imshow(eroded_image), title('Eroded Image');subplot(1, 3, 3), imshow(dilated_image), title('Dilated Image');This code will display the original image, the eroded image, and the dilated image side by side for comparison. By visually inspecting the images, we can see the effects of erosion and dilation on the segmentation of the letter 'A'.中文回答:腐蚀和膨胀是使用MATLAB进行图像分割的两种基本操作。
matlab中有关膨胀与腐蚀的解释

腐蚀与膨胀的基本原理1。
图像形态学处理的概念数字图像处理中的形态学处理是指将数字形态学作为工具从图像中提取对于表达和描绘区域形状有用处的图像分量,比如边界、骨架以及凸壳,还包括用于预处理或后处理的形态学过滤、细化和修剪等。
图像形态学处理中我们感兴趣的主要是二值图像。
在二值图像中,所有黑色像素的集合是图像完整的形态学描述,二值图像的各个分量是Z2的元素.假定二值图像A和形态学处理的结构元素B是定义在笛卡儿网格上的集合,网格中值为1的点是集合的元素,当结构元素的原点移到点(x,y)时,记为Sxy,为简单起见,结构元素为3x3,且全都为1,在这种限制下,决定输出结果的是逻辑运算。
2。
膨胀和腐蚀膨胀和腐蚀这两种操作是形态学处理的基础,许多形态学算法都是以这两种运算为基础的。
①膨胀是以得到B的相对与它自身原点的映像并且由z对映像进行移位为基础的。
A被B膨胀是所有位移z的集合,这样,和A至少有一个元素是重叠的。
我们可以把上式改写为:结构元素B可以看作一个卷积模板,区别在于膨胀是以集合运算为基础的,卷积是以算术运算为基础的,但两者的处理过程是相似的.⑴用结构元素B,扫描图像A的每一个像素⑵用结构元素与其覆盖的二值图像做“与”操作⑶如果都为0,结果图像的该像素为0。
否则为1②腐蚀对Z中的集合A和B,B对A进行腐蚀的整个过程如下:⑴用结构元素B,扫描图像A的每一个像素⑵用结构元素与其覆盖的二值图像做“与”操作⑶如果都为1,结果图像的该像素为1。
否则为0腐蚀处理的结果是使原来的二值图像减小一圈。
3.击中(匹配)或击不中变换假设集合A是由3个子集X,Y和Z组成的集合,击中(匹配)的目的是要在A中找到X的位置,我们设X被包围在一个小窗口W中,与W有关的X的局部背景定义为集合的差(W-X),则X在A内能得到精确拟合位置集合是由X对A的腐蚀后由(W-X)对A的补集Ac腐蚀的交集,这个交集就是我们要找的位置,我们用集合B来表示由X和X的背景构成的集合,我们可以令B =(B1,B2),这里B1=X,B2=(W-X),则在A中对B进行匹配可以表示为:A⊙B我们称为形态学上的击中或击不中变换。
计算机视觉实验报告-对图像进行腐蚀和膨胀

1实验目的选取一张自己的生活照,实现:任选两种结构对图像进行腐蚀和膨胀。
边缘检测(分别使用Prewitt,两种大小的Sobel算子,不同参数的Canny算子,LoG算子),并对比各个算子实现差异及不同参数条件下的实验效果。
2实验过程2.1图像腐蚀和膨胀实验图片所用代码import cv2import numpy as npdef threshold(image, threshold):out = image.copy()out[out < threshold] = 0out[out > threshold] = 1out = out.astype(np.uint8)return out# 1. 读取图像文件image = cv2.imread('img/in.jpeg', cv2.IMREAD_GRAYSCALE)# 2. 缩放图像print('Shape: {}'.format(image.shape))image = cv2.resize(image, (256, 256), cv2.INTER_LINEAR)print('Shape: {}'.format(image.shape))# 3. 均一阈值分割binary = threshold(image, threshold=200)# 4. 腐蚀kernel_size = 5erode = cv2.erode(binary, kernel=np.ones((kernel_size, kernel_size)))# 5. 膨胀dilate = cv2.dilate(binary, kernel=np.ones((kernel_size, kernel_size)))# 6. 显示图像cv2.imshow('Image', image)cv2.imshow('Binary', binary * 255)cv2.imshow('Erode', erode * 255)cv2.imshow('Dilate', dilate * 255) cv2.waitKey(0)实验效果Kernel=5Kernel=25代码分析及现象腐蚀,消除连通的边界,使边界向内收缩。
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) =1R =0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 1 1 1 1 0 0 00 0 0 1 1 1 1 0 0 00 0 0 1 1 1 1 0 0 00 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0B、使用一个3×3的正方形结构元素对象对创建的图像进行膨胀。
C=strel('square',3)C =Flat STREL object containing 9 neighbors. Neighborhood:1 1 11 1 11 1 1C、将图像R和结构元素C传递给imdilate函数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于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
B、使用一个3×3的正方形结构元素对象对创建的图像进行膨胀。
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);
②实验结果:
最终效果如下图:
原始图像腐蚀后的图像膨胀后的图像
4、边缘检测
①实验原理:
对于一副灰度二进制图像,如果图像像素值为1,则该像素的状态为ON,如果其像素值为0,则该像素的状态为OFF。
在一副图像中,如果图像某个像素满足以下两个条件:
1.该像素状态为ON;
2.该像素邻域中有一个或多个像素状态为OFF。
则认为该像素为边缘像素。
Matlab中提供了专门的函数bwperim,可以用于判断一副二进制图像中的哪些像素为边缘像素。
②实验内容及步骤:
以下程序代码示例就是利用bwperim函数,对图像circbw.tif进行边缘检测,其边缘像素检测效果如尾图。
clear;close all
R=imread('circbw.tif');
R1=bwperim(R);
imshow(R);
figure,imshow(R1);
②实验结果:
心得体会:
本次实验利用形态学运算—腐蚀和膨胀对图像进行了处理。
数学形态学的基本思想是:用具有一定形态的结构元素去量度和提取图像中的对应形状,以达到图像分析和识别的目的。
它的优点有:有效滤除噪声、保留图像中原有信息、算法易于用并行处理方法有效实现等等。
总的来说,在此次实验中遇到了较多问题,经过对相关知识的复习以及对相关资料的查询,才逐个地解决了。
在今后的实验课中要有充分的准备与预习,不懂的问题要提前查资料,这样在实验中才会胸有成竹,才不会手忙脚乱。