21template <
class ObjectTransformationT,
class PushInterpolatorT>
25 const ObjectTransformationT& transformation_in_to_out,
26 const PushInterpolatorT& interpolator,
27 const bool do_jacobian)
33 interpolator.set_output(out_image);
36 for (
int y = in_image[z].get_min_index(); y <= in_image[z].
get_max_index(); ++y)
37 for (
int x = in_image[z][y].get_min_index(); x <= in_image[z][y].
get_max_index(); ++x)
44 const float jacobian = do_jacobian ? transformation_in_to_out.jacobian(current_point) : 1;
45 interpolator.add_to(new_point_in_image_coords, in_image[z][y][x] * jacobian);
47 return Succeeded::yes;
50template <
class ObjectTransformationT,
class PullInterpolatorT>
54 const ObjectTransformationT& transformation_out_to_in,
55 const PullInterpolatorT& interpolator,
56 const bool do_jacobian)
62 interpolator.set_input(in_density);
65 for (
int y = out_image[z].get_min_index(); y <= out_image[z].
get_max_index(); ++y)
66 for (
int x = out_image[z][y].get_min_index(); x <= out_image[z][y].
get_max_index(); ++x)
75 out_image[z][y][x] = interpolator(new_point_in_image_coords);
77 out_image[z][y][x] *= transformation_out_to_in.jacobian(current_point);
80 return Succeeded::yes;
defines the stir::CartesianCoordinate3D<coordT> class
Declaration of class stir::Succeeded.
defines the stir::VoxelsOnCartesianGrid class
a templated class for 3-dimensional coordinates.
Definition CartesianCoordinate3D.h:53
This abstract class is the basis for all image representations.
Definition DiscretisedDensity.h:99
const CartesianCoordinate3D< float > & get_origin() const
Return the origin.
Definition DiscretisedDensity.inl:64
int get_max_index() const
get value of last valid index
Definition VectorWithOffset.inl:131
int get_min_index() const
get value of first valid index
Definition VectorWithOffset.inl:124
This class is used to represent voxelised densities on a cuboid grid (3D).
Definition VoxelsOnCartesianGrid.h:46
CartesianCoordinate3D< float > get_voxel_size() const
is the same as get_grid_spacing(), but now returns CartesianCoordinate3D for convenience
Definition VoxelsOnCartesianGrid.inl:27
Succeeded transform_3d_object_pull_interpolation(DiscretisedDensity< 3, float > &out_density, const DiscretisedDensity< 3, float > &in_density, const ObjectTransformationT &transformation_out_to_in, const PullInterpolatorT &interpolator, const bool do_jacobian)
transform image data
Definition transform_3d_object.inl:52
Succeeded transform_3d_object_push_interpolation(DiscretisedDensity< 3, float > &out_density, const DiscretisedDensity< 3, float > &in_density, const ObjectTransformationT &transformation_in_to_out, const PushInterpolatorT &interpolator, const bool do_jacobian)
transform image data
Definition transform_3d_object.inl:23