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