⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 erosion_disk.m

📁 关于偏微分方程进行图像处理的电子书,对于学习动态轮廓实现图像的分割非常有用
💻 M
字号:
function erosion_disk(filename,r,out_file_name)
% 膨胀算子
% filename 输入图像文件名
% 结构元素为圆,边长为r
% out_file_name 输出文件名

if nargin<3
    disp('请按输入参数说明正确输入参数!!!');
    return;
end

  image_I=imread(filename);
  [size_m,size_n]=size(image_I);
  image_O=image_I;
 
template=zeros(2*r+1,2*r+1);
  
for row= -r:r
    for col=-r:r
        if row*row+col*col<=r*r
            template(row+r+1,col+r+1)=1;
        end
    end
end
image_ex=matrix_expand(image_I,r);

  for row=1:size_m
      for col=1:size_n
          %对每一点求其 t领域 的最大值
          min=256;
          for x=-r:r
              for y=-r:r
                  if template( x+r+1,y+r+1)==1
                      temp=image_ex(row+r+x,col+r+y);
                      if temp<min
                          min=temp;
                      end                    
                  end 
              end
              image_O(row,col)=min;
          end
      end
  end  
 imwrite(image_O,out_file_name);
                      
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function matrix_ex=matrix_expand(matrix,x)
% 对矩阵进行延拓 ,镜面映射  
   [size_r,size_c]=size(matrix);
   matrix_ex=zeros(size_r+2*x,size_c+2*x);
   % 中
   for row=1:size_r
       for col=1:size_c
           matrix_ex(row+x,col+x)=matrix(row,col);
       end
  end
  % 左,右
  for row=1:size_r
      for col=1:x
          matrix_ex(row+x,x-col+1)=matrix(row,col);
          matrix_ex(row+x,size_c+x+col)=matrix(row,size_c-col+1);
      end
  end
  % 上,下
  for row=1:x
      for col=1:size_c 
          matrix_ex(x-row+1,col+x)=matrix(row,col);
          matrix_ex(size_r+x+row,col+x)=matrix(size_r-row+1,col);
      end
  end

  for row=1:x
       for col=1:x
           matrix_ex( x-col+1,x-row+1 )=matrix(row,col);   % LL
           matrix_ex( x-col+1,size_c+x+row )=matrix(row,size_c-col+1); %LH
           matrix_ex( size_r+x+col,x-row+1 )=matrix(size_r-row+1,col); % HL
           matrix_ex( size_r+x+col,size_c+x+row)=matrix(size_r-row+1,size_c-col+1);%HH
       end
   end   
% --------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -