mirror of
https://github.com/c-sooyoung/fold_slice.git
synced 2026-09-17 19:39:08 +09:00
initial commit
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user