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

📄 menu2.m

📁 Snake模型源码
💻 M
字号:
%%%%%%%%%% MENU 2 %%%%%%%%%%

function menu2()


%%%% image processing variables
global Image1;							% original image
global Image2;							% blured image

global sigma;
global mu;
global NoGVFIterations;
global VectorFieldButt;
global SchangeInFieldType;
global GradientOn;					% 1 if gradient is applayed with blur

%%%% interface variables
global VectorOfLocalMenuHD;		%vector of local objects that can be arased in next step
global HDmainf;			 			%main figure handle
global HDorigPic;						%original picture axes handle
global HDbluredPic;				   %blured picture axes handle
global HDvectorFPic;					%handle of vector field picture
global HDRadioButton1;
global HDRadioButton2;
global HDRadioButton3;
global HDSnakeLine;					%vector of Handles of Snake lines on the picture


global HDedit1;
global HDedit2;
global SnakeON;						%indicate if snake is visible
SnakeON=0;

global xsize ysize;					%size of the picture

global adgeD MinSize MenuSizeX MenuSizeY MenuPosX MenuPosY;
global ButtHeight ButtWidth ButtDist TextHeight;


%%%%%% Close Old Objects %%%%%%%%
if ~isempty(HDSnakeLine) 
   delete(HDSnakeLine); 
   HDSnakeLine=[];
end;

if ~isempty(VectorOfLocalMenuHD) 
   delete(VectorOfLocalMenuHD); 
   VectorOfLocalMenuHD=[];
end;

%if ~isempty(HDvectorFPic) 
%   delete(HDvectorFPic); 
%   HDvectorFPic=[];
%end;
set(HDvectorFPic,'Visible','Off');
set(HDmainf,'CurrentAxes',HDvectorFPic);
cla;


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Define menu objects
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%plot the border for the menu
MenuSizeY=240;
MenuPosX=xsize*2+3*adgeD;
MenuPosY=ysize*2+3*adgeD-8-MenuSizeY;
HDMenuAxes=uicontrol( 'Parent',HDmainf , ...
   'Style','frame', ...
   'Units','pixels', ...
   'Position',[MenuPosX MenuPosY MenuSizeX MenuSizeY],...
   'BackgroundColor',[0.45 0.45 0.45]);

% The NEXT button
labelStr='Next -->';
ButtPosX=MenuPosX+0.5*ButtDist+MenuSizeX/2;
ButtPosY=MenuPosY+MenuSizeY-ButtDist-ButtHeight;
ButtWidth=MenuSizeX/2-1.5*ButtDist;

HDButton1=uicontrol('Parent', HDmainf, ...
   'BusyAction','Queue','Interruptible','off',...
   'Style','pushbutton', ...
   'Units','pixels', ...
   'Position',[ButtPosX ButtPosY ButtWidth ButtHeight], ...
   'String',labelStr, ...
   'Enable','on', ...
   'Callback','caclVF');

% The BACK button
labelStr='<-- Back';
ButtPosX=MenuPosX+ButtDist;
HDButton2=uicontrol('Parent', HDmainf, ...
   'BusyAction','Queue','Interruptible','off',...
   'Style','pushbutton', ...
   'Units','pixels', ...
   'Position',[ButtPosX ButtPosY ButtWidth ButtHeight], ...
   'String',labelStr, ...
   'Enable','on', ...
   'Callback','menu1');

% Radio Button 1 			- standard vector filed
ButtPosY = ButtPosY-ButtDist-ButtHeight-adgeD;
ButtWidth=MenuSizeX-2*ButtDist;
labelStr='Standard vector field';
callbackStr='RadioUPDATE';

btnPos=[ButtPosX ButtPosY ButtWidth ButtHeight];
HDRadioButton1=uicontrol('Parent', HDmainf, ...
   'BusyAction','Queue','Interruptible','off',...
   'Style','radiobutton', ...
   'Units','pixels', ...
   'Position',btnPos, ...
   'String',labelStr, ...
   'value',VectorFieldButt(1),'Userdata',VectorFieldButt(1), ...
   'Callback',callbackStr);

% Radio Button 2 			- standard vector filed
ButtPosY = ButtPosY-ButtDist-ButtHeight;
labelStr='GVF field';
callbackStr='RadioUPDATE';

btnPos=[ButtPosX ButtPosY ButtWidth ButtHeight];
HDRadioButton2=uicontrol('Parent', HDmainf, ...
   'BusyAction','Queue','Interruptible','off',...
   'Style','radiobutton', ...
   'Units','pixels', ...
   'Position',btnPos, ...
   'String',labelStr, ...
   'value',VectorFieldButt(2),'Userdata',VectorFieldButt(2), ...
   'Callback',callbackStr);

% UICONTROL for GVF mu
if VectorFieldButt(2)==1 
   onoff='on';
else
   onoff='off';
end

ButtPosY = ButtPosY-ButtDist-ButtHeight;
labelPos=[ButtPosX+0.2*ButtWidth ButtPosY ButtWidth*0.5 TextHeight];
HDtext1 = uicontrol('Parent', HDmainf, ...
   'Style','text', ...
   'Units','pixels', ...
   'Position',labelPos, ...
   'Horiz','left', ...
   'String','Mu:', ...
   'Interruptible','off', ...
   'BackgroundColor',[0.45 0.45 0.45], ...
   'ForegroundColor','white');


textPos=[ButtPosX+0.65*ButtWidth ButtPosY ButtWidth*0.35 TextHeight];
callbackStr = 'muset';
stringVal=num2str(mu);
HDedit1 = uicontrol('Parent', HDmainf, ...
   'BusyAction','Queue','Interruptible','off',...
   'Style','edit', ...
   'Units','pixel', ...
   'Position',textPos, ...
   'Units','normal', ...
   'Horiz','right', ...
   'Background','white', ...
   'Foreground','black', ...
   'String',stringVal,'Value',mu, ...
   'UserData',mu,...
   'Enable',onoff,...
   'callback',callbackStr);

% UICONTROL for GVF Number of Iterations

ButtPosY = ButtPosY-ButtDist-ButtHeight;
labelPos=[ButtPosX+0.2*ButtWidth ButtPosY ButtWidth*0.5 TextHeight];
HDtext2 = uicontrol('Parent', HDmainf, ...
   'Style','text', ...
   'Units','pixels', ...
   'Position',labelPos, ...
   'Horiz','left', ...
   'String','Iterations:', ...
   'Interruptible','off', ...
   'BackgroundColor',[0.45 0.45 0.45], ...
   'ForegroundColor','white');


textPos=[ButtPosX+0.65*ButtWidth ButtPosY ButtWidth*0.35 TextHeight];
callbackStr = 'iterset';
stringVal=num2str(NoGVFIterations);
HDedit2 = uicontrol('Parent', HDmainf, ...
   'BusyAction','Queue','Interruptible','off',...
   'Style','edit', ...
   'Units','pixel', ...
   'Position',textPos, ...
   'Units','normal', ...
   'Horiz','right', ...
   'Background','white', ...
   'Foreground','black', ...
   'String',stringVal,'Value',mu, ...
   'UserData',NoGVFIterations,...
   'Enable',onoff,...
   'callback',callbackStr);

% Radio Button 3 			- Normalized
ButtPosY = ButtPosY-2*ButtDist-ButtHeight;
labelPos=[ButtPosX ButtPosY ButtWidth TextHeight];
labelStr='Normailze';
callbackStr='RadioUPDATE';

btnPos=[ButtPosX ButtPosY ButtWidth ButtHeight];
HDRadioButton3=uicontrol('Parent', HDmainf, ...
   'BusyAction','Queue','Interruptible','off',...
   'Style','radiobutton', ...
   'Units','pixels', ...
   'Position',labelPos, ...
   'String',labelStr, ...
   'value',VectorFieldButt(3),'Userdata',VectorFieldButt(3), ...
   'Callback',callbackStr);

% help for menu1
str='Click on images for magnification.|';
str=strcat(str,'~\bf<--Back|\rmBack to the previous menu.|');
str=strcat(str,'~\bfNext-->|\rmCalculates external force|vector field.|');
str=strcat(str,'~\bfStandard vector field|\rmCalculates standard external|force vector field using gradient.|~\it [u,v] = gradient2(Image2);|');
str=strcat(str,'~\bfGVF field|\rmCalculates Gradient Vector Field|external force.|~\it [u,v] = GVF(Image2, mu, NoGVFIterations)|;');
str=strcat(str,'~\bf  Mu (\mu)|  \rmParameter for GVF field.|  (See Theoretical back grounds)|');
str=strcat(str,'~\bf  Iterations|  \rmNumber of iterations in|  calculating GVF.|');
str=strcat(str,'~\bfNormalize|\rmNormalize vectors in vector field.|~\it mag = sqrt(u.*u+v.*v);|\it px = u./(mag+1e-10); py = v./(mag+1e-10);|');

str=strcat(str,'|~\bfTheoretical backgrounds|~\rmStandard vector external vector|field is calculated as|~  \rmF_e_x_t = - \nabla f|');
str=strcat(str,'~\rmGVF vector field is calculated|in order to minimize|~  \rm\epsilon = \int\int\mu(u_x^2+u_y^2+v_x^2+v_y^2)+\mid\nablaf\mid^2\mid\bfv\rm-\nablaf\mid^2dxdy|');
str=strcat(str,'~where|~  \bfv\rm(x,y)=[u(x,y) v(x,y)]');

WriteHelp(str);


%%%% define local menu objects, that should be deletet 
VectorOfLocalMenuHD=[HDButton1 HDButton2 HDedit1 HDtext1 HDedit2 HDtext2 HDMenuAxes HDRadioButton1 HDRadioButton2 HDRadioButton3];
pause(0.1);

%%%% blured and draw the picture

if sigma~=0 
   f = gaussianBlur(Image1,sigma);
else
   f = Image1;
end;

if GradientOn 
	Image2 = abs(gradient2(f));else 
   Image2 = f;
end;

%Image2 = Image2/max(max(Image2)); % scale the edge map to [0,1]
%set(HDbluredPic,'Visible','Off');
global BluredPic;
if BluredPic==1
   s=strcat('Blured image   (sigma=',num2str(sigma),')');
	HDbluredPic=subplot(222); imdisp(-Image2); title(s);
   set(HDbluredPic,'Units', 'pixels','Position',[adgeD*2+xsize adgeD*2+ysize xsize ysize],'Units', 'normal');
   BluredPic=0;
end

HD=get(HDbluredPic,'Children');
set(HD,'ButtonDownFcn','SnakeIter(''Pic2Click'')');

⌨️ 快捷键说明

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