📄 avw_view.m
字号:
Saxi = squeeze(AVWVIEW.avw.img(:,:,AVWVIEW.slices.axi));
set(AVWVIEW.handles.axial_image,'CData',Saxi');
end
if isfield(AVWVIEW.handles,'axial_sliderN'),
set(AVWVIEW.handles.axial_sliderN,'String',num2str(AVWVIEW.slices.axi));
set(AVWVIEW.handles.axial_sliderN,'Value',AVWVIEW.slices.axi);
end
if isfield(AVWVIEW.handles,'axial_slider'),
set(AVWVIEW.handles.axial_slider,'Value',AVWVIEW.slices.axi);
end;
return
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function coronal_update(AVWVIEW)
if isfield(AVWVIEW.handles,'coronal_image'),
Scor = squeeze(AVWVIEW.avw.img(:,AVWVIEW.slices.cor,:));
set(AVWVIEW.handles.coronal_image,'CData',Scor');
end
if isfield(AVWVIEW.handles,'coronal_sliderN'),
set(AVWVIEW.handles.coronal_sliderN,'String',num2str(AVWVIEW.slices.cor));
set(AVWVIEW.handles.coronal_sliderN,'Value',AVWVIEW.slices.cor);
end
if isfield(AVWVIEW.handles,'coronal_slider'),
set(AVWVIEW.handles.coronal_slider,'Value',AVWVIEW.slices.cor);
end;
return
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function sagittal_update(AVWVIEW)
if isfield(AVWVIEW.handles,'sagittal_image'),
Ssag = squeeze(AVWVIEW.avw.img(AVWVIEW.slices.sag,:,:));
set(AVWVIEW.handles.sagittal_image,'CData',Ssag');
end
if isfield(AVWVIEW.handles,'sagittal_sliderN'),
set(AVWVIEW.handles.sagittal_sliderN,'String',num2str(AVWVIEW.slices.sag));
set(AVWVIEW.handles.sagittal_sliderN,'Value',AVWVIEW.slices.sag);
end
if isfield(AVWVIEW.handles,'sagittal_slider'),
set(AVWVIEW.handles.sagittal_slider,'Value',AVWVIEW.slices.sag);
end;
return
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function AVWVIEW = set_crosshairs(AVWVIEW)
current_axes = gca;
if isfield(AVWVIEW.handles,'axial_axes'),
axes(AVWVIEW.handles.axial_axes);
if ishandle(AVWVIEW.handles.axial_xline),
delete(AVWVIEW.handles.axial_xline);
end
if ishandle(AVWVIEW.handles.axial_yline),
delete(AVWVIEW.handles.axial_yline);
end
AVWVIEW.handles.axial_xlim = get(AVWVIEW.handles.axial_axes,'Xlim');
AVWVIEW.handles.axial_ylim = get(AVWVIEW.handles.axial_axes,'Ylim');
AVWVIEW.handles.axial_xline = line('Xdata',[AVWVIEW.slices.sag AVWVIEW.slices.sag],'Ydata',AVWVIEW.handles.axial_ylim);
AVWVIEW.handles.axial_yline = line('Ydata',[AVWVIEW.slices.cor AVWVIEW.slices.cor],'Xdata',AVWVIEW.handles.axial_xlim);
set(AVWVIEW.handles.axial_xline,'Color','b','EraseMode','xor','Tag','XLINE');
set(AVWVIEW.handles.axial_yline,'Color','b','EraseMode','xor','Tag','YLINE');
if get(AVWVIEW.handles.crosshairs,'value'),
set(AVWVIEW.handles.axial_xline,'visible','on');
set(AVWVIEW.handles.axial_yline,'visible','on');
else
set(AVWVIEW.handles.axial_xline,'visible','off');
set(AVWVIEW.handles.axial_yline,'visible','off');
end
end
if isfield(AVWVIEW.handles,'coronal_axes'),
axes(AVWVIEW.handles.coronal_axes);
if ishandle(AVWVIEW.handles.coronal_xline),
delete(AVWVIEW.handles.coronal_xline);
end
if ishandle(AVWVIEW.handles.coronal_yline),
delete(AVWVIEW.handles.coronal_yline);
end
AVWVIEW.handles.coronal_xlim = get(AVWVIEW.handles.coronal_axes,'Xlim');
AVWVIEW.handles.coronal_ylim = get(AVWVIEW.handles.coronal_axes,'Ylim');
AVWVIEW.handles.coronal_xline = line('Xdata',[AVWVIEW.slices.sag AVWVIEW.slices.sag],'Ydata',AVWVIEW.handles.coronal_ylim);
AVWVIEW.handles.coronal_yline = line('Ydata',[AVWVIEW.slices.axi AVWVIEW.slices.axi],'Xdata',AVWVIEW.handles.coronal_xlim);
set(AVWVIEW.handles.coronal_xline,'Color','b','EraseMode','xor','Tag','XLINE');
set(AVWVIEW.handles.coronal_yline,'Color','b','EraseMode','xor','Tag','YLINE');
if get(AVWVIEW.handles.crosshairs,'value'),
set(AVWVIEW.handles.coronal_xline,'visible','on');
set(AVWVIEW.handles.coronal_yline,'visible','on');
else
set(AVWVIEW.handles.coronal_xline,'visible','off');
set(AVWVIEW.handles.coronal_yline,'visible','off');
end
end
if isfield(AVWVIEW.handles,'sagittal_axes'),
axes(AVWVIEW.handles.sagittal_axes);
if ishandle(AVWVIEW.handles.sagittal_xline),
delete(AVWVIEW.handles.sagittal_xline);
end
if ishandle(AVWVIEW.handles.sagittal_yline),
delete(AVWVIEW.handles.sagittal_yline);
end
AVWVIEW.handles.sagittal_xlim = get(AVWVIEW.handles.sagittal_axes,'Xlim');
AVWVIEW.handles.sagittal_ylim = get(AVWVIEW.handles.sagittal_axes,'Ylim');
AVWVIEW.handles.sagittal_xline = line('Xdata',[AVWVIEW.slices.cor AVWVIEW.slices.cor],'Ydata',AVWVIEW.handles.sagittal_ylim);
AVWVIEW.handles.sagittal_yline = line('Ydata',[AVWVIEW.slices.axi AVWVIEW.slices.axi],'Xdata',AVWVIEW.handles.sagittal_xlim);
set(AVWVIEW.handles.sagittal_xline,'Color','b','EraseMode','xor','Tag','XLINE');
set(AVWVIEW.handles.sagittal_yline,'Color','b','EraseMode','xor','Tag','YLINE');
if get(AVWVIEW.handles.crosshairs,'value'),
set(AVWVIEW.handles.sagittal_xline,'visible','on');
set(AVWVIEW.handles.sagittal_yline,'visible','on');
else
set(AVWVIEW.handles.sagittal_xline,'visible','off');
set(AVWVIEW.handles.sagittal_yline,'visible','off');
end
end
axes(current_axes);
return
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function AVWVIEW = set_coordinates(AVWVIEW)
% set the axis coordinates to voxels, mm or meters
s = size(AVWVIEW.avw.img);
if length(s) > 0, xdim = s(1); else xdim = 1; end
if length(s) > 1, ydim = s(2); else ydim = 1; end
if length(s) > 2, zdim = s(3); else zdim = 1; end
% initialise for voxel coordinates
xpixdim = double(AVWVIEW.avw.hdr.dime.pixdim(2));
ypixdim = double(AVWVIEW.avw.hdr.dime.pixdim(3));
zpixdim = double(AVWVIEW.avw.hdr.dime.pixdim(4));
xdata = [0 xdim];
ydata = [0 ydim];
zdata = [0 zdim];
aspect = 1./AVWVIEW.daspect; %AVWVIEW.avw.hdr.dime.pixdim(2:4);
if get(AVWVIEW.handles.coord,'value') == 2, % mm
xdata = xdata .* xpixdim;
ydata = ydata .* ypixdim;
zdata = zdata .* zpixdim;
aspect = [1 1 1];
end
if get(AVWVIEW.handles.coord,'value') == 3, % meters
xpixdim = xpixdim / 1000;
ypixdim = ypixdim / 1000;
zpixdim = zpixdim / 1000;
xdata = xdata .* xpixdim;
ydata = ydata .* ypixdim;
zdata = zdata .* zpixdim;
aspect = [1 1 1];
end
if isfield(AVWVIEW.handles,'axial_image'),
set(AVWVIEW.handles.axial_axes,'Xlim',xdata);
set(AVWVIEW.handles.axial_axes,'Ylim',ydata);
set(AVWVIEW.handles.axial_axes,'Zlim',zdata);
set(AVWVIEW.handles.axial_image,'Xdata',xdata);
set(AVWVIEW.handles.axial_image,'Ydata',ydata);
daspect(AVWVIEW.handles.axial_axes,aspect([1 2 3]));
end;
if isfield(AVWVIEW.handles,'coronal_image'),
set(AVWVIEW.handles.coronal_axes,'Xlim',xdata);
set(AVWVIEW.handles.coronal_axes,'Ylim',zdata);
set(AVWVIEW.handles.coronal_axes,'Zlim',ydata);
set(AVWVIEW.handles.coronal_image,'Xdata',xdata);
set(AVWVIEW.handles.coronal_image,'Ydata',zdata);
daspect(AVWVIEW.handles.coronal_axes,aspect([1 3 2]));
end;
if isfield(AVWVIEW.handles,'sagittal_image'),
set(AVWVIEW.handles.sagittal_axes,'Xlim',ydata);
set(AVWVIEW.handles.sagittal_axes,'Ylim',zdata);
set(AVWVIEW.handles.sagittal_axes,'Zlim',xdata);
set(AVWVIEW.handles.sagittal_image,'Xdata',ydata);
set(AVWVIEW.handles.sagittal_image,'Ydata',zdata);
daspect(AVWVIEW.handles.sagittal_axes,aspect([2 3 1]));
end;
set_display_values(AVWVIEW);
return
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function AVWVIEW = get_current_position(AVWVIEW),
%[AVWVIEW, metric] = slices2metric(AVWVIEW);
switch AVWVIEW.view,
case 'sag',
currentpoint = get(get(AVWVIEW.handles.sagittal_image,'Parent'),'CurrentPoint');
metric.cor = currentpoint(1,1);
metric.axi = currentpoint(1,2);
metric.sag = get(AVWVIEW.handles.sagittal_slider,'Value');
case 'cor',
currentpoint = get(get(AVWVIEW.handles.coronal_image,'Parent'),'CurrentPoint');
metric.sag = currentpoint(2,1);
metric.axi = currentpoint(2,2);
metric.cor = get(AVWVIEW.handles.coronal_slider,'Value');
case 'axi',
currentpoint = get(get(AVWVIEW.handles.axial_image,'Parent'),'CurrentPoint');
metric.sag = currentpoint(2,1);
metric.cor = currentpoint(2,2);
metric.axi = get(AVWVIEW.handles.axial_slider,'Value');
end
AVWVIEW = metric2slices(AVWVIEW,metric);
AVWVIEW = check_slices(AVWVIEW);
return
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function AVWVIEW = get_slider_position(AVWVIEW),
[AVWVIEW.slices.sag,AVWVIEW.slices.cor,AVWVIEW.slices.axi] = deal(0);
if isfield(AVWVIEW.handles,'sagittal_slider'),
if ishandle(AVWVIEW.handles.sagittal_slider),
AVWVIEW.slices.sag = round(get(AVWVIEW.handles.sagittal_slider,'Value'));
end
end
if AVWVIEW.slices.sag == 0,
if isfield(AVWVIEW.handles,'sagittal_sliderN'),
if ishandle(AVWVIEW.handles.sagittal_sliderN),
AVWVIEW.slices.sag = round(get(AVWVIEW.handles.sagittal_sliderN,'Value'));
end
end
end
if isfield(AVWVIEW.handles,'coronal_slider'),
if ishandle(AVWVIEW.handles.coronal_slider),
AVWVIEW.slices.cor = round(get(AVWVIEW.handles.coronal_slider,'Value'));
end
end
if AVWVIEW.slices.cor == 0,
if isfield(AVWVIEW.handles,'coronal_sliderN'),
if ishandle(AVWVIEW.handles.coronal_sliderN),
AVWVIEW.slices.cor = round(get(AVWVIEW.handles.coronal_sliderN,'Value'));
end
end
end
if isfield(AVWVIEW.handles,'axial_slider'),
if ishandle(AVWVIEW.handles.axial_slider),
AVWVIEW.slices.axi = round(get(AVWVIEW.handles.axial_slider,'Value'));
end
end
if AVWVIEW.slices.axi == 0,
if isfield(AVWVIEW.handles,'axial_sliderN'),
if ishandle(AVWVIEW.handles.axial_sliderN),
AVWVIEW.slices.axi = round(get(AVWVIEW.handles.axial_sliderN,'Value'));
end
end
end
AVWVIEW = check_slices(AVWVIEW);
return
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function AVWVIEW = check_slices(AVWVIEW),
adjust = 0;
[ SagSize, CorSize, AxiSize ] = size(AVWVIEW.avw.img);
if AVWVIEW.slices.sag > SagSize,
AVWVIEW.slices.sag = SagSize;
adjust = 1;
end;
if AVWVIEW.slices.sag < 1,
AVWVIEW.slices.sag = 1;
adjust = 1;
end;
if AVWVIEW.slices.cor > CorSize,
AVWVIEW.slices.cor = CorSize;
adjust = 1;
end;
if AVWVIEW.slices.cor < 1,
AVWVIEW.slices.cor = 1;
adjust = 1;
end;
if AVWVIEW.slices.axi > AxiSize,
AVWVIEW.slices.axi = AxiSize;
adjust = 1;
end;
if AVWVIEW.slices.axi < 1,
AVWVIEW.slices.axi = 1;
adjust = 1;
end;
if adjust,
AVWVIEW = slices2metric(AVWVIEW);
end
return
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function set_display_values(AVWVIEW),
% get coordinates of selected voxel and the image intensity there
sag = AVWVIEW.slices.sag;
cor = AVWVIEW.slices.cor;
axi = AVWVIEW.slices.axi;
imgvalue = AVWVIEW.avw.img(sag,cor,axi);
set(AVWVIEW.handles.imval,'String',sprintf('%7.2f',imgvalue));
set(AVWVIEW.handles.imval,'Value',imgvalue);
% Now update the image position text for the selected voxel
[AVWVIEW, metric] = slices2metric(AVWVIEW);
sag = metric.sag;
cor = metric.cor;
axi = metric.axi;
string = sprintf('%7.3f %7.3f %7.3f',sag,cor,axi);
set(AVWVIEW.handles.impos,'String',string);
set(AVWVIEW.handles.impos,'Value',[sag,cor,axi]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -