diff --git a/5_reconstruction/gtAstraPrepareAbsorptionStack.m b/5_reconstruction/gtAstraPrepareAbsorptionStack.m index 102bbfa4868b1aa201b337778894a43608099cd1..d786590943b6333625eaf00bbd2903d64896bc43 100644 --- a/5_reconstruction/gtAstraPrepareAbsorptionStack.m +++ b/5_reconstruction/gtAstraPrepareAbsorptionStack.m @@ -1,4 +1,4 @@ -function proj = gtAstraPrepareAbsorptionStack(parameters) +function proj = gtAstraPrepareAbsorptionStack(parameters, rot_angle) % GTASTRAPREPAREABSORPTIONSTACK Assembles the 3D projection stack of absorption % images and saves them to file absorption_stack.mat % @@ -20,6 +20,10 @@ function proj = gtAstraPrepareAbsorptionStack(parameters) % Version 002 26-09-2012 by LNervo % Formatting, cleaning, commenting +if (~exist('rot_angle', 'var') || isempty(rot_angle)) + rot_angle = 0; +end + acq = parameters.acq; labgeo = parameters.labgeo; @@ -60,10 +64,14 @@ end fprintf('Building geometry..') imgs_nums = 0 : rec_abs.interval : totproj-1; Omega_rad = angle_rad(imgs_nums + 1); -Omega_deg = Omega_rad * 180 / pi; +Omega_deg = Omega_rad * 180 / pi + rot_angle; bbpos = repmat(acq.bb, [numel(Omega_deg), 1]); -geom = gtGeoProjForReconstruction([], Omega_deg', [], bbpos, [], ... +% bbpos = [gtGeoGrainCenterSam2Det(samgeo.orig, 0, parameters) - (acq.bb(3:4) - 1) / 2, acq.bb(3:4)]; +% bbpos = repmat(bbpos, [numel(Omega_deg), 1]); +vol_center = repmat(samgeo.orig, [numel(Omega_deg), 1]); + +geom = gtGeoProjForReconstruction([], Omega_deg', vol_center, bbpos, [], ... detgeo, labgeo, samgeo, recgeo, 'ASTRA_absorption'); geom(:, 10:12) = round(geom(:, 10:12)); diff --git a/zUtil_Geo/gtGeoProjForReconstruction.m b/zUtil_Geo/gtGeoProjForReconstruction.m index e265f0d3dbdf8a43e9936aa8e3de042f14e7dfb1..bc20705446bc2d329e774e11461e674a2b5c1ce1 100644 --- a/zUtil_Geo/gtGeoProjForReconstruction.m +++ b/zUtil_Geo/gtGeoProjForReconstruction.m @@ -1,4 +1,4 @@ -function proj_geom = gtGeoProjForReconstruction(projvec_sam, omega, graincenter,... +function proj_geom = gtGeoProjForReconstruction(projvec_sam, omega, vol_center,... bbpos, bboff, detgeo, labgeo, samgeo, recgeo, rectype) % GTGEOPROJFORRECONSTRUCTION Projection coordinates required for % reconstructions. @@ -88,14 +88,14 @@ function proj_geom = gtGeoProjForReconstruction(projvec_sam, omega, graincenter, end projvec_rec = gtMathsNormalizeVectorsList(projvec_rec); - if (strcmpi(rectype, 'ASTRA_grain')) - % Grain center in REC reference - graincenter_rec = gtGeoSam2Sam(graincenter, samgeo, recgeo, false, false); - graincenter_rec = graincenter_rec(ones_omega, :); + if (strcmpi(rectype, 'ASTRA_grain') || strcmpi(rectype, 'ASTRA_absorption')) + % Volume center in REC reference + vol_center_rec = gtGeoSam2Sam(vol_center, samgeo, recgeo, false, false); + vol_center_rec = vol_center_rec(ones_omega, :); - bbcent_rec = bbcent_rec - graincenter_rec; + bbcent_rec = bbcent_rec - vol_center_rec; else - % case {'ASTRA_full', 'ASTRA_absorption'} + % case {'ASTRA_full'} end proj_geom = [projvec_rec, bbcent_rec, detdiru_rec, detdirv_rec];