Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 7 additions & 8 deletions include/pctBetheBlochFunctor.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,19 @@
namespace pct
{

namespace Functor
{

/** \class BetheBlochProtonStoppingPower
* \ingroup PCT
* \brief Proton stopping power according to the Bethe-Bloch equation
* \brief Proton stopping power according to the Bethe-Bloch equation.
* The function corresponds to:
* - F in [Li, MIC-NSS, 2003].
* - S in [Schulte, Med Phys, 2005].
* - F in [Li, MIC-NSS, 2003];
* - S in [Schulte, Med Phys, 2005];
* - S in [Penfold, Med Phys, 2009].
* Note that they have all an error. r must be squared in the equation.
* The CLHEP system of units is used.
*/

namespace Functor
{

template <class TInput, class TOutput>
class BetheBlochProtonStoppingPower
{
Expand Down Expand Up @@ -49,7 +48,7 @@ class BetheBlochProtonStoppingPower

/** \class IntegratedBetheBlochProtonStoppingPowerInverse
* \ingroup PCT
* \brief Numerical for integral used in proton CT.
* \brief Numerical approximation of integrals used in proton CT.
*/
template <class TInput, class TOutput>
class IntegratedBetheBlochProtonStoppingPowerInverse
Expand Down
8 changes: 4 additions & 4 deletions include/pctDDParkerShortScanImageFilter.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,11 @@
#include <rtkThreeDCircularProjectionGeometry.h>
#include "rtkConfiguration.h"

namespace pct
{

/** \class DDParkerShortScanImageFilter
* \ingroup PCT
* \ingroup PCT
* Weighting of image projections to handle off-centered panels
* in tomography reconstruction. Based on [Wang, Med Phys, 2002].
*
Expand All @@ -16,9 +19,6 @@
*
* \author Simon Rit
*/
namespace pct
{

template <class TInputImage, class TOutputImage = TInputImage>
class ITK_TEMPLATE_EXPORT DDParkerShortScanImageFilter : public itk::InPlaceImageFilter<TInputImage, TOutputImage>
{
Expand Down
13 changes: 10 additions & 3 deletions include/pctEnergyAdaptiveMLPFunction.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,10 @@ GetLinearCoefficients(itk::Vector<double, 2> & ab, const double E_in, const doub
ab[0] = (inverseScatteringPower_out - inverseScatteringPower_in) / deltaU;
}

// class which calculates factor A, B, C, D as in eq. 19 in [Krah 2019, PMB]
/** \class FactorsABCD
* \ingroup PCT
* Class which calculates factor A, B, C, D as in Eq. 7-10 in [Krah 2021, PMB].
*/
class FactorsABCD
{
public:
Expand Down Expand Up @@ -73,6 +76,10 @@ class FactorsABCD
}
};

/** \class CoefficientsC
* \ingroup PCT
* Class which calculates factors c0 and c1 as in Eq. 15 in [Krah 2019, PMB].
*/
class CoefficientsC
{
public:
Expand All @@ -97,8 +104,8 @@ class CoefficientsC
} // end namespace Functor

/** \class EnergyAdaptiveMLPFunction
* \ingroup PCT
* \ingroup Functions
* \ingroup PCT Functions
* Energy-adaptive calculation of the most likely path [Krah 2021, PMB].
*/
class PCT_EXPORT EnergyAdaptiveMLPFunction : public MostLikelyPathFunction<double>
{
Expand Down
9 changes: 4 additions & 5 deletions include/pctEnergyStragglingFunctor.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,14 @@
namespace pct
{

namespace Functor
{

/** \class EnergyStragglingFunctor
* \ingroup PCT
* \ingroup PCT
* \brief Function to compute energy straggling
* This is based on a fit of a pencil beam of 200 MeV protons in water
*/

namespace Functor
{

template <class TInput, class TOutput>
class EnergyStragglingFunctor
{
Expand Down
4 changes: 4 additions & 0 deletions include/pctFDKDDBackProjectionImageFilter.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@
namespace pct
{

/** \class FDKDDBackProjectionImageFilter
* \ingroup PCT
* Distance-dirven FDK back projection for proton CT [Rit 2013, Medical Physics].
*/
template <class TInputImage, class TOutputImage>
class ITK_TEMPLATE_EXPORT FDKDDBackProjectionImageFilter
: public rtk::BackProjectionImageFilter<TInputImage, TOutputImage>
Expand Down
9 changes: 4 additions & 5 deletions include/pctFDKDDConeBeamReconstructionFilter.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,13 @@
#include <itkExtractImageFilter.h>
#include <itkTimeProbe.h>

/** \class FDKDDConeBeamReconstructionFilter
* TODO
* \ingroup PCT
* \author Simon Rit
*/
namespace pct
{

/** \class FDKDDConeBeamVarianceReconstructionFilter
* \ingroup PCT
* Implements distance-driven FDK reconstruction [Rit 2013, Medical Physics].
*/
template <class TInputImage, class TOutputImage = TInputImage, class TFFTPrecision = double>
class ITK_TEMPLATE_EXPORT FDKDDConeBeamReconstructionFilter : public itk::ImageToImageFilter<TInputImage, TOutputImage>
{
Expand Down
17 changes: 7 additions & 10 deletions include/pctFDKDDWeightProjectionFilter.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,20 @@
#include <itkInPlaceImageFilter.h>
#include <rtkThreeDCircularProjectionGeometry.h>

namespace pct
{

/** \class FDKDDWeightProjectionFilter
* \ingroup PCT
* \brief Weighting of projections to correct for the divergence in
* filtered backprojection reconstruction algorithms.
* \ingroup PCT
* \brief Weighting of projections to correct for the divergence in filtered backprojection reconstruction algorithms.
* The weighting comprises:
* - the 2D weighting of the FDK algorithm [Feldkamp, 1984],
* - the correction of the ramp factor for divergent full scan,
* - the angular weighting for the final 3D integral of FDK.
* Note that SourceToDetectorDistance, SourceToDetectorIsocenter
* SouceOffsets and ProjectionOffsets are accounted for on a per
* projection basis but InPlaneRotation and OutOfPlaneRotation are not
* accounted for.
* Note that SourceToDetectorDistance, SourceToDetectorIsocenter, SouceOffsets and ProjectionOffsets are accounted for
* on a per projection basis but InPlaneRotation and OutOfPlaneRotation are not accounted for.
* \author Simon Rit
*/
namespace pct
{

template <class TInputImage, class TOutputImage = TInputImage>
class ITK_TEMPLATE_EXPORT FDKDDWeightProjectionFilter : public itk::InPlaceImageFilter<TInputImage, TOutputImage>
{
Expand Down
20 changes: 8 additions & 12 deletions include/pctHoleFillingImageFilter.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,15 @@

namespace pct
{
/**
*
* A simple iterative hole filling filter. A pixel equal to the HolePixel is
* considered a hole. On each iteration, every hole pixel is replaced by the
* average of its non-hole neighbors in a radius=1 neighborhood (center
* excluded). Iterations repeat until no hole pixels remain or MaxIterations
* is reached or an iteration makes no progress.
*
* This filter reproduces the behavior of the project's SmallHoleFiller
* helper. For the original reference see:
* https://www.insight-journal.org/browse/publication/835/
*/

/** \class HoleFillingImageFilter
* \ingroup PCT
* A simple iterative hole filling filter. A pixel equal to the HolePixel is considered a hole. On each iteration, every
* hole pixel is replaced by the average of its non-hole neighbors in a radius=1 neighborhood (center excluded).
* Iterations repeat until no hole pixels remain or MaxIterations is reached or an iteration makes no progress. This
* filter reproduces the behavior of the project's SmallHoleFiller helper. For the original reference see:
* https://www.insight-journal.org/browse/publication/835/.
*/
template <typename TInputImage, typename TOutputImage = TInputImage>
class HoleFillingImageFilter : public itk::ImageToImageFilter<TInputImage, TOutputImage>
{
Expand Down
5 changes: 2 additions & 3 deletions include/pctMostLikelyPathFunction.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,8 @@ namespace pct
{

/** \class MostLikelyPathFunction
* \brief Base class for computing the most likely path of a proton.
*
* \ingroup Functions PCT
* \ingroup PCT Functions
* Base class for computing the most likely path of a proton.
*/
template <class TCoordRep = double>
class ITK_TEMPLATE_EXPORT MostLikelyPathFunction : public itk::LightObject
Expand Down
16 changes: 11 additions & 5 deletions include/pctPolynomialMLPFunction.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,10 @@ static const std::vector<double> bm_4 = { 5.401888e-06, -7.991486e-08, 3.262799e
static const std::vector<double> bm_5 = { 4.307328e-06, 9.657939e-08, -3.338966e-09,
6.069645e-11, -4.427153e-13, 1.201749e-15 };

// ADD COMMENT HERE
/** \class FactorsABCD
* \ingroup PCT
* Class which calculates factor A, B, C, D as in Eq. 19 in [Krah 2019, PMB].
*/
class FactorsABCD
{
public:
Expand Down Expand Up @@ -108,6 +111,10 @@ class FactorsABCD
}
};

/** \class CoefficientsC
* \ingroup PCT
* Class which calculates factors c0 and c1 as in Eq. 15 in [Krah 2019, PMB].
*/
class CoefficientsC
{
public:
Expand All @@ -131,10 +138,9 @@ class CoefficientsC

} // end namespace Functor

/** \class SchulteMLPFunction
* \brief See [Schulte, Med Phys, 2008].
*
* \ingroup Functions PCT
/** \class PolynomialMLPFunction
* \ingroup PCT Functions
* Polynomial calculation of the most likely path [Krah 2019, PMB].
*/
class PCT_EXPORT PolynomialMLPFunction : public MostLikelyPathFunction<double>
{
Expand Down
4 changes: 4 additions & 0 deletions include/pctProtonPairsToBackProjection.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@
namespace pct
{

/** \class ProtonPairsToBackProjection
* \ingroup PCT
* Backprojection of the proton pairs according to the MLP before applying the MLP.
*/
template <class TInputImage, class TOutputImage>
class ITK_TEMPLATE_EXPORT ProtonPairsToBackProjection : public itk::InPlaceImageFilter<TInputImage, TOutputImage>
{
Expand Down
4 changes: 4 additions & 0 deletions include/pctProtonPairsToDistanceDrivenProjection.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@
namespace pct
{

/** \class ProtonPairsToDistanceDrivenProjection
* \ingroup PCT
* Conversion of the proton pairs to distance-driven projections [Rit 2013, Medical Physics].
*/
template <class TInputImage, class TOutputImage>
class ITK_TEMPLATE_EXPORT ProtonPairsToDistanceDrivenProjection
: public itk::InPlaceImageFilter<TInputImage, TOutputImage>
Expand Down
25 changes: 18 additions & 7 deletions include/pctSchulteMLPFunction.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,10 @@ static const double a4 = -2.215321e-08 * aunit / (CLHEP::cm3 * CLHEP::cm);
static const double a5 = 5.398933e-10 * aunit / (CLHEP::cm3 * CLHEP::cm2);
#endif

// [Schulte, Med Phys, 2008], constant part of equations 7, 8 and 9
/** \class ConstantPartOfIntegrals
* \ingroup PCT Functions
* Constant part of Eq. 7, 8 and 9 [Schulte 2008, Medical Physics].
*/
class ConstantPartOfIntegrals
{
public:
Expand All @@ -71,7 +74,10 @@ class ConstantPartOfIntegrals
}
};

// [Schulte, Med Phys, 2008], integral for sigma in equation 8
/** \class IntegralForSigmaSqTheta
* \ingroup PCT Functions
* Integral for sigma in equation 8 [Schulte 2008, Medical Physics].
*/
class IntegralForSigmaSqTheta
{
public:
Expand All @@ -90,7 +96,10 @@ class IntegralForSigmaSqTheta
}
};

// [Schulte, Med Phys, 2008], integral for sigma in equation 9
/** \class IntegralForSigmaSqTTheta
* \ingroup PCT Functions
* Integral for sigma in equation 9 [Schulte 2008, Medical Physics].
*/
class IntegralForSigmaSqTTheta
{
public:
Expand All @@ -109,7 +118,10 @@ class IntegralForSigmaSqTTheta
}
};

// [Schulte, Med Phys, 2008], integral for sigma in equation 7
/** \class IntegralForSigmaSqT
* \ingroup PCT Functions
* Integral for sigma in equation 7 [Schulte 2008, Medical Physics].
*/
class IntegralForSigmaSqT
{
public:
Expand All @@ -133,9 +145,8 @@ class IntegralForSigmaSqT
} // end namespace Functor

/** \class SchulteMLPFunction
* \brief See [Schulte, Med Phys, 2008].
*
* \ingroup Functions PCT
* \ingroup PCT Functions
* Maximum-likelihood proton path for proton CT [Schulte 2008, Medical Physics].
*/
class PCT_EXPORT SchulteMLPFunction : public MostLikelyPathFunction<double>
{
Expand Down
3 changes: 1 addition & 2 deletions include/pctThirdOrderPolynomialMLPFunction.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,8 @@ namespace pct
{

/** \class ThirdOrderPolynomialMLPFunction
* \ingroup PCT Functions
* \brief Fit a third order polynomial given input and output direction and position.
*
* \ingroup Functions PCT
*/
template <class TCoordRep = double>
class ITK_TEMPLATE_EXPORT ThirdOrderPolynomialMLPFunction : public MostLikelyPathFunction<TCoordRep>
Expand Down
2 changes: 1 addition & 1 deletion include/pctZengWeightedBackProjectionImageFilter.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
/** \class ZengWeightedBackProjectionImageFilter
* \ingroup PCT
* From an input 4D image where the 4th dimension is the angle, computes
* the weighted backprojection for DBP described in [Zeng, Med Phys, 2007].
* the weighted backprojection for DBP described in [Zeng 2007, Medical Physics].
*
* \author Simon Rit
*/
Expand Down
Loading