📜  Matlab |图像侵蚀

📅  最后修改于: 2021-04-16 09:03:43             🧑  作者: Mango

形态学是广泛的图像处理操作集,这些操作基于形状来处理图像。它也被称为用于提取图像成分的工具,该图像成分可用于表示和描述区域形状。

基本形态学操作是:
1.侵蚀
2.扩张

在本文中,我们将讨论侵蚀。

侵蚀:

  • 侵蚀会缩小图像像素,即,通过使用元素B将其用于元素A的收缩。
  • 侵蚀会去除对象边界上的像素:
  • 输出像素的值是附近所有像素的最小值。如果任何相邻像素的值为0,则将像素设置为0。

方法:

  1. 读取RGB图像。
  2. 使用函数im2bw() ,将RGB图像转换为二进制图像。
  3. 创建一个结构元素,或者您可以使用任何预定义的蒙版,例如。 fspecial(’sobel’)。
  4. 将行数和列数存储在数组中并循环遍历。
  5. 创建大小与图像大小相同的零矩阵。
  6. 留下边界像素会开始在图像上移动结构元素,并开始将像素与附近存在的像素进行比较。
  7. 如果邻域像素的值为0,则将该像素的值更改为0。

以下是用于侵蚀的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)=min(nh(:));      
    end
end
  
imshow(In);

输入图片:

输出图像: