19 #ifndef rtkJosephBackProjectionImageFilter_h 20 #define rtkJosephBackProjectionImageFilter_h 22 #include "rtkConfiguration.h" 40 template <
class TInput,
class TCoordinateType,
class TOutput = TInput>
54 return !(*
this != other);
59 const TCoordinateType itkNotUsed(weight),
60 const TInput * itkNotUsed(p),
61 const int itkNotUsed(i))
const 74 template <
class TInput,
class TOutput>
90 return !(*
this != other);
93 inline const TOutput &
95 const TInput itkNotUsed(attenuationRay),
97 bool itkNotUsed(isEndRay))
const 110 template <
class TInput,
class TCoordinateType,
class TOutput = TCoordinateType>
124 return !(*
this != other);
130 const double stepLengthInVoxel,
131 const double voxelSize,
132 const TCoordinateType weight)
const 134 output += rayValue * weight * voxelSize * stepLengthInVoxel;
158 class TInterpolationWeightMultiplication = Functor::InterpolationWeightMultiplicationBackProjection<
159 typename TInputImage::PixelType,
161 class TSplatWeightMultiplication =
162 Functor::SplatWeightMultiplication<typename TInputImage::PixelType, double, typename TOutputImage::PixelType>,
163 class TSumAlongRay = Functor::ValueAlongRay<typename TInputImage::PixelType, typename TOutputImage::PixelType>>
189 TInterpolationWeightMultiplication &
192 return m_InterpolationWeightMultiplication;
194 const TInterpolationWeightMultiplication &
197 return m_InterpolationWeightMultiplication;
202 if (m_InterpolationWeightMultiplication != _arg)
204 m_InterpolationWeightMultiplication = _arg;
211 TSplatWeightMultiplication &
214 return m_SplatWeightMultiplication;
216 const TSplatWeightMultiplication &
219 return m_SplatWeightMultiplication;
224 if (m_SplatWeightMultiplication != _arg)
226 m_SplatWeightMultiplication = _arg;
236 return m_SumAlongRay;
241 return m_SumAlongRay;
246 if (m_SumAlongRay != _arg)
248 m_SumAlongRay = _arg;
257 itkGetMacro(InferiorClip,
double);
259 itkGetMacro(SuperiorClip,
double);
268 GenerateData()
override;
277 BilinearSplat(
const InputPixelType & rayValue,
278 const double stepLengthInVoxel,
279 const double voxelSize,
280 OutputPixelType * pxiyi,
281 OutputPixelType * pxsyi,
282 OutputPixelType * pxiys,
283 OutputPixelType * pxsys,
290 BilinearSplatOnBorders(
const InputPixelType & rayValue,
291 const double stepLengthInVoxel,
292 const double voxelSize,
293 OutputPixelType * pxiyi,
294 OutputPixelType * pxsyi,
295 OutputPixelType * pxiys,
296 OutputPixelType * pxsys,
301 const CoordinateType minx,
302 const CoordinateType miny,
303 const CoordinateType maxx,
304 const CoordinateType maxy);
306 inline OutputPixelType
307 BilinearInterpolation(
const double stepLengthInVoxel,
308 const InputPixelType * pxiyi,
309 const InputPixelType * pxsyi,
310 const InputPixelType * pxiys,
311 const InputPixelType * pxsys,
317 inline OutputPixelType
318 BilinearInterpolationOnBorders(
const double stepLengthInVoxel,
319 const InputPixelType * pxiyi,
320 const InputPixelType * pxsyi,
321 const InputPixelType * pxiys,
322 const InputPixelType * pxsys,
336 double m_InferiorClip{ 0. };
337 double m_SuperiorClip{ 1. };
342 #ifndef ITK_MANUAL_INSTANTIATION 343 # include "rtkJosephBackProjectionImageFilter.hxx" typename GeometryType::Pointer GeometryPointer
bool operator!=(const ValueAlongRay &) const
void SetInterpolationWeightMultiplication(const TInterpolationWeightMultiplication &_arg)
TSumAlongRay m_SumAlongRay
TInterpolationWeightMultiplication & GetInterpolationWeightMultiplication()
bool operator==(const InterpolationWeightMultiplicationBackProjection &other) const
void SetSumAlongRay(const TSumAlongRay &_arg)
bool operator!=(const InterpolationWeightMultiplicationBackProjection &) const
void operator()(const TInput &rayValue, TOutput &output, const double stepLengthInVoxel, const double voxelSize, const TCoordinateType weight) const
typename TInputImage::PixelType InputPixelType
typename TOutputImage::PixelType OutputPixelType
void SetSplatWeightMultiplication(const TSplatWeightMultiplication &_arg)
TOutput operator()(const double, const TCoordinateType, const TInput *, const int) const
typename TPixelType::ValueType ValueType
TSplatWeightMultiplication m_SplatWeightMultiplication
Projection geometry for a source and a 2-D flat panel.
#define itkSetMacro(name, type)
bool operator!=(const SplatWeightMultiplication &) const
Function to multiply the interpolation weights with the projected volume values.
typename OutputImageType::RegionType OutputImageRegionType
bool operator==(const ValueAlongRay &other) const
void VerifyInputInformation() const override
const TSumAlongRay & GetSumAlongRay() const
const TOutput & operator()(const TInput &rayValue, const TInput, const VectorType &, bool) const
Function to multiply the interpolation weights with the projection values.
const TSplatWeightMultiplication & GetSplatWeightMultiplication() const
bool operator==(const SplatWeightMultiplication &other) const
TSplatWeightMultiplication & GetSplatWeightMultiplication()
TSumAlongRay & GetSumAlongRay()
TInterpolationWeightMultiplication m_InterpolationWeightMultiplication
const TInterpolationWeightMultiplication & GetInterpolationWeightMultiplication() const