Matlab编写图像腐蚀函数
时间: 2024-05-03 14:17:57 浏览: 84
matlab 腐蚀代码
以下是一个基本的 Matlab 图像腐蚀函数的实现:
```matlab
function output_img = erosion(input_img, kernel)
% 获取输入图像和卷积核的大小
[img_height, img_width] = size(input_img);
[kernel_height, kernel_width] = size(kernel);
% 计算卷积核的中心点
kernel_center_x = floor(kernel_width/2) + 1;
kernel_center_y = floor(kernel_height/2) + 1;
% 初始化输出图像为全黑图像
output_img = zeros(img_height, img_width);
% 对于每个像素进行操作
for i = 1:img_height
for j = 1:img_width
% 初始化最小值为最大可能值
min_val = 255;
% 对于卷积核内的每个像素进行比较
for k = 1:kernel_height
for l = 1:kernel_width
% 计算卷积核内的像素位置
x = i + k - kernel_center_y;
y = j + l - kernel_center_x;
% 如果像素位置在图像范围内,则进行比较
if (x > 0 && x <= img_height && y > 0 && y <= img_width)
% 如果卷积核内的像素值小于最小值,则更新最小值
if (kernel(k, l) == 1 && input_img(x, y) < min_val)
min_val = input_img(x, y);
end
end
end
end
% 将最小值赋给输出图像
output_img(i, j) = min_val;
end
end
% 将输出图像转换为 uint8 格式
output_img = uint8(output_img);
end
```
该函数接受两个参数:输入图像(`input_img`)和卷积核(`kernel`),并返回腐蚀后的图像(`output_img`)。
在函数中,首先获取输入图像和卷积核的大小,然后计算卷积核的中心点。接下来,对于每个像素进行操作,比较卷积核内的像素值,并将最小值赋给输出图像。最后,将输出图像转换为 uint8 格式并返回。
阅读全文