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

📄 landmarksvol.m

📁 mri_toolbox是一个工具用来MRI. 来自于SourceForge, 我上传这个软件,希望能结识对医疗软件感兴趣的兄弟.
💻 M
📖 第 1 页 / 共 3 页
字号:
%landmarksvol

function landmarksvol(argu)
% selects points (landmarks) in volume vol

% mcc -B sglcpp landmarksvol.m -d d:\mymatlab\compres

% Rolando.Grave@hcuge.ch 23-6-2000

% estructura usada para los datos y guardada en el 'UserData' de gcf
% Handles:
% data.hfig ==> current figure
% data.hiomenu ==> Input Output menu principal
% data.hreadfld
% data.hreadslp
% data.hreadbin
% data.hreadana
% data.hxcte
% data.hsliderx
% data.himagex
% data.hycte
% data.hslidery
% data.hzcte
% data.hsliderz
% data.hfilein
% data.hfileout
% data.hsavepoint
% data.hedit
% data.hroiselect
% data.hsaveimage
% data.h
% data.hupdatecenter
% data.hplotsphere
% data.hselectslp 
% ********datos********
% data.nx
% data.x
% data.ny
% data.y
% data.nz
% data.z
% data.vol
% data.max
% data.min
% data.linearindex (used only for slp input data)
% data.filein
% data.fileout
% data.volchanged
% data.center (center of the sphere) only for analize files
% data.radio (radio of the sphere)   only for analize files
% data.header ( header of the analyze file or to save in analyze format)

if ~nargin argu='start'; end
argu=lower(argu);

switch argu,
case 'start',
   % image preferences
   iptsetpref('ImshowAxesVisible','on')
   iptsetpref('ImshowBorder','loose')
   % volume data initialization
   data.vol=repmat(uint16(1),[100,100,100]);
   data=nuevovolumen(data,argu);
   data.linearindex=[];
   data.center=[0,0,0];
   data.radio=-1;
   data.header=[];
   
   % handle of the figure
   data.hfig=figure('Name',[blanks(10),'Selecting points in a 3D volume (e.g. MRI)'],...
      'Units','Normalized','NumberTitle','off',...
      'DefaultUicontrolUnits','Normalized');
   
   % IO-menu
   data.hiomenu=uimenu(data.hfig,'Label','&IO menu ');
   data.hreadmri=uimenu(data.hiomenu,'Label','Input from &FLD file ','Callback','landmarksvol(''readfld'')');
   data.hreadslp=uimenu(data.hiomenu,'Label','Input from S&PI / SPR file ','Callback','landmarksvol(''readslp'')');
   data.hreadbin=uimenu(data.hiomenu,'Label','Input from &Binary file ','Callback','landmarksvol(''readbin'')');
   data.hreadana=uimenu(data.hiomenu,'Label','Input from &Analize file ','Callback','landmarksvol(''readana'')');
   data.hfileout=uimenu(data.hiomenu,'Label','&Output file ','Callback','landmarksvol(''fileout'')');
   
   % handle for the xcte axis, image and slider
   data.hxcte=axes; title(['X = ',num2str(data.x)])
   set(data.hxcte,'Tag','xcte',...
      'Position',[ 0.0232142857142857 0.597619047619048 0.3 0.342857142857143 ],...
      'Xtick',[],'Ytick',[],'Ztick',[],'Box','on','Units','Normalized')
   
   data.hsliderx=uicontrol(data.hfig,'Style','slider','Tag','sliderx',...
      'Position',[ 0.0232142857142857 0.545238095238095 0.3 0.0428571428571429 ],...
      'TooltipString','<-- change  X  value -->',...
      'Callback','landmarksvol(''cambiax'')');

   % handle for the ycte axis and the slider
   data.hycte=axes; title(['Y = ',num2str(data.y)])
   set(data.hycte,'Tag','ycte',...
      'Position',[ 0.355357142857143 0.6 0.3 0.342857142857143 ],...
      'Xtick',[],'Ytick',[],'Ztick',[],'Box','on','Units','Normalized')
   
   data.hslidery=uicontrol(data.hfig,'Style','slider','Tag','slidery',...
      'Position',[ 0.355357142857143 0.542857142857143 0.3 0.0428571428571429 ],...
      'TooltipString','<-- change  Y  value -->',...
      'Callback','landmarksvol(''cambiay'')');

   
   % handle for the zcte axis and slider
   data.hzcte=axes; title(['Z = ',num2str(data.z)])
   set(data.hzcte,'Tag','zcte',...
      'Position',[ 0.683928571428571 0.597619047619048 0.3 0.342857142857143 ],...
      'Xtick',[],'Ytick',[],'Ztick',[],'Box','on','Units','Normalized')
   
   data.hsliderz=uicontrol(data.hfig,'Style','slider','Tag','sliderz',...
      'Position',[ 0.683928571428571 0.538095238095238 0.3 0.0428571428571429 ],...
      'TooltipString','<-- change  Z  value -->',...
      'Callback','landmarksvol(''cambiaz'')');
   
   data=actualiza_sliders(data);
   
   % handle for the current value and edition
   kk3=uicontrol(data.hfig,'Style','Text',...
      'Position',[ 0.0267857142857143 0.454761904761905 0.253571428571429 0.0476190476190476 ],...
      'TooltipString',' Change current pixel value ',...
      'String','Edit Current Value ==>','Fontsize',9','FontWeight','bold');
   
   data.hedit=uicontrol(data.hfig,'Style','edit',...
      'Position',[ 0.280357142857143 0.447619047619048 0.105357142857143 0.0619047619047619 ],...
      'TooltipString',' Change current pixel value ',...
      'String','0','Callback','landmarksvol(''editval'')');
   data.volchanged=0;
   set(data.hedit,'String',num2str(double(data.vol(data.x,data.y,data.z))));
   
   
   % input and output files
   kk1=uicontrol(data.hfig,'Style','Text',...
      'Position',[ 0.674107142857143 0.428571428571429 0.305059523809524 0.0555555555555556 ],...
      'String','Input file (IO menu)','Fontsize',9','FontWeight','bold',...
      'TooltipString',' Select Input file in IO menu ');
   
   data.filein='No file selected';
   data.hfilein=uicontrol(data.hfig,'Style','Text',...
      'Position',[ 0.675595238095238 0.373015873015873 0.305059523809524 0.0555555555555556 ],...
      'String',data.filein,'Fontsize',10','FontWeight','bold',...
      'ForegroundColor','red','TooltipString',' Select Input file in IO menu ');
   
   kk2=uicontrol(data.hfig,'Style','Text',...
      'Position',[ 0.674107142857143 0.285714285714286 0.305059523809524 0.0555555555555556 ],...
      'String','Output file (IO menu)','Fontsize',9','FontWeight','bold',...
      'TooltipString',' Select Output file in IO menu ');
   
   data.fileout='No file selected';
   data.hfileout=uicontrol(data.hfig,'Style','Text',...
      'Position',[ 0.674107142857143 0.23015873015873 0.305059523809524 0.0555555555555556 ],...
      'String',data.fileout,'Fontsize',10','FontWeight','bold',...
      'TooltipString',' Select Output file in IO menu ',...
      'ForegroundColor','red');
   
   data.hsavepoint=uicontrol(data.hfig,'Style','push','Tag','savepoint',...
      'Position',[ 0.68452380952381 0.111111111111111 0.287202380952381 0.0674603174603175 ],...
      'String','Save current point (x,y,z)',...
      'Enable','off',...
      'TooltipString',' Save current X,Y,Z to Output file ',...
      'Callback','landmarksvol(''savepoint'')');
   
   data.hroiselect=uicontrol(data.hfig,'Style','push','Tag','roiselect',...
      'Position',[ 0.686011904761905 0.0214285714285714 0.2875 0.0690476190476191 ],...
      'String',' Select & Save  ROI ',...
      'Enable','on',...
      'TooltipString',' Select ROI with mouse and save in User file',...
      'Callback','landmarksvol(''roiselect'')');
   
   data.hsaveimage=uicontrol(data.hfig,'Style','push','Tag','saveimage',...
      'Position',[ 0.0392857142857143 0.030952380952381 0.2875 0.0690476190476191 ],...
      'String','Save Image',...
      'Enable','off',...
      'TooltipString',' Save image in Analyze format ',...
      'Callback','landmarksvol(''saveimage'')');
   
   data.hchangeimage=uicontrol(data.hfig,'Style','push','Tag','changeimage',...
      'Position',[ 0.0392857142857143 0.10952380952381 0.2875 0.0690476190476191 ],...
      'String','Change Image values',...
      'Enable','on',...
      'TooltipString',' Edit / Change pixel values by group ',...
      'Callback','landmarksvol(''changeimage'')');
   
data.hupdatecenter=uicontrol(data.hfig,'Style','push','Tag','updatecenter',...
      'Position',[ 0.0392857142857143 0.188095238095238 0.2875 0.0690476190476191 ],...
      'String','Update center',...
      'Enable','off',...
      'TooltipString',' Move to the integer closer to the center of the sphere ',...
      'Callback','landmarksvol(''updatecenter'')');

  data.hplotsphere=uicontrol(data.hfig,'Style','push','Tag','plotsphere',...
      'Position',[ 0.0392857142857143 0.266666666666667 0.2875 0.0690476190476191 ],...
      'String','Plot Sphere',...
      'Enable','off',...
      'TooltipString',' Plot best fitting sphere ',...
      'Callback','landmarksvol(''plotsphere'')');

  data.hselectslp=uicontrol(data.hfig,'Style','push','Tag','selectslp',...
      'Position',[ 0.0392857142857143 0.345 0.2875 0.0690476190476191 ],...
      'String','Solution Points Grid',...
      'Enable','off',...
      'TooltipString',' Select solution points in the gray matter  ',...
      'Callback','landmarksvol(''selectslp'')');
   
  pinta_data_puntoxyz(data)
   % para que no cree problemas si el cursor esta en la figura al comenzar
   set(data.hfig,'WindowButtonMotionFcn','landmarksvol(''movimiento'')',...
      'Interruptible','on');      

  % saving data
   set(data.hfig,'UserData',data)
   
case 'fileout'
   data=get(gcf,'Userdata');
   [filename, pathname] = uiputfile([data.filein,'.txt'], 'Save As');
   if filename~=0,
      data.fileout=[pathname,filename];
      if exist(data.fileout)==2,
         delete(data.fileout);
      end
      set(data.hfileout,'String',[pathname(1:3),'...\',filename])
      set(data.hsavepoint,'Enable','on')
      set(data.hfig,'UserData',data);
   end   
   
case 'savepoint'
   data=get(gcf,'Userdata');
   fid=fopen(data.fileout,'at');
   if isempty(data.linearindex),
      fprintf(fid,'%8d  %8d  %8d\n',[data.x,data.y,data.z])
   else % the volume position and the location in the slp file.
      otro=sub2ind([data.nx,data.ny,data.nz],data.x,data.y,data.z);
      pp=find(data.linearindex==otro);
      fprintf(fid,'%8d  %8d %8d %8d\n',[data.x,data.y,data.z,pp])
   end
   fclose(fid);
   
case 'readslp'
   data=get(gcf,'Userdata');
   [filename,pathname]=uigetfile('*.sp?',' File of solution points ');
   if filename~=0,
      data.vol=[];    data.linearindex=[];
      set(data.hfig,'WindowButtonMotionFcn','','Pointer','watch')
      data.filein=[pathname,filename];
      nada=load(data.filein);
      [data.vol,data.linearindex]=slp2vol(nada,[256,160,256]); clear nada %!!!!!
      data=nuevovolumen(data,argu);
      data=actualiza_sliders(data);
      % salvando data y pintando
      pinta_data_puntoxyz(data);
      set(data.hedit,'String',num2str(double(data.vol(data.x,data.y,data.z))));
      data.fileout='No file selected';
      set(data.hfileout,'String',data.fileout)
      set(data.hsaveimage,'Enable','off')
      set(data.hsavepoint,'Enable','off')
      set(data.hfilein,'String',[pathname(1:3),'...\',filename])
      set(data.hfig,'WindowButtonMotionFcn','landmarksvol(''movimiento'')',...
         'Interruptible','on','Pointer','arrow');      
      set(data.hfig,'UserData',data);
   end
   
case 'readfld'
   data=get(gcf,'Userdata');
   [data.vol,pathname,filename]=fld2vol;
   if filename~=0,
      set(data.hfig,'WindowButtonMotionFcn','','Pointer','watch')
      data.linearindex=[];
      data.filein=[pathname,filename];
      data=nuevovolumen(data,argu);
      data=actualiza_sliders(data);
      % salvando data y pintando
      pinta_data_puntoxyz(data)
      set(data.hedit,'String',num2str(double(data.vol(data.x,data.y,data.z))));
      data.fileout='No file selected';
      set(data.hfileout,'String',data.fileout)
      set(data.hsaveimage,'Enable','off')
      set(data.hsavepoint,'Enable','off')
      set(data.hfig,'WindowButtonMotionFcn','landmarksvol(''movimiento'')',...
         'Interruptible','on','Pointer','arrow');      
      set(data.hfilein,'String',[pathname(1:3),'...\',filename])
      set(data.hfig,'UserData',data);
   end
   
case 'readbin'

⌨️ 快捷键说明

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