32 #include <nifti1_io.h> 37 #include "sirf/iUtilities/iutilities.h" 40 class BSplineTransformation;
53 template<
class dataType>
62 bool is_complex()
const {
return _imag_sptr !=
nullptr; }
64 const std::shared_ptr<const NiftiImageData<dataType> >
real()
const {
return _real_sptr; }
66 std::shared_ptr<NiftiImageData<dataType> > &
real() {
return _real_sptr; }
68 const std::shared_ptr<const NiftiImageData<dataType> >
imag()
const {
return _imag_sptr; }
70 std::shared_ptr<NiftiImageData<dataType> > &
imag() {
return _imag_sptr; }
72 size_t size()
const {
return is_complex() ? 2 : 1; }
74 const std::shared_ptr<const NiftiImageData<dataType> >
at(
const unsigned idx)
const { check_bounds(idx);
return idx == 0 ? real() : imag(); }
76 std::shared_ptr<NiftiImageData<dataType> >
at(
const unsigned idx) { check_bounds(idx);
return idx == 0 ? real() : imag(); }
79 void check_bounds(
const unsigned idx)
const 82 throw std::runtime_error(
"ComplexNiftiImageData::at(): Exceeds index range");
83 if (idx == 1 && !is_complex())
84 throw std::runtime_error(
"ComplexNiftiImageData::at(): Trying to access imaginary part of non-complex image");
86 std::shared_ptr<NiftiImageData<dataType> > _real_sptr;
87 std::shared_ptr<NiftiImageData<dataType> > _imag_sptr;
100 template<
class dataType>
112 virtual void process();
115 virtual std::shared_ptr<ImageData> forward(
const std::shared_ptr<const ImageData> input_sptr);
118 virtual void forward(std::shared_ptr<ImageData> output_sptr,
const std::shared_ptr<const ImageData> input_sptr);
121 virtual std::shared_ptr<ImageData> adjoint(
const std::shared_ptr<const ImageData> input_sptr);
124 virtual void adjoint(std::shared_ptr<ImageData> output_sptr,
const std::shared_ptr<const ImageData> input_sptr);
129 virtual void set_up();
132 virtual void set_up_forward();
135 virtual void set_up_adjoint();
138 void set_up_input_images();
virtual ~NiftyResampler()
Destructor.
Definition: NiftyResample.h:109
std::shared_ptr< NiftiImageData< dataType > > _adjoint_input_weights_sptr
Adjoint reference weights. Vector as may be complex.
Definition: NiftyResample.h:154
Definition: NiftyResample.h:39
const std::shared_ptr< const NiftiImageData< dataType > > at(const unsigned idx) const
at
Definition: NiftyResample.h:74
bool is_complex() const
is complex
Definition: NiftyResample.h:62
const std::shared_ptr< const NiftiImageData< dataType > > imag() const
Get imaginary component.
Definition: NiftyResample.h:68
detail::ComplexNiftiImageData< dataType > _floating_image_niftis
Floating image as a NiftiImageData.
Definition: NiftyResample.h:143
Definition: Resample.h:55
std::shared_ptr< NiftiImageData< dataType > > at(const unsigned idx)
at
Definition: NiftyResample.h:76
std::shared_ptr< NiftiImageData< dataType > > _adjoint_output_weights_sptr
Adjoint output weights. Vector as may be complex.
Definition: NiftyResample.h:156
This is an internal class requied by NiftyResampler to handle complex images.
Definition: NiftyResample.h:54
ComplexNiftiImageData()
Constructor.
Definition: NiftyResample.h:58
std::shared_ptr< NiftiImageData< dataType > > & imag()
Get imaginary component.
Definition: NiftyResample.h:70
Abstract resampling base class.
virtual ~ComplexNiftiImageData()
Destructor.
Definition: NiftyResample.h:60
Abstract data container.
Definition: GeometricalInfo.cpp:141
std::shared_ptr< NiftiImageData< dataType > > & real()
Get real component.
Definition: NiftyResample.h:66
size_t size() const
size
Definition: NiftyResample.h:72
detail::ComplexNiftiImageData< dataType > _reference_image_niftis
Reference image as a NiftiImageData.
Definition: NiftyResample.h:141
Resampling class based on nifty resample.
Definition: NiftyResample.h:101
const std::shared_ptr< const NiftiImageData< dataType > > real() const
Get real component.
Definition: NiftyResample.h:64
detail::ComplexNiftiImageData< dataType > _output_image_adjoint_niftis
Adjoint resampled image as a NiftiImageData.
Definition: NiftyResample.h:147
NiftyResampler()
Constructor.
Definition: NiftyResample.h:106
std::shared_ptr< NiftiImageData3DDeformation< dataType > > _deformation_sptr
Deformation.
Definition: NiftyResample.h:150
detail::ComplexNiftiImageData< dataType > _output_image_forward_niftis
Forward resampled image as a NiftiImageData.
Definition: NiftyResample.h:145
std::shared_ptr< NiftyMoMo::BSplineTransformation > _adjoint_transformer_sptr
Needed for the adjoint transformation.
Definition: NiftyResample.h:152