形态学操作是一组广泛的图像处理操作,可根据其形状处理数字图像。在形态学运算中,每个图像像素对应于其附近其他像素的值。通过选择邻域像素的形状和大小,可以构造对输入图像中的特定形状敏感的形态学运算。形态学运算将在Matlab中称为Strel的结构元素应用于输入图像,从而创建相同大小的输出图像。
形态学操作类型:
- 扩散:扩散会在对象边界上添加像素。
- 侵蚀:侵蚀会移除对象边界上的像素。
- 打开:打开操作会侵蚀图像,然后对侵蚀的图像进行放大,这两种操作都使用相同的结构化元素。
- 关闭:关闭操作先对图像进行放大,然后对放大后的图像进行侵蚀,这两种操作都使用相同的结构化元素。
在图像中从对象中添加或删除的像素数量取决于用于处理图像的结构元素的形状和大小。在形态膨胀和腐蚀操作中,通过将规则应用于输入图像中的相应像素及其相邻像素,可以确定输出图像中任何给定像素的状态。用于处理像素的规则将形态学操作定义为扩张或腐蚀。
下面是用于形态运算的Matlab代码:
# Importing the image
I = imread("flowers.jpg");
subplot(2, 3, 1),
imshow(I);
title("Original image");
% Dilated Image
se = strel("line", 7, 7);
dilate = imdilate(I, se);
subplot(2, 3, 2),
imshow(dilate);
title("Dilated image");
% Eroded image
erode = imerode(I, se);
subplot(2, 3, 3),
imshow(erode);
title("Eroded image");
% Opened image
open = imopen(I, se);
subplot(2, 3, 4),
imshow(open);
title("Opened image");
% Closed image
close = imclose(I, se);
subplot(2, 3, 5),
imshow(close);
title("Closed image");