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