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

📄 acutance.m

📁 对图像进行多种分析、变化
💻 M
📖 第 1 页 / 共 2 页
字号:
    set(fig2,'CData',Histog);
%=====================================
elseif strcmp(action,'actE3'),
    figure(FIG);
    if L==3,
       Gray=rgb2gray(For1);
       Histog=histeq(Gray); 
    elseif L==1,  
       Histog=histeq(For1); 
    end
    
    set(gcf,'currentaxes',ax3);
    set(ax3,'position',[x2,0.68,0.25,0.25]);
    set(fig3,'CData',Histog);

%========================================
elseif strcmp(action,'pop1'),
      figure(FIG);
      opiA=[];
      menuA=get(menu1,'value');
      if menuA==1,
        opiA=org;
      elseif menuA==2,
        opiA=For0;
      elseif menuA==3,
        opiA=For1;
      end
  
%========================================
elseif strcmp(action,'actF'),
  if sig==1,   
       figure(FIG);
       Acutance('pop1')
     if isempty(opiA),
        set(fig4,'CData',[]);set(gcf,'currentaxes',ax4);set(ax4,'Color',[.9 .9 .9],'Box','on','vis','on','XTick',[],'YTick',[],'position',[0.35,0.38,0.25,0.25]);
        FIG1=figure('Units','norm','Pos',[.55 .45 .2 .1],'Name','error','Number','off','Menu','none','Units','normalized');
        ax8=axes('Pos',[0 0 1 1],'TickDir','out','Color','w');
        t=text(.5,.5,'所选图像不存在','FontSize',10,'hor','cent');
     else
       if L==3,
         Gray=rgb2gray(opiA);
         fourier=fftshift(fft2(double(Gray)));
       elseif L==1,
         fourier=fftshift(fft2(double(opiA)));
       end
       set(gcf,'currentaxes',ax4);
       fft=double(log(abs(fourier)));
     if menuA==1,
         set(ax4,'position',[0.35,0.38,0.25,0.25]);
     elseif menuA==2,
         set(ax4,'position',[x1+0.01,0.38,0.25,0.25]);
     elseif menuA==3,
         set(ax4,'position',[x3+0.01,0.38,0.25,0.25]);
     end
       set(fig4,'CData',fft);
       set(ax4,'vis','off');
     end
  else 
       figure('Units','norm','Pos',[.55 .45 .2 .1],'Name','提示',...
             'Number','off','Menu','none','Units','normalized');
       axes('Pos',[0 0 1 1],'TickDir','out','Color','w');
       text(.5,.5,'请先调入新图像','FontSize',10,'hor','cent');
  end
     
%===========================================
elseif strcmp(action,'pop2'),
    figure(FIG);
    opiB=[];  
    menuB=get(menu2,'value');
   
    if menuB==1,
       opiB=For0;
      elseif menuB==2,
        opiB=For1;
    end
  
%============================================
elseif strcmp(action,'edgeC'),
    figure(FIG);
    menuC=get(menu3,'value');
%=============================================
elseif strcmp(action,'edgeM')
    figure(FIG);
    menuD=get(menu4,'value');
%=============================================
elseif strcmp(action,'edgeAp')
  if sig==1, 
    Acutance('pop2');
    Acutance('edgeC');
    Acutance('edgeM');
  if isempty(opiB),
       set(fig5,'CData',[]);set(gcf,'currentaxes',ax5);set(ax5,'Color',[.9 .9 .9],'Box','on','vis','on','XTick',[],'YTick',[]); 
       figure('Units','norm','Pos',[.55 .45 .2 .1],'Name','error',...
             'Number','off','Menu','none','Units','normalized');
       axes('Pos',[0 0 1 1],'TickDir','out','Color','w');
       text(.5,.5,'所选图像不存在','FontSize',10,'hor','cent');
              
  else
    if menuC==1,
      if L==3,
        edgA =rgb2gray(opiB);
        y=roberts(double(edgA),menuD);
      elseif L==1,
        y=roberts(double(opiB),menuD);
      end
      
      if menuB==1;
       set(ax5,'position',[x4+0.01,0.38,0.25,0.25]);
       set(fig5,'CData',y);
       set(ax5,'vis','off');
       set(gcf,'currentaxes',ax7);
       dd30=round(mean(double(y(:)))*100)/100;dd31=round(std(double(y(:)))*100)/100;
       set(te3,'string',num2str(dd30));set(te4,'string',num2str(dd31));   
       set(te7,'string',[]);set(te8,'string',[]);set(te9,'string',[]);set(te10,'string',[]);
       set(te11,'string',[]);set(te12,'string',[]);
      end
      if menuB==2;
       set(ax5,'position',[x2+0.01,0.38,0.25,0.25]);
       set(fig5,'CData',y);
       set(ax5,'vis','off');
       dd30=round(mean(double(y(:)))*100)/100;dd31=round(std(double(y(:)))*100)/100;
       set(te7,'string',num2str(dd30));set(te8,'string',num2str(dd31));;
       set(te3,'string',[]); set(te4,'string',[]);set(te9,'string',[]); set(te10,'string',[]);
       set(te11,'string',[]);set(te12,'string',[]);
      end
    elseif menuC==2
      if L==3,
        edgA =rgb2gray(opiB);
        y=sobel(double(edgA),menuD);
      elseif L==1,
        y=sobel(double(opiB),menuD);
      end
      
      if menuB==1;
        set(ax5,'position',[x4+0.01,0.38,0.25,0.25]);
        set(fig5,'CData',y);
        set(ax5,'vis','off');
        set(gcf,'currentaxes',ax7);
        dd30=round(mean(double(y(:)))*100)/100;dd31=round(std(double(y(:)))*100)/100;
        set(te9,'string',num2str(dd30));set(te10,'string',num2str(dd31));  
        set(te3,'string',[]); set(te4,'string',[]); set(te7,'string',[]); set(te8,'string',[]);
        set(te11,'string',[]); set(te12,'string',[]);
      end
      if menuB==2;
       set(ax5,'position',[x2+0.01,0.38,0.25,0.25]);
       set(fig5,'CData',y);
       set(ax5,'vis','off');
       set(gcf,'currentaxes',ax7);
       dd30=round(mean(double(y(:)))*100)/100;dd31=round(std(double(y(:)))*100)/100;
       set(te11,'string',num2str(dd30));set(te12,'string',num2str(dd31));
       set(te3,'string',[]); set(te4,'string',[]);set(te7,'string',[]); set(te8,'string',[]);
       set(te9,'string',[]); set(te10,'string',[]);
      end
    end
  end
  else
       figure('Units','norm','Pos',[.55 .45 .2 .1],'Name','提示',...
             'Number','off','Menu','none','Units','normalized');
       axes('Pos',[0 0 1 1],'TickDir','out','Color','w');
       text(.5,.5,'请先调入新图像','FontSize',10,'hor','cent');
  end
%=============================================
elseif strcmp(action,'info')
    
  ttlStr = '图像局部区域锐度检测'; 
     str0='  ';
   
   str1='  1. 调入新图像。';
   str2='  2. 选择需要分析的2个区域。';
   str3='  3. 点击原始图像,所选区域1,所选区域2,观察均衡后的图像。';
   str4='  4. 观察傅立叶变换。';
   str5='  5. 选择需分析的区域以及边缘检测模式,观察检测后图像以及表格中的数据进行比较。';
   
  
   hlpStr1=str2mat(str0,str1,str0,str2,str0,str3,str0,str4,str0,str5);
   hlpStr={'说明' hlpStr1};
   helpwin(hlpStr,'说明',ttlStr);

%========================================

elseif strcmp(action,'reset'),
     
    if ~isempty(get(fig1,'CData')),
        set(fig1,'CData',[]);
        set(ax1,'Vis','on','position',[0,0.2,0.25,0.25],'XTick',[],'YTick',[],'Color',[.9 .9 .9],'Box','on');
    end
    if ~isempty(get(fig2,'CData')),
        set(fig2,'CData',[]);
        set(ax2,'Vis','on','position',[0.35,0.68,0.25,0.25],'XTick',[],'YTick',[],'Color',[.9 .9 .9],'Box','on');
    end
    if ~isempty(get(fig3,'CData')),
        set(fig3,'CData',[]);
        set(ax3,'Vis','on','position',[0.7,0.68,0.25,0.25],'XTick',[],'YTick',[],'Color',[.9 .9 .9],'Box','on');
    end
    if ~isempty(get(fig4,'CData')),
        set(fig4,'CData',[]);
        set(ax4,'Vis','on','position',[0.35,0.38,0.25,0.25],'XTick',[],'YTick',[],'Color',[.9 .9 .9],'Box','on');
    end
    if ~isempty(get(fig5,'CData')),
        set(fig5,'CData',[]);
        set(ax5,'Vis','on','position',[0.7,0.38,0.25,0.25],'XTick',[],'YTick',[],'Color',[.9 .9 .9],'Box','on');
    end
    org=[];For=[]; For0=[]; For1=[];dd30=0; dd31=0; dd32=0; dd33=0; dd34=0; dd35=0; dd10=0; dd20=0; dd11=0; dd21=0;
    set(gcf,'currentaxes',ax7);set(te1,'string',[]);set(te2,'string',[]);set(te3,'string',[]);
    set(te4,'string',[]);set(te5,'string',[]);set(te6,'string',[]);set(te7,'string',[]);
    set(te8,'string',[]);set(te9,'string',[]);set(te10,'string',[]);set(te11,'string',[]);
    set(te12,'string',[]);set(te13,'string',[]);set(te14,'string',[]);set(te15,'string',[]);set(te16,'string',[]);
    
    set(ax1,'Vis','on','position',[0,0.2,0.25,0.25],'XTick',[],'YTick',[],'Color',[.9 .9 .9],'Box','on');
    set(ax2,'Vis','on','position',[0.35,0.68,0.25,0.25],'XTick',[],'YTick',[],'Color',[.9 .9 .9],'Box','on');
    set(ax3,'Vis','on','position',[0.7,0.68,0.25,0.25],'XTick',[],'YTick',[],'Color',[.9 .9 .9],'Box','on');
    set(ax4,'Vis','on','position',[0.35,0.38,0.25,0.25],'XTick',[],'YTick',[],'Color',[.9 .9 .9],'Box','on');
    set(ax5,'Vis','on','position',[0.7,0.38,0.25,0.25],'XTick',[],'YTick',[],'Color',[.9 .9 .9],'Box','on');
    sig=0;
    % ===========================================
elseif strcmp(action,'Laplace'),
    msk=[0 -1 0; -1 4 -1; 0 -1 0];
    Lap=conv2(im,msk,'s');
% ===========================================
elseif strcmp(action,'output');
   if sig==1, 
    if ~isempty(get(fig5,'CData')),
      if menuB==1,
         a=[dd10 dd20 dd30 dd31 dd32 dd33];end
      if menuB==2,
         a=[dd11 dd21 dd30 dd31 dd34 dd35];end
         s='Data';
         xlswrite('m.xls',a,s);
    else
         figure('Units','norm','Pos',[.55 .45 .2 .1],'Name','error','Number','off','Menu','none','Units','normalized');
         axes('Pos',[0 0 1 1],'TickDir','out','Color','w');
         text(.5,.5,'请先求得边缘图','FontSize',10,'hor','cent');
    end
   else
       figure('Units','norm','Pos',[.55 .45 .2 .1],'Name','提示',...
             'Number','off','Menu','none','Units','normalized');
       axes('Pos',[0 0 1 1],'TickDir','out','Color','w');
       text(.5,.5,'请先调入新图像','FontSize',10,'hor','cent');
   end
        
% ===========================================
  elseif strcmp(action,'done'),
    figure(FIG);delete(gcf);
    
end


⌨️ 快捷键说明

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