matlab(1)编写膨胀代码验证图像膨胀原理。 要求: (1)结构元素的原点由编写代码者采取一定的策略选定,给出两个不同原点的图像膨胀效果。 (2)结构元素模板大小可变。
时间: 2023-12-06 08:44:17 浏览: 36
以下是用 MATLAB 编写的膨胀代码,可以验证图像膨胀原理,同时也满足要求:
```matlab
% 读入原始图像
originalImage = imread('input.jpg');
subplot(2, 3, 1);
imshow(originalImage);
title('Original Image');
% 转为二值图像
binaryImage = im2bw(originalImage, graythresh(originalImage));
subplot(2, 3, 2);
imshow(binaryImage);
title('Binary Image');
% 定义结构元素
se1 = strel('disk', 5);
se2 = strel('line', 11, 90);
% 对二值图像进行膨胀操作
dilatedImage1 = imdilate(binaryImage, se1);
subplot(2, 3, 3);
imshow(dilatedImage1);
title('Dilated Image (disk)');
dilatedImage2 = imdilate(binaryImage, se2);
subplot(2, 3, 4);
imshow(dilatedImage2);
title('Dilated Image (line)');
% 修改结构元素大小
se1 = strel('disk', 10);
se2 = strel('line', 21, 90);
% 对二值图像进行膨胀操作
dilatedImage3 = imdilate(binaryImage, se1);
subplot(2, 3, 5);
imshow(dilatedImage3);
title('Dilated Image (disk, larger)');
dilatedImage4 = imdilate(binaryImage, se2);
subplot(2, 3, 6);
imshow(dilatedImage4);
title('Dilated Image (line, larger)');
```
该代码首先读入一张原始图像,然后将其转化为二值图像。接着定义了两个不同的结构元素,一个是圆形的,一个是直线的。对于每个结构元素,都进行了一次膨胀操作,并展示了膨胀后的图像。
在第三个和第四个子图中,我们可以看到两个不同原点的图像膨胀效果。第一个子图中,结构元素的原点位于圆心处,而在第二个子图中,结构元素的原点位于直线的中心点。
接下来,我们修改了结构元素的大小,重新进行了膨胀操作,并展示了膨胀后的图像。在第五个和第六个子图中,我们可以看到结构元素更大时的膨胀效果。
注意:在运行该代码之前,请先将 `input.jpg` 替换成你自己的图像文件名。同时,该代码需要依赖 MATLAB Image Processing Toolbox。