X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=include%2Fbackprojectors.h;h=ab15930d600eb6ca695f3adb2e407b0cf736977a;hb=30e455abcd8cac05ce7afe43216ec9e26342e1cf;hp=6b8b9c4635b76c183161167f14ec2f60e3f2b9b9;hpb=08f34bf3ba14d4f436f4d2ef0ee5af1d6eb266ac;p=ctsim.git diff --git a/include/backprojectors.h b/include/backprojectors.h index 6b8b9c4..ab15930 100644 --- a/include/backprojectors.h +++ b/include/backprojectors.h @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: backprojectors.h,v 1.5 2000/06/25 17:32:24 kevin Exp $ +** $Id: backprojectors.h,v 1.8 2000/07/11 10:32:44 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -39,7 +39,8 @@ class Backprojector BPROJ_TABLE, BPROJ_DIFF, BPROJ_DIFF2, - BPROJ_IDIFF2 + BPROJ_IDIFF2, + BPROJ_IDIFF3 } BackprojectID; typedef enum { @@ -51,7 +52,8 @@ class Backprojector I_2BSPLINE, I_3BSPLINE, #endif - INTERP_LINEAR // Linear interpolation + INTERP_LINEAR, // Linear interpolation + INTERP_FREQ_PREINTERPOLATION, } InterpolationID; static const char BPROJ_TRIG_STR[]= "trig"; @@ -59,13 +61,14 @@ class Backprojector static const char BPROJ_DIFF_STR[]= "diff"; static const char BPROJ_DIFF2_STR[]= "diff2"; static const char BPROJ_IDIFF2_STR[]= "idiff2"; + static const char BPROJ_IDIFF3_STR[]= "idiff3"; static const char INTERP_NEAREST_STR[]= "nearest"; static const char INTERP_LINEAR_STR[]= "linear"; static const char INTERP_BSPLINE_STR[]= "bspline"; + static const char INTERP_FREQ_PREINTERPOLATION_STR[]= "freq_preinterpolation"; - - Backprojector (const Projections& proj, ImageFile& im, const char* const backprojName, const char* const interpName); + Backprojector (const Projections& proj, ImageFile& im, const char* const backprojName, const char* const interpName, const int interpFactor); ~Backprojector (void); @@ -88,14 +91,14 @@ class Backprojector static const BackprojectID convertBackprojectNameToID (const char* const bprojName); static const char* convertBackprojectIDToName (const BackprojectID bprojID); - bool initBackprojector (const Projections& proj, ImageFile& im, const char* const backprojName, const char* const interpName); + bool initBackprojector (const Projections& proj, ImageFile& im, const char* const backprojName, const char* const interpName, const int interpFactor); }; class Backproject { public: - Backproject (const Projections& proj, ImageFile& im, Backprojector::InterpolationID interpType); + Backproject (const Projections& proj, ImageFile& im, Backprojector::InterpolationID interpType, const int interpFactor); virtual ~Backproject (); @@ -118,6 +121,7 @@ class Backproject int nDet; double xMin, xMax, yMin, yMax; // Retangular coords of phantom double xInc, yInc; // size of cells + int m_interpFactor; private: Backproject (const Backproject& rhs); @@ -128,8 +132,8 @@ class Backproject class BackprojectTrig : public Backproject { public: - BackprojectTrig (const Projections& proj, ImageFile& im, Backprojector::InterpolationID interpType) - : Backproject::Backproject (proj, im, interpType) + BackprojectTrig (const Projections& proj, ImageFile& im, Backprojector::InterpolationID interpType, const int interpFactor) + : Backproject::Backproject (proj, im, interpType, interpFactor) {} void BackprojectView (const double* const t, double view_angle); @@ -139,7 +143,7 @@ class BackprojectTrig : public Backproject class BackprojectTable : public Backproject { public: - BackprojectTable (const Projections& proj, ImageFile& im, Backprojector::InterpolationID interpType); + BackprojectTable (const Projections& proj, ImageFile& im, Backprojector::InterpolationID interpType, const int interpFactor); ~BackprojectTable (); void BackprojectView (const double* const t, double view_angle); @@ -155,7 +159,7 @@ class BackprojectTable : public Backproject class BackprojectDiff : public Backproject { public: - BackprojectDiff (const Projections& proj, ImageFile& im, Backprojector::InterpolationID interpType); + BackprojectDiff (const Projections& proj, ImageFile& im, Backprojector::InterpolationID interpType, const int interpFactor); ~BackprojectDiff (); void BackprojectView (const double* const t, double view_angle); @@ -169,8 +173,8 @@ class BackprojectDiff : public Backproject class BackprojectDiff2 : public BackprojectDiff { public: - BackprojectDiff2 (const Projections& proj, ImageFile& im, Backprojector::InterpolationID interpType) - : BackprojectDiff::BackprojectDiff (proj, im, interpType) + BackprojectDiff2 (const Projections& proj, ImageFile& im, Backprojector::InterpolationID interpType, const int interpFactor) + : BackprojectDiff::BackprojectDiff (proj, im, interpType, interpFactor) {} void BackprojectView (const double* const t, double view_angle); @@ -179,8 +183,19 @@ class BackprojectDiff2 : public BackprojectDiff class BackprojectIntDiff2 : public BackprojectDiff { public: - BackprojectIntDiff2 (const Projections& proj, ImageFile& im, Backprojector::InterpolationID interpType) - : BackprojectDiff::BackprojectDiff (proj, im, interpType) + BackprojectIntDiff2 (const Projections& proj, ImageFile& im, Backprojector::InterpolationID interpType, const int interpFactor) + : BackprojectDiff::BackprojectDiff (proj, im, interpType, interpFactor) + {} + + void BackprojectView (const double* const t, double view_angle); +}; + + +class BackprojectIntDiff3 : public BackprojectDiff +{ + public: + BackprojectIntDiff3 (const Projections& proj, ImageFile& im, Backprojector::InterpolationID interpType, const int interpFactor) + : BackprojectDiff::BackprojectDiff (proj, im, interpType, interpFactor) {} void BackprojectView (const double* const t, double view_angle);