自己编写的matlab图像膨胀完整全部代码
时间: 2023-08-14 11:02:41 浏览: 88
以下是一个简单的 MATLAB 图像膨胀的代码:
```matlab
function imgOut = dilation(imgIn, se)
% imgIn: 输入图像
% se: 结构元素
% 获得结构元素的大小
[seH, seW] = size(se);
% 获得输入图像的大小
[imgH, imgW] = size(imgIn);
% 将结构元素的中心置为原点
seHmid = floor(seH/2) + 1;
seWmid = floor(seW/2) + 1;
% 建立输出图像
imgOut = zeros(imgH, imgW);
% 对于每个像素,进行膨胀操作
for i = 1:imgH
for j = 1:imgW
% 初始化膨胀值为 0
dilVal = 0;
% 检查结构元素是否与当前像素重叠
for m = 1:seH
for n = 1:seW
% 计算结构元素的坐标
seRow = m - seHmid;
seCol = n - seWmid;
% 检查结构元素是否在图像范围内
if (i+seRow >= 1) && (i+seRow <= imgH) && ...
(j+seCol >= 1) && (j+seCol <= imgW)
% 如果结构元素和像素重叠,更新膨胀值
if se(m,n) && imgIn(i+seRow,j+seCol)
dilVal = 1;
end
end
end
end
% 将膨胀值存储到输出图像中
imgOut(i,j) = dilVal;
end
end
```
这个函数需要两个输入参数,一个是输入图像 `imgIn`,另一个是结构元素 `se`。输出是膨胀后的图像 `imgOut`。在函数中,我们首先计算结构元素和输入图像的大小,然后对于每个像素,检查结构元素是否与该像素重叠。如果重叠,将膨胀值设置为 1。最后,将膨胀值存储到输出图像中。
阅读全文