使用不同的膨胀和腐蚀方法对图像进行处理

膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。通过膨胀,可以填充图像中的小孔及在图像边缘处的小凹陷部分。结构元素B对图像A进行膨胀,记作A ​ B

腐蚀和膨胀是对偶操作。腐蚀是一种消除边界点,使边界向内部收缩的过程。利用腐蚀操作,可以消除小且无意义的物体。集合A被结构元素B腐蚀,记作A\ThetaB

这里为了简化起见,被膨胀和腐蚀图像我们处理成二值图像:

matlab 中

膨胀函数 IM2 = imdilate(IM,SE)   对图像IM进行膨胀,采用的结构元素为SE,SE为函数strel()得到的结构元素

腐蚀函数 IM2 = imerode(IM,SE)  对图像IM进行腐蚀,其他同上

以膨胀为例代码如下:

close all;clear all;clc;
I = imread('ceshi1.jpg');
I = im2bw(I);
I = ~I;
se1 = strel('square',3);  %方形膨胀元素
se2 = strel('line',5,90);   %线性膨胀元素
%se3 = strel('ball',5,10);   %球形膨胀元素  不能用于二值图像
se4 = strel('disk',11);     %磁盘膨胀元素
se5 = strel('rectangle',[20 30]);  %矩形膨胀元素
A = imdilate(I,se1);
B = imdilate(I,se2);
%C = imdilate(I,se3);
D = imdilate(I,se4);
E = imdilate(I,se5);
figure;
subplot(231);imshow(I);title('origin');
subplot(232);imshow(A);title('square');
subplot(233);imshow(B);title('line');
%subplot(234);imshow(C);title('ball');
subplot(235);imshow(D);title('disk');
subplot(236);imshow(E);title('rectangle');

strel结构元素说明:

 Examples
    --------
        se1 = strel('square',11)      % 11-by-11 square
        se2 = strel('line',10,45)     % line, length 10, angle 45 degrees
        se3 = strel('disk',15)        % disk, radius 15
        se4 = strel('ball',15,5)      % ball, radius 15, height 5

注意:这里球形结构元素不能用于膨胀操作,腐蚀操作类似,只需要修改imdilate函数为imerode函数

程序执行后输出如下:

 

posted on 2019-09-03 17:07  我坚信阳光灿烂  阅读(1499)  评论(0编辑  收藏  举报

导航