19 #ifndef rtkJosephForwardProjectionImageFilter_h 20 #define rtkJosephForwardProjectionImageFilter_h 22 #include "rtkConfiguration.h" 42 template <
class TInput,
class TCoordRepType,
class TOutput = TInput>
56 return !(*
this != other);
61 const double itkNotUsed(stepLengthInVoxel),
62 const TCoordRepType weight,
77 template <
class TInput,
class TOutput>
93 return !(*
this != other);
110 template <
class TInput,
class TOutput>
126 return !(*
this != other);
131 const TInput & input,
133 const TOutput & rayCastValue,
138 const VectorType & itkNotUsed(farthestPoint))
const 140 output = input + rayCastValue * stepInMM.GetNorm();
162 template <
class TInputImage,
164 class TInterpolationWeightMultiplication = Functor::InterpolationWeightMultiplication<
165 typename TInputImage::PixelType,
167 class TProjectedValueAccumulation =
168 Functor::ProjectedValueAccumulation<typename TInputImage::PixelType, typename TOutputImage::PixelType>,
169 class TSumAlongRay = Functor::SumAlongRay<typename TInputImage::PixelType, typename TOutputImage::PixelType>>
194 TInterpolationWeightMultiplication &
197 return m_InterpolationWeightMultiplication;
199 const TInterpolationWeightMultiplication &
202 return m_InterpolationWeightMultiplication;
207 if (m_InterpolationWeightMultiplication != _arg)
209 m_InterpolationWeightMultiplication = _arg;
217 TProjectedValueAccumulation &
220 return m_ProjectedValueAccumulation;
222 const TProjectedValueAccumulation &
225 return m_ProjectedValueAccumulation;
230 if (m_ProjectedValueAccumulation != _arg)
232 m_ProjectedValueAccumulation = _arg;
242 return m_SumAlongRay;
247 return m_SumAlongRay;
252 if (m_SumAlongRay != _arg)
254 m_SumAlongRay = _arg;
263 itkGetMacro(InferiorClip,
double);
265 itkGetMacro(SuperiorClip,
double);
274 ThreadedGenerateData(
const OutputImageRegionType & outputRegionForThread,
ThreadIdType threadId)
override;
282 inline OutputPixelType
284 const double stepLengthInVoxel,
285 const InputPixelType * pxiyi,
286 const InputPixelType * pxsyi,
287 const InputPixelType * pxiys,
288 const InputPixelType * pxsys,
294 inline OutputPixelType
295 BilinearInterpolationOnBorders(
const ThreadIdType threadId,
296 const double stepLengthInVoxel,
297 const InputPixelType * pxiyi,
298 const InputPixelType * pxsyi,
299 const InputPixelType * pxiys,
300 const InputPixelType * pxsys,
315 double m_InferiorClip{ 0. };
316 double m_SuperiorClip{ 1. };
321 #ifndef ITK_MANUAL_INSTANTIATION 322 # include "rtkJosephForwardProjectionImageFilter.hxx" void SetInterpolationWeightMultiplication(const TInterpolationWeightMultiplication &_arg)
Base class for forward projection, i.e. accumulation along x-ray lines.
TProjectedValueAccumulation & GetProjectedValueAccumulation()
typename TInputImage::PixelType InputPixelType
Function to accumulate the ray casting on the projection.
const TProjectedValueAccumulation & GetProjectedValueAccumulation() const
Function to compute the attenuation correction on the projection.
bool operator==(const SumAlongRay &other) const
typename TOutputImage::PixelType OutputPixelType
const TInterpolationWeightMultiplication & GetInterpolationWeightMultiplication() const
TOutput operator()(const ThreadIdType, const TInput volumeValue, const VectorType &)
bool operator!=(const SumAlongRay &) const
typename TPixelType::ValueType ValueType
#define itkSetMacro(name, type)
bool operator!=(const ProjectedValueAccumulation &) const
TOutput operator()(const ThreadIdType, const double, const TCoordRepType weight, const TInput *p, const int i) const
bool operator==(const InterpolationWeightMultiplication &other) const
Function to multiply the interpolation weights with the projected volume values.
typename OutputImageType::RegionType OutputImageRegionType
const TSumAlongRay & GetSumAlongRay() const
void SetProjectedValueAccumulation(const TProjectedValueAccumulation &_arg)
TInterpolationWeightMultiplication m_InterpolationWeightMultiplication
void SetSumAlongRay(const TSumAlongRay &_arg)
TSumAlongRay & GetSumAlongRay()
bool operator==(const ProjectedValueAccumulation &other) const
TProjectedValueAccumulation m_ProjectedValueAccumulation
bool operator!=(const InterpolationWeightMultiplication &) const
TInterpolationWeightMultiplication & GetInterpolationWeightMultiplication()
TSumAlongRay m_SumAlongRay
Joseph forward projection.
unsigned int ThreadIdType
void operator()(const ThreadIdType, const TInput &input, TOutput &output, const TOutput &rayCastValue, const VectorType &stepInMM, const VectorType &, const VectorType &, const VectorType &, const VectorType &) const
void VerifyInputInformation() const override