From 6314361af90d29e003ea6813e4a2f8a4c6103974 Mon Sep 17 00:00:00 2001
From: Nicola Vigano <nicola.vigano@esrf.fr>
Date: Thu, 18 Feb 2016 18:02:01 +0100
Subject: [PATCH] ODF-solvers: added ospace oversampling

Signed-off-by: Nicola Vigano <nicola.vigano@esrf.fr>
---
 zUtil_Deformation/GtGrainODFwSolver.m | 26 ++++++++------------------
 1 file changed, 8 insertions(+), 18 deletions(-)

diff --git a/zUtil_Deformation/GtGrainODFwSolver.m b/zUtil_Deformation/GtGrainODFwSolver.m
index 54d632d0..4ec945b6 100644
--- a/zUtil_Deformation/GtGrainODFwSolver.m
+++ b/zUtil_Deformation/GtGrainODFwSolver.m
@@ -17,7 +17,7 @@ classdef GtGrainODFwSolver < handle
         St_ws;
         tau_ws;
 
-        num_iter = 0;
+        num_iter = 50;
 
         verbose = false;
     end
@@ -42,11 +42,13 @@ classdef GtGrainODFwSolver < handle
             conf = struct( ...
                 'algorithm', 'sirt', ...
                 'lambda', 1e-2, ...
-                'ospace_oversize', 1.1, ...
+                'ospace_oversize', 1, ...
+                'ospace_oversampling', 0, ...
                 'det_index', 1 );
             conf = parse_pv_pairs(conf, varargin);
 
-            self.build_orientation_sampling(ref_gr, conf.ospace_oversize, conf.det_index);
+            self.build_orientation_sampling(ref_gr, conf.det_index, ...
+                conf.ospace_oversize, conf.ospace_oversampling);
             bls = self.sampler.bl(self.sampler.selected);
 
             self.build_sinogram();
@@ -68,10 +70,10 @@ classdef GtGrainODFwSolver < handle
     end
 
     methods (Access = public) % Low Level API
-        function build_orientation_sampling(self, ref_gr, oversize, det_index)
+        function build_orientation_sampling(self, ref_gr, det_index, oversize, oversampling)
             self.sampler = GtOrientationSampling(self.parameters, ref_gr, ...
-                'verbose', self.verbose, 'detector_index', det_index);
-            self.sampler.make_grid_estim_ODF_resoluion('cubic', 0, oversize);
+                'verbose', self.verbose && false, 'detector_index', det_index);
+            self.sampler.make_grid_estim_ODF_resoluion('cubic', -oversampling, oversize);
             self.size_volume = size(self.sampler.lattice.gr);
         end
 
@@ -202,9 +204,6 @@ classdef GtGrainODFwSolver < handle
 
         function solve_sirt(self)
             c = tic();
-            if (~self.num_iter)
-                self.num_iter = 100;
-            end
             residuals = zeros(self.num_iter, 1);
 
             x0 = self.bw(self.bp(self.fw(self.sino)));
@@ -241,9 +240,6 @@ classdef GtGrainODFwSolver < handle
 
         function solve_cplsnn(self)
             c = tic();
-            if (~self.num_iter)
-                self.num_iter = 50;
-            end
             residuals = zeros(self.num_iter, 1);
 
             p = gtMathsGetSameSizeZeros(self.S__ws);
@@ -278,9 +274,6 @@ classdef GtGrainODFwSolver < handle
 
         function solve_cplsl1nn(self, lambda)
             c = tic();
-            if (~self.num_iter)
-                self.num_iter = 50;
-            end
             residuals = zeros(self.num_iter, 1);
 
             p = gtMathsGetSameSizeZeros(self.S__ws);
@@ -324,9 +317,6 @@ classdef GtGrainODFwSolver < handle
             rescaled_sino = self.sino ./ norm(self.sino(:)) .* self.get_num_ws();
 
             c = tic();
-            if (~self.num_iter)
-                self.num_iter = 50;
-            end
             residuals = zeros(self.num_iter, 1);
 
             p = gtMathsGetSameSizeZeros(self.S__ws);
-- 
GitLab