形态学是广泛的图像处理操作集,这些操作基于形状来处理图像。它也被称为用于提取图像成分的工具,该图像成分可用于表示和描述区域形状。
基本形态学操作是:
1.侵蚀
2.扩张
扩张–
- 扩张会扩展图像像素,即通过使用结构化元素B来扩展元素A。
- 膨胀将像素添加到对象边界。
- 输出像素的值是附近所有像素的最大值。如果任何相邻像素的值都为1,则将像素设置为1。
方法:
- 读取RGB图像。
- 使用函数im2bw()将RGB图像转换为二进制图像。
- 创建一个结构元素,或者您可以使用任何预定义的蒙版,例如。 fspecial(’sobel’)。
- 存储行和列的数量以及数组并循环遍历。
- 创建大小与图像大小相同的零矩阵。
- 留下边界像素会开始在图像上移动结构元素,并开始将像素与附近的像素进行比较。
- 如果邻域像素的值为1,则将该像素的值更改为1。
以下是用于膨胀的Matlab代码:
% read image
I=imread('lenna.png');
% convert to binary
I=im2bw(I);
% create structuring element
se=ones(5, 5);
% store number of rows in P and number of columns in Q.
[P, Q]=size(se);
% create a zero matrix of size I.
In=zeros(size(I, 1), size(I, 2));
for i=ceil(P/2):size(I, 1)-floor(P/2)
for j=ceil(Q/2):size(I, 2)-floor(Q/2)
% take all the neighbourhoods.
on=I(i-floor(P/2):i+floor(P/2), j-floor(Q/2):j+floor(Q/2));
% take logical se
nh=on(logical(se));
% compare and take minimum value of the neighbor
% and set the pixel value to that minimum value.
In(i, j)=max(nh(:));
end
end
imshow(In);
输入图片:
输出图像: