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

📄 open.m

📁 关于偏微分方程进行图像处理的电子书,对于学习动态轮廓实现图像的分割非常有用
💻 M
字号:
function open( filename )

  image_I=imread(filename);
  [size_m,size_n]=size(image_I);
  Image_ex=matrix_expand(image_I,1);
  
  subplot(3,2,1);
  imshow(image_I,[]);
  % 1 经结构元素为1×3的矩阵腐蚀
  for row=1:size_m
      for col=1:size_n
          min=256;
          for index=-1:1 
              new_r=row+index+1;
              new_c=col+1;
              if Image_ex(new_r,new_c)<min
                  min=Image_ex(new_r,new_c); 
              end    
          end
          image_O(row,col)=min;
      end
  end   
 imwrite(uint8(image_O),strcat('e',filename));
 subplot(3,2,2);
 imshow(uint8(image_O));
 
 image_I=uint8(image_O);
 Image_ex=matrix_expand(image_I,1);
 % 2 1×3结构元素膨胀
  for row=1:size_m
      for col=1:size_n
          %对每一点求其 t领域 的最大值
              max=-1;
              for index=-1:1 
                     new_r=row+index+1;
                     new_c=col+1;
                     if Image_ex(new_r,new_c)>max
                            max=Image_ex(new_r,new_c);                       
                     end                 
              end
              image_O(row,col)=max;
         end
     end   
 imwrite(uint8(image_O),strcat('ed',filename));
 subplot(3,2,3);
 imshow(uint8(image_O));
 
 image_I=uint8(image_O);
 Image_ex=matrix_expand(image_I,1);
 % 3  3×1结构元素膨胀
  for row=1:size_m
      for col=1:size_n
          %对每一点求其 t领域 的最大值
              max=-1;
              for index=-1:1 
                     new_r=row+1;
                     new_c=col+index+1;
                     if Image_ex(new_r,new_c)>max
                            max=Image_ex(new_r,new_c);                       
                     end                 
              end
              image_O(row,col)=max;
         end
     end   
 imwrite(uint8(image_O),strcat('edd',filename));
 subplot(3,2,4);
 imshow(uint8(image_O));
 
 image_I=uint8(image_O);
 Image_ex=matrix_expand(image_I,1);
 % 4 经结构元素为1×3的矩阵腐蚀
 for row=1:size_m
      for col=1:size_n
          min=256;
          for index=-1:1 
              new_r=row+1;
              new_c=col+index+1;
              if Image_ex(new_r,new_c)<min
                  min=Image_ex(new_r,new_c); 
              end    
          end
          image_O(row,col)=min;
      end
  end   
 imwrite(uint8(image_O),strcat('edde',filename));
 subplot(3,2,5);
 imshow(uint8(image_O));
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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 + -