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

add option for nearest neighbor interpolation to gtRotateVolume

parent 90bde551
No related branches found
No related tags found
No related merge requests found
function [structure, proj] = gtGrainRotateStructure(structure, proj, type, parameters, rot_tensor_angles, rot_axes)
function [structure, proj] = gtGrainRotateStructure(structure, proj, type, parameters, rot_tensor_angles, rot_axes, interpolation)
if (any([size(rot_tensor_angles, 1), size(rot_tensor_angles, 2)] == 1))
rot_angles = rot_tensor_angles;
if (~exist('rot_axis', 'var'))
if (~exist('rot_axes', 'var') || isempty(rot_axes))
rot_axes = [0 0 1];
end
rot_tensor = gtMathsRotationTensorComposite(rot_axes, rot_angles);
else
rot_tensor = rot_tensor_angles;
end
if (~exist('interpolation','var') || isempty(interpolation))
interpolation = 'linear';
end
structure.intensity = gtRotateVolume(structure.intensity, rot_tensor);
structure.intensity = gtRotateVolume(structure.intensity, rot_tensor, [], [], interpolation);
switch (upper(type))
case 'ODF6D'
dmvol = structure.voxels_avg_R_vectors;
dmvol(:, :, :, 1) = gtRotateVolume(dmvol(:, :, :, 1), rot_tensor);
dmvol(:, :, :, 2) = gtRotateVolume(dmvol(:, :, :, 2), rot_tensor);
dmvol(:, :, :, 3) = gtRotateVolume(dmvol(:, :, :, 3), rot_tensor);
dmvol(:, :, :, 1) = gtRotateVolume(dmvol(:, :, :, 1), rot_tensor, [], [], interpolation);
dmvol(:, :, :, 2) = gtRotateVolume(dmvol(:, :, :, 2), rot_tensor, [], [], interpolation);
dmvol(:, :, :, 3) = gtRotateVolume(dmvol(:, :, :, 3), rot_tensor, [], [], interpolation);
structure.voxels_avg_R_vectors = dmvol;
case 'VOL3D'
end
......
function vol = gtRotateVolume(vol, rot_tensor_angle, rot_axis, rot_center)
function vol = gtRotateVolume(vol, rot_tensor_angle, rot_axis, rot_center, interpolation)
% function vol = gtRotateVolume(vol, rot_tensor_angle, rot_axis, rot_center)
if (any([size(rot_tensor_angle, 1), size(rot_tensor_angle, 2)] == 1))
rot_angle = rot_tensor_angle;
if (~exist('rot_axis', 'var'))
if (~exist('rot_axis', 'var') || isempty(rot_axis))
rot_axis = [0 0 1];
end
rot_tensor = eye(3);
......@@ -18,7 +18,9 @@ function vol = gtRotateVolume(vol, rot_tensor_angle, rot_axis, rot_center)
if (~exist('rot_center', 'var') || isempty(rot_center))
rot_center = (vol_size + 1) / 2;
end
if (~exist('interpolation', 'var') || isempty('interpolation'))
interpolation = 'linear';
end
T1 = eye(4);
T1(4, 1:3) = -rot_center;
......@@ -37,6 +39,6 @@ function vol = gtRotateVolume(vol, rot_tensor_angle, rot_axis, rot_center)
% Old version. NOTE that rot_tensor should be un-transposed if this
% version was to be used.
tform = maketform('affine', T);
R = makeresampler('linear', 'fill');
R = makeresampler(interpolation, 'fill');
vol = tformarray(vol, tform, R, [1 2 3], [1 2 3], vol_size, [], 0);
end
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