mirror of
https://github.com/c-sooyoung/fold_slice.git
synced 2026-09-17 22:49:08 +09:00
99 lines
2.9 KiB
Matlab
99 lines
2.9 KiB
Matlab
function [im_out,range]=imagesc_tomo( varargin )
|
|
% Function [im_out]=imagesc_tomo( varargin )
|
|
% Parameters:
|
|
% data - 3D array to be shown
|
|
% colormap - name of standard matlab colormap, default = bone
|
|
% clim - range of the colorbar, default is [] (auto range)
|
|
% axis - cell of strings with axis parameters, eg. {'image', 'off'}
|
|
|
|
import math.sp_quantile
|
|
import plotting.imagesc3D
|
|
|
|
|
|
par = inputParser;
|
|
par.addOptional('data', [])
|
|
par.addParameter('colormap', 'bone' )
|
|
par.addParameter('clim', [] , @isnumeric )
|
|
par.addParameter('axis', {'image', 'off'}, @iscell)
|
|
par.addParameter('colorbar',false, @islogical)
|
|
|
|
par.parse(varargin{:})
|
|
r = par.Results;
|
|
data = r.data;
|
|
|
|
if ismatrix(data)
|
|
imagesc3D(data);
|
|
return
|
|
end
|
|
|
|
Npix = size(data);
|
|
cntr = ceil(Npix/2);
|
|
|
|
if isa(data, 'gpuArray')
|
|
data = gather(data); % download data from GPU
|
|
end
|
|
|
|
if isempty(r.clim)
|
|
range = sp_quantile(data, [1e-3, 1-1e-3], max(1, ceil(sqrt(numel(data))/1e3)));
|
|
else
|
|
range = r.clim;
|
|
end
|
|
%disp('range:')
|
|
%disp(range)
|
|
|
|
colormap(r.colormap)
|
|
|
|
args = {'show_play_button', false, 'show_edit_box', false };
|
|
|
|
ax(1) = subplot(2,3,1);
|
|
imagesc3D(rot90(permute(data, [2,3,1]),1), 'init_frame', cntr(1), 'slider_position',slider_pos(ax(1)), args{:});
|
|
axis(r.axis{:});
|
|
if isreal(data) && range(1) < range(2); caxis(range); end
|
|
if r.colorbar; colorbar; end
|
|
title('Centralslice xz');
|
|
ax(2) = subplot(2,3,2);
|
|
imagesc3D(rot90(permute(data, [1,3,2]),1), 'init_frame', cntr(2),'slider_position',slider_pos(ax(2)), args{:});
|
|
axis(r.axis{:});
|
|
if isreal(data) && range(1) < range(2); caxis(range); end
|
|
if r.colorbar; colorbar; end
|
|
title('Centralslice yz');
|
|
ax(3) = subplot(2,3,3);
|
|
imagesc3D(data, 'init_frame', cntr(3),'slider_position',slider_pos(ax(3)), args{:});
|
|
axis(r.axis{:});
|
|
if isreal(data) && range(1) < range(2); caxis(range); end
|
|
if r.colorbar; colorbar; end
|
|
title('Centralslice xy');
|
|
ax(4) = subplot(2,3,4);
|
|
imagesc3D(rot90(squeeze(sum(data,1)),1));
|
|
axis(r.axis{:});
|
|
title('Projection xz');
|
|
if r.colorbar; colorbar; end
|
|
ax(5) = subplot(2,3,5);
|
|
imagesc3D(rot90(squeeze(sum(data,2)),1));
|
|
axis(r.axis{:});
|
|
title('Projection yz');
|
|
if r.colorbar; colorbar; end
|
|
ax(6) = subplot(2,3,6);
|
|
imagesc3D(squeeze(sum(data,3)));
|
|
axis(r.axis{:});
|
|
title('Projection xy');
|
|
if r.colorbar; colorbar; end
|
|
|
|
% link together axis from the projections and the slices
|
|
linkaxes(ax([1,4]), 'xy')
|
|
linkaxes(ax([2,5]), 'xy')
|
|
linkaxes(ax([3,6]), 'xy')
|
|
|
|
if nargout > 0
|
|
im_out = ax;
|
|
end
|
|
|
|
end
|
|
|
|
function slider_default = slider_pos(ax)
|
|
pos = ax.Position;
|
|
slider_default = [pos(1)+pos(3)/2-0.095 pos(2)-0.045 0.2 0.04];
|
|
end
|
|
|
|
|