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

📄 landmarksvol.m

📁 mri_toolbox是一个工具用来MRI. 来自于SourceForge, 我上传这个软件,希望能结识对医疗软件感兴趣的兄弟.
💻 M
📖 第 1 页 / 共 3 页
字号:
   data=get(gcf,'Userdata');
   [filename,pathname]=uigetfile('*.*',' Binary file containing the volume. Size(Vol)=[1..Nx,1..Ny,1..Nz ] ');
   if filename~=0,
      data.vol=[]; data.linearindex=[];
      set(data.hfig,'WindowButtonMotionFcn','','Pointer','watch')
      
      data.filein=[pathname,filename];
      prompt={'Number of slices in x (Nx):','Number of slices in y (Ny):',...
            'Number of slices in z (Nz):', 'File type :'};
      def={'0','0','0','uint8 or uint16 or uint32'};
      dlgTitle='*** Volume Dimensions [Nx,Ny,Nz]****';
      lineNo=1;
      answer=inputdlg(prompt,dlgTitle,lineNo,def);
      data.vol=Read_Binary_Vol4(data.filein,str2num(char(answer(1))),str2num(char(answer(2))),str2num(char(answer(3))),1,deblank(char(answer(4))));
      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 'readana'
   data=get(gcf,'Userdata');
   [filename,pathname]=uigetfile('*.img',' Analize image file ');
   if filename~=0,
      data.vol=[];   data.linearindex=[];
      set(data.hfig,'WindowButtonMotionFcn','','Pointer','watch')
      data.filein=[pathname,filename]; kk=length(data.filein);
      [data.vol,data.header]=Read_Ana_File(data.filein(1:kk-4));
                                                 
      data=nuevovolumen(data,argu);
      data=actualiza_sliders(data);
      status=ana_header_io(data.header,-6);
      if status==12345,
          temp=ana_header_io(data.header,-5);
          data.center=temp(1:3);
          data.radio=temp(4);
          set(data.hplotsphere,'Enable','on');
          set(data.hupdatecenter,'Enable','on');
          %set(data.hselectslp,'Enable','on');
      end
      set(data.hselectslp,'Enable','on');
      % salvando data y pintando
      pinta_data_puntoxyz(data);
      set(data.hedit,'String',num2str(double(data.vol(data.x,data.y,data.z))));
      set(data.hfilein,'String',[pathname(1:3),'...\',filename])
      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.hfig,'UserData',data);
   end
   
case 'movimiento', % flecha si esta fuera de las 3 figuras
   data=get(gcf,'Userdata');
   [Inx,Iny,Inz]=DondeEsta(data);
   
   if Inx,
      set(data.hfig,'Pointer','fullcrosshair',...
         'WindowButtonUpFcn','landmarksvol(''mouseselectx'')','Interruptible','on')
   elseif Iny
      set(data.hfig,'Pointer','fullcrosshair',...
         'WindowButtonUpFcn','landmarksvol(''mouseselecty'')','Interruptible','off')
   elseif Inz
       set(data.hfig,'Pointer','fullcrosshair',...
         'WindowButtonUpFcn','landmarksvol(''mouseselectz'')','Interruptible','off')
   else
      set(data.hfig,'Pointer','arrow','WindowButtonUpFcn','')
   end   
   
case 'mouseselectx',
   data=get(gcf,'Userdata');
   set(data.hfig,'Pointer','watch');
   cp=get(data.hxcte,'CurrentPoint');
   
   data.z=round(cp(2,1)); data=controla_mouse_point(data,3);
   data.y=round(cp(2,2)); data=controla_mouse_point(data,2);
   
   % salvando data y pintando
   data=new_sliders_pos(data);
   set(data.hedit,'String',num2str(double(data.vol(data.x,data.y,data.z))));
   pinta_data_puntoxyz(data)
   set(data.hfig,'Pointer','arrow');
   set(data.hfig,'UserData',data);
   
case 'mouseselecty',
   data=get(gcf,'Userdata');
   set(data.hfig,'Pointer','watch');
   cp=get(data.hycte,'CurrentPoint');
   
   data.z=round(cp(2,1)); data=controla_mouse_point(data,3);
   data.x=round(cp(2,2)); data=controla_mouse_point(data,1);
   
   % salvando data y pintando
   data=new_sliders_pos(data);
   set(data.hedit,'String',num2str(double(data.vol(data.x,data.y,data.z))));
   pinta_data_puntoxyz(data)
   set(data.hfig,'Pointer','arrow');
   set(data.hfig,'UserData',data);
   
case 'mouseselectz',
   data=get(gcf,'Userdata');
   set(data.hfig,'Pointer','watch');
   cp=get(data.hzcte,'CurrentPoint');
   
   data.y=round(cp(2,1)); data=controla_mouse_point(data,2);
   data.x=round(cp(2,2)); data=controla_mouse_point(data,1);
   
   % salvando data y pintando
   data=new_sliders_pos(data);
   set(data.hedit,'String',num2str(double(data.vol(data.x,data.y,data.z))));
   pinta_data_puntoxyz(data)
   set(data.hfig,'Pointer','arrow');
   set(data.hfig,'UserData',data);
   
case 'cambiax',
   data=get(gcf,'Userdata');
   set(data.hfig,'Pointer','watch');
   data.x=round(get(data.hsliderx,'Value'));
   set(data.hsliderx,'Value',data.x)
   set(data.hedit,'String',num2str(double(data.vol(data.x,data.y,data.z))));
   % salvando data y pintando
   pinta_data_puntoxyz(data)
   set(data.hfig,'Pointer','arrow');
   set(data.hfig,'UserData',data);
   
case 'cambiay',
   data=get(gcf,'Userdata');
   set(data.hfig,'Pointer','watch');
   data.y=round(get(data.hslidery,'Value'));
   set(data.hslidery,'Value',data.y)
   set(data.hedit,'String',num2str(double(data.vol(data.x,data.y,data.z))));
 % salvando data y pintando
   pinta_data_puntoxyz(data)
   set(data.hfig,'Pointer','arrow');
   set(data.hfig,'UserData',data);

case 'cambiaz',
   data=get(gcf,'Userdata');
   set(data.hfig,'Pointer','watch');
   data.z=round(get(data.hsliderz,'Value'));
   set(data.hsliderz,'Value',data.z)
   set(data.hedit,'String',num2str(double(data.vol(data.x,data.y,data.z))));
   % salvando data y pintando
   pinta_data_puntoxyz(data)
   set(data.hfig,'Pointer','arrow');
   set(data.hfig,'UserData',data);
   
case 'editval',
   data=get(gcf,'Userdata');
   valor=str2num(get(data.hedit,'String')),
   if ~isempty(valor) & ~isnan(valor) & length(valor)==1,
      data.vol(data.x,data.y,data.z)=valor;
      data.volchanged=1;
      set(data.hsaveimage,'Enable','on')
      data.min=min(data.vol(:));
      data.max=max(data.vol(:));
   else
     set(data.hedit,'String',num2str(double(data.vol(data.x,data.y,data.z))));
   end
  set(data.hfig,'UserData',data);
  
case 'saveimage'  %Salvar usando Ana_file
   data=get(gcf,'Userdata');
   set(data.hfig,'WindowButtonMotionFcn','');
   kk=length(data.filein);
   [filename,pathname]=uiputfile(data.filein, 'Save Transformed Image as :');
   if filename~=0,
      data.filein=[pathname,filename];  kk=length(data.filein);
      set(data.hfilein,'String',[pathname(1:3),'...\',filename])
      % analize format in action
      if isempty(data.header), data.header=IsAnalize(data); end
      Save_Ana_file(data.vol,data.header,data.filein(1:kk-4));
      % end of analize stuff
      set(data.hsaveimage,'Enable','off')
      data.volchanged=0;
   else
      myerror(' Image cannot be stored / filename');
   end
   set(data.hfig,'WindowButtonMotionFcn','landmarksvol(''movimiento'')',...
      'Interruptible','on');      
   set(data.hfig,'UserData',data); 
   
case 'changeimage'
    data=get(gcf,'Userdata');
    set(data.hfig,'WindowButtonMotionFcn','');
    dlgTitle=' Editing pixel values ';
    prompt={' Change all pixels with value : ',' To the new pixel value :'};
    def={num2str(double(data.vol(data.x,data.y,data.z))),'0'};
    lineNo=1;
    dimelo=inputdlg(prompt,dlgTitle,lineNo,def); 
    if ~isempty(dimelo),
        orival=str2num(deblank(char(dimelo(1))));
        kk=find(data.vol(:)==orival);
        newval=str2num(deblank(char(dimelo(2))));
        temp=data.vol(data.x,data.y,data.z);
        if (orival>=data.min) & (orival<=data.max) & ~isempty(kk)...
                & (newval>=0) & (newval<=65535) & abs(orival-newval)~=0,
            data.vol(kk)=newval;
            data.volchanged=1;
            data.min=min([data.min,newval]);
            data.max=max([data.max,newval]);
            if temp==orival, % update the "edit current value" value
                set(data.hedit,'String',char(dimelo(2)));
            end
            set(data.hsaveimage,'Enable','on')
        end
    end
    set(data.hfig,'WindowButtonMotionFcn','landmarksvol(''movimiento'')',...
        'Interruptible','on');      
    set(data.hfig,'UserData',data); 
    
case 'roiselect'
   data=get(gcf,'Userdata');
   set(data.hroiselect,'Enable','off');
   set(data.hfig,'WindowButtonMotionFcn','');
   kk=waitforbuttonpress;
   [Inx,Iny,Inz]=DondeEsta(data);
   if Inx,
      [z,y]=myroipoly(data.hxcte); [z,y]
      y(y<1)=1; y(y>data.ny)=data.ny;
      z(z<1)=1; z(z>data.nz)=data.nz;
      set(data.hroiselect,'Enable','on');
      set(data.hfig,'UserData',data);
      BW=roipoly(squeeze(data.vol(data.x,:,:)),z,y);
      [zz,yy]=find(BW); clear BW;
      xx=ones(size(yy))*data.x;
   elseif Iny,
      [z,x]=myroipoly(data.hycte);
      x(x<1)=1; x(x>data.nx)=data.nx;
      z(z<1)=1; z(z>data.ny)=data.nz;
      set(data.hroiselect,'Enable','on');
      set(data.hfig,'UserData',data);
      BW=roipoly(squeeze(data.vol(:,data.y,:)),z,x);
      [zz,xx]=find(BW); clear BW
      yy=ones(size(xx))*data.y;
   elseif Inz,
      [y,x]=myroipoly(data.hzcte);
      x(x<1)=1; x(x>data.nx)=data.nx;
      y(y<1)=1; y(y>data.ny)=data.ny;
      set(data.hroiselect,'Enable','on');
      set(data.hfig,'UserData',data);
      Idata=getimage(data.hzcte);clear Idata
      BW=roipoly(squeeze(data.vol(:,:,data.z)),y,x);
      [xx,yy]=find(BW); clear BW
      zz=ones(size(xx))*data.z;
   end
   [filename,pathname]=uiputfile(data.fileout, 'Save ROI in file ( If file already exists just APPENDS!!)');
   if filename~=0,
      data.fileout=[pathname,filename];
      set(data.hfileout,'String',[pathname(1:3),'...\',filename])
      set(data.hsavepoint,'Enable','on')
      fid=fopen(data.fileout,'at');
      if isempty(data.linearindex),
         temp=[xx(:),yy(:),zz(:)];
         for kk=1:length(xx), fprintf(fid,'%8d  %8d  %8d\n',temp(kk,:)); end
      else % the volume position and the location in the slp file.
         otro=sub2ind([data.nx,data.ny,data.nz],xx,yy,zz);
         for kk=1:length(xx),
            pp=find(data.linearindex==otro(kk));
            if isempty(pp), pp=-1111; end
            temp=[xx(kk),yy(kk),zz(kk),pp];
            fprintf(fid,'%8d  %8d %8d %8d\n',temp); 
         end
      end
      fclose(fid);
   else
      myerror(' ROI cannot be stored / filename');
   end
   set(data.hfig,'WindowButtonMotionFcn','landmarksvol(''movimiento'')',...
      'Interruptible','on');      
   set(data.hfig,'UserData',data); 
   
case 'plotsphere'

⌨️ 快捷键说明

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