📄 acutance.m
字号:
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 + -