Skip to content
Snippets Groups Projects
Commit 559e1f24 authored by Nicola Vigano's avatar Nicola Vigano
Browse files

ODF-uvw-solver: added rspace super-sampling

parent 1d033989
No related branches found
No related tags found
No related merge requests found
classdef GtGrainODFuvwSolver < GtGrainODFwSolver classdef GtGrainODFuvwSolver < GtGrainODFwSolver
properties properties
voxel_centers = []; voxel_centers = [];
rspace_over_sampling = 1;
size_rspace_volume = [];
end end
methods (Access = public) methods (Access = public)
...@@ -39,26 +41,23 @@ classdef GtGrainODFuvwSolver < GtGrainODFwSolver ...@@ -39,26 +41,23 @@ classdef GtGrainODFuvwSolver < GtGrainODFwSolver
end end
end end
function chose_voxel_centers(self, over_sampling) function chose_voxel_centers(self)
if (~exist('over_sampling', 'var') || isempty(over_sampling))
over_sampling = 1;
end
recgeo = self.parameters.recgeo(self.sampler.detector_index); recgeo = self.parameters.recgeo(self.sampler.detector_index);
ref_gr = self.sampler.get_reference_grain(); ref_gr = self.sampler.get_reference_grain();
proj = ref_gr.proj(self.sampler.detector_index); proj = ref_gr.proj(self.sampler.detector_index);
r_space_vol_size = [proj.vol_size_y, proj.vol_size_x, proj.vol_size_z]; r_space_vol_size = [proj.vol_size_y, proj.vol_size_x, proj.vol_size_z];
max_dists_from_center = (r_space_vol_size - 1) / 2; max_dists_from_center = (r_space_vol_size - 1 ./ self.rspace_over_sampling) / 2;
num_voxels = prod(r_space_vol_size); self.size_rspace_volume = r_space_vol_size .* self.rspace_over_sampling;
tot_voxels = prod(self.size_rspace_volume);
self.voxel_centers = zeros(num_voxels, 3); self.voxel_centers = zeros(tot_voxels, 3);
counter = 1; counter = 1;
for ss_x = linspace(-max_dists_from_center(1), max_dists_from_center(1), r_space_vol_size(1)) for ss_x = linspace(-max_dists_from_center(1), max_dists_from_center(1), self.size_rspace_volume(1))
for ss_y = linspace(-max_dists_from_center(2), max_dists_from_center(2), r_space_vol_size(2)) for ss_y = linspace(-max_dists_from_center(2), max_dists_from_center(2), self.size_rspace_volume(2))
for ss_z = linspace(-max_dists_from_center(3), max_dists_from_center(3), r_space_vol_size(3)) for ss_z = linspace(-max_dists_from_center(3), max_dists_from_center(3), self.size_rspace_volume(3))
offset_voxel = [ss_x, ss_y, ss_z] .* recgeo.voxsize; offset_voxel = [ss_x, ss_y, ss_z] .* recgeo.voxsize;
...@@ -204,6 +203,10 @@ classdef GtGrainODFuvwSolver < GtGrainODFwSolver ...@@ -204,6 +203,10 @@ classdef GtGrainODFuvwSolver < GtGrainODFwSolver
function vol = get_volume(self) function vol = get_volume(self)
vol = reshape(sum(self.volume, 2), self.size_volume); vol = reshape(sum(self.volume, 2), self.size_volume);
end end
function vol = get_volume_6D(self)
vol = reshape(self.volume, [self.size_volume, self.size_rspace_volume]);
end
end end
methods (Access = protected) methods (Access = protected)
......
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