19 #ifndef rtkJosephBackProjectionImageFilter_h 20 #define rtkJosephBackProjectionImageFilter_h 22 #include "rtkConfiguration.h" 40 template <
class TInput,
class TCoordRepType,
class TOutput = TInput>
54 return !(*
this != other);
59 const TCoordRepType 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 TCoordRepType,
class TOutput = TCoordRepType>
124 return !(*
this != other);
130 const double stepLengthInVoxel,
131 const double voxelSize,
132 const TCoordRepType 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>>
186 #ifdef itkOverrideGetNameOfClassMacro 194 TInterpolationWeightMultiplication &
197 return m_InterpolationWeightMultiplication;
199 const TInterpolationWeightMultiplication &
202 return m_InterpolationWeightMultiplication;
207 if (m_InterpolationWeightMultiplication != _arg)
209 m_InterpolationWeightMultiplication = _arg;
216 TSplatWeightMultiplication &
219 return m_SplatWeightMultiplication;
221 const TSplatWeightMultiplication &
224 return m_SplatWeightMultiplication;
229 if (m_SplatWeightMultiplication != _arg)
231 m_SplatWeightMultiplication = _arg;
241 return m_SumAlongRay;
246 return m_SumAlongRay;
251 if (m_SumAlongRay != _arg)
253 m_SumAlongRay = _arg;
262 itkGetMacro(InferiorClip,
double);
264 itkGetMacro(SuperiorClip,
double);
273 GenerateData()
override;
282 BilinearSplat(
const InputPixelType & rayValue,
283 const double stepLengthInVoxel,
284 const double voxelSize,
285 OutputPixelType * pxiyi,
286 OutputPixelType * pxsyi,
287 OutputPixelType * pxiys,
288 OutputPixelType * pxsys,
295 BilinearSplatOnBorders(
const InputPixelType & rayValue,
296 const double stepLengthInVoxel,
297 const double voxelSize,
298 OutputPixelType * pxiyi,
299 OutputPixelType * pxsyi,
300 OutputPixelType * pxiys,
301 OutputPixelType * pxsys,
306 const CoordRepType minx,
307 const CoordRepType miny,
308 const CoordRepType maxx,
309 const CoordRepType maxy);
311 inline OutputPixelType
312 BilinearInterpolation(
const double stepLengthInVoxel,
313 const InputPixelType * pxiyi,
314 const InputPixelType * pxsyi,
315 const InputPixelType * pxiys,
316 const InputPixelType * pxsys,
322 inline OutputPixelType
323 BilinearInterpolationOnBorders(
const double stepLengthInVoxel,
324 const InputPixelType * pxiyi,
325 const InputPixelType * pxsyi,
326 const InputPixelType * pxiys,
327 const InputPixelType * pxsys,
341 double m_InferiorClip{ 0. };
342 double m_SuperiorClip{ 1. };
347 #ifndef ITK_MANUAL_INSTANTIATION 348 # include "rtkJosephBackProjectionImageFilter.hxx" typename GeometryType::Pointer GeometryPointer
bool operator!=(const ValueAlongRay &) const
bool operator!=(const InterpolationWeightMultiplicationBackProjection &) const
void SetInterpolationWeightMultiplication(const TInterpolationWeightMultiplication &_arg)
TSumAlongRay m_SumAlongRay
TInterpolationWeightMultiplication & GetInterpolationWeightMultiplication()
void SetSumAlongRay(const TSumAlongRay &_arg)
typename TInputImage::PixelType InputPixelType
bool operator==(const InterpolationWeightMultiplicationBackProjection &other) const
typename TOutputImage::PixelType OutputPixelType
void SetSplatWeightMultiplication(const TSplatWeightMultiplication &_arg)
bool operator!=(const SplatWeightMultiplication &) const
typename TPixelType::ValueType ValueType
TSplatWeightMultiplication m_SplatWeightMultiplication
Projection geometry for a source and a 2-D flat panel.
#define itkSetMacro(name, type)
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.
bool operator==(const SplatWeightMultiplication &other) const
const TSplatWeightMultiplication & GetSplatWeightMultiplication() const
TSplatWeightMultiplication & GetSplatWeightMultiplication()
TSumAlongRay & GetSumAlongRay()
TInterpolationWeightMultiplication m_InterpolationWeightMultiplication
const TInterpolationWeightMultiplication & GetInterpolationWeightMultiplication() const
TOutput operator()(const double, const TCoordRepType, const TInput *, const int) const
void operator()(const TInput &rayValue, TOutput &output, const double stepLengthInVoxel, const double voxelSize, const TCoordRepType weight) const