clc;
clear all;
close all;
%灰度膨胀、腐蚀、开操作、闭操作测试图像
I=im2double(imread('D:\Gray Files\9-37.tif'));
%============================灰度腐蚀+膨胀图像=============================
%半径为2的平顶结构元素,实际上只取4连通的数值
B=[0 1 0;1 1 1; 0 1 0];
n=size(B,1);
ind=find(B==0);
n_l=floor(n/2);
%对边界图进行扩充,目的是为了处理边界点,这里采用边界镜像扩展
I_pad=padarray(I,[n_l,n_l],'symmetric');
[M,N]=size(I);
J_Erosion=zeros(M,N);
J_Dilation=zeros(M,N);
for i=1:M
for j=1:N
%获得图像子块区域
Block=I_pad(i:i+2*n_l,j:j+2*n_l);
C=Block.*B;
%删除0值,保留4连通数值
C=C(:);
C(ind)=[];
%腐蚀操作
J_Erosion(i,j)=min(C);
%膨胀操作
J_Dilation(i,j)=max(C);
end
end
subplot(131)
imshow(I)
subplot(132)
imshow(J_Erosion)
subplot(133)
imshow(J_Dilation)