Skip to content
Snippets Groups Projects
Commit cd705a10 authored by Wolfgang Ludwig's avatar Wolfgang Ludwig
Browse files

enabling psf from parameters file for 3DTV reconstruction of grains

parent 6e00bd7a
No related branches found
No related tags found
No related merge requests found
function proj = gtAstraCreateProjections(volume, proj_geom, proj_size, do_permute, proj_model) function proj = gtAstraCreateProjections(volume, proj_geom, proj_size, do_permute, proj_model, psf)
% GTASTRACREATEPROJECTIONS Calculate oblique angle projections of a volume % GTASTRACREATEPROJECTIONS Calculate oblique angle projections of a volume
% proj = gtAstraCreateProjections(volume, proj_geom, proj_size, [do_permute], [proj_model]) % proj = gtAstraCreateProjections(volume, proj_geom, proj_size, [do_permute], [proj_model])
% ----------------------------------------------------------------------------------------- % -----------------------------------------------------------------------------------------
...@@ -26,10 +26,10 @@ if (~OK) ...@@ -26,10 +26,10 @@ if (~OK)
throw(mexc) throw(mexc)
end end
if ~exist('do_permute','var') || isempty(do_permute) if (~exist('do_permute','var') || isempty(do_permute))
do_permute = false; do_permute = false;
end end
if ~exist('proj_model','var') || isempty(proj_model) if (~exist('proj_model','var') || isempty(proj_model))
proj_model = 'parallel3d_vec'; proj_model = 'parallel3d_vec';
disp(['using ' proj_model ' as projection model']) disp(['using ' proj_model ' as projection model'])
end end
...@@ -53,7 +53,13 @@ vol_geom = astra_create_vol_geom(yvol, xvol, zvol); ...@@ -53,7 +53,13 @@ vol_geom = astra_create_vol_geom(yvol, xvol, zvol);
proj_id = astra_create_sino3d_cuda(volume, proj_geom, vol_geom); proj_id = astra_create_sino3d_cuda(volume, proj_geom, vol_geom);
proj = astra_mex_data3d('get', proj_id); proj = astra_mex_data3d('get', proj_id);
if do_permute if (exist('psf','var') && ~isempty(psf))
psf_obj = GtPSF();
psf_obj.set_psf_direct(proj.psf, [hsize, vsize]);
proj = psf_obj.apply_psf_direct(proj);
end
if (do_permute)
proj = permute(proj, [3 1 2]); proj = permute(proj, [3 1 2]);
proj = reshape(proj, vsize, hsize, 1, nproj); proj = reshape(proj, vsize, hsize, 1, nproj);
end end
......
...@@ -36,6 +36,11 @@ function varargout = gtAstraReconstructGrain(grainID, phaseID, parameters) ...@@ -36,6 +36,11 @@ function varargout = gtAstraReconstructGrain(grainID, phaseID, parameters)
gr.proj.stack = gr.proj.stack(:, gr.proj.selected, :); gr.proj.stack = gr.proj.stack(:, gr.proj.selected, :);
gr.proj.geom = gr.proj.geom(gr.proj.selected, :); gr.proj.geom = gr.proj.geom(gr.proj.selected, :);
if (isfield(parameters.rec.grains.options, 'psf') ...
&& ~isempty(parameters.rec.grains.options.psf))
gr.proj.psf = parameters.rec.grains.options.psf;
end
is_cone = isfield(parameters.labgeo, 'sourcepoint') ... is_cone = isfield(parameters.labgeo, 'sourcepoint') ...
&& (~isempty(parameters.labgeo.sourcepoint)); && (~isempty(parameters.labgeo.sourcepoint));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment