利用matlab写出 不调用matlab自带的函数对多张二值图像进行膨胀、腐蚀的代码,观察并分析图像的变化
时间: 2024-02-11 17:06:42 浏览: 58
以下是一个示例代码,实现对多张二值图像的膨胀、腐蚀操作,并观察图像的变化:
```matlab
% 读取多张二值图像并存储在一个cell数组中
imageFiles = dir('*.bmp'); % 读取当前文件夹下所有bmp格式的图像
numImages = length(imageFiles);
images = cell(1, numImages);
for k = 1:numImages
filename = fullfile(imageFiles(k).folder, imageFiles(k).name);
images{k} = imread(filename);
end
% 定义膨胀和腐蚀的结构元素
SE_d = ones(3, 3); % 3×3的全1矩阵
SE_e = [0 0 1 0 0; 0 0 1 0 0; 1 1 1 1 1; 0 0 1 0 0; 0 0 1 0 0]; % 5×5的十字形矩阵
% 对每张二值图像进行膨胀、腐蚀操作,并显示结果
for k = 1:numImages
BW = images{k};
[m, n] = size(BW);
% 执行膨胀操作
BW_d = zeros(m, n);
for i = 2:m-1
for j = 2:n-1
if BW(i, j) == 1
BW_d(i-1:i+1, j-1:j+1) = 1;
end
end
end
% 执行腐蚀操作
BW_de = zeros(m, n);
for i = 3:m-2
for j = 3:n-2
if sum(sum(BW_d(i-2:i+2, j-2:j+2) & SE_e)) == sum(SE_e(:))
BW_de(i, j) = 1;
end
end
end
% 显示结果
subplot(2, numImages, k);
imshow(BW);
title('原图像');
subplot(2, numImages, k + numImages);
imshow(BW_de);
title('膨胀腐蚀后的图像');
end
```
这个示例代码与前面的示例代码类似,不同之处在于添加了观察和分析图像变化的部分。在这个示例代码中,对每张二值图像进行膨胀、腐蚀操作,并将原图像和处理后的图像分别显示在不同的子图中。可以通过比较不同子图之间的差异,来观察和分析图像的变化。例如,可以比较原图像和膨胀腐蚀后的图像的边缘信息、纹理信息、亮度、对比度等特征,进而分析和评估膨胀、腐蚀算法的效果。
阅读全文