diff options
author | Willem Jan Palenstijn <wjp@usecode.org> | 2015-02-26 16:30:43 +0100 |
---|---|---|
committer | Willem Jan Palenstijn <wjp@usecode.org> | 2015-02-26 16:30:43 +0100 |
commit | 9e2bb413a937aefe57f4fcf343413543ae57258a (patch) | |
tree | f4d87d40ae17775e4e3c744476d31d56b5dba64b /samples/matlab/s010_supersampling.m | |
parent | 0ca00f4c671d6d583ae77838d3e0d4fcd411f077 (diff) | |
parent | e0aca18f687e9f49223ffb24b9be354bed4b150a (diff) | |
download | astra-9e2bb413a937aefe57f4fcf343413543ae57258a.tar.gz astra-9e2bb413a937aefe57f4fcf343413543ae57258a.tar.bz2 astra-9e2bb413a937aefe57f4fcf343413543ae57258a.tar.xz astra-9e2bb413a937aefe57f4fcf343413543ae57258a.zip |
Merge pull request #16 from dmpelt/python-interface
Add Python interface
Diffstat (limited to 'samples/matlab/s010_supersampling.m')
-rw-r--r-- | samples/matlab/s010_supersampling.m | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/samples/matlab/s010_supersampling.m b/samples/matlab/s010_supersampling.m new file mode 100644 index 0000000..80f6f56 --- /dev/null +++ b/samples/matlab/s010_supersampling.m @@ -0,0 +1,58 @@ +% ----------------------------------------------------------------------- +% This file is part of the ASTRA Toolbox +% +% Copyright: 2010-2015, iMinds-Vision Lab, University of Antwerp +% 2014-2015, CWI, Amsterdam +% License: Open Source under GPLv3 +% Contact: astra@uantwerpen.be +% Website: http://sf.net/projects/astra-toolbox +% ----------------------------------------------------------------------- + +vol_geom = astra_create_vol_geom(256, 256); +proj_geom = astra_create_proj_geom('parallel', 3.0, 128, linspace2(0,pi,180)); +P = phantom(256); + +% Because the astra_create_sino_gpu wrapper does not have support for +% all possible algorithm options, we manually create a sinogram +phantom_id = astra_mex_data2d('create', '-vol', vol_geom, P); +sinogram_id = astra_mex_data2d('create', '-sino', proj_geom); +cfg = astra_struct('FP_CUDA'); +cfg.VolumeDataId = phantom_id; +cfg.ProjectionDataId = sinogram_id; + +% Set up 3 rays per detector element +cfg.option.DetectorSuperSampling = 3; + +alg_id = astra_mex_algorithm('create', cfg); +astra_mex_algorithm('run', alg_id); +astra_mex_algorithm('delete', alg_id); +astra_mex_data2d('delete', phantom_id); + +sinogram3 = astra_mex_data2d('get', sinogram_id); + +figure(1); imshow(P, []); +figure(2); imshow(sinogram3, []); + + +% Create a reconstruction, also using supersampling +rec_id = astra_mex_data2d('create', '-vol', vol_geom); +cfg = astra_struct('SIRT_CUDA'); +cfg.ReconstructionDataId = rec_id; +cfg.ProjectionDataId = sinogram_id; +% Set up 3 rays per detector element +cfg.option.DetectorSuperSampling = 3; + +% There is also an option for supersampling during the backprojection step. +% This should be used if your detector pixels are smaller than the voxels. + +% Set up 2 rays per image pixel dimension, for 4 rays total per image pixel. +% cfg.option.PixelSuperSampling = 2; + + +alg_id = astra_mex_algorithm('create', cfg); +astra_mex_algorithm('iterate', alg_id, 150); +astra_mex_algorithm('delete', alg_id); + +rec = astra_mex_data2d('get', rec_id); +figure(3); imshow(rec, []); + |