** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: backprojectors.h,v 1.4 2000/06/22 10:17:28 kevin Exp $
+** $Id: backprojectors.h,v 1.7 2000/07/09 08:16:17 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
BPROJ_TABLE,
BPROJ_DIFF,
BPROJ_DIFF2,
- BPROJ_IDIFF2
+ BPROJ_IDIFF2,
+ BPROJ_IDIFF3
} BackprojectID;
typedef enum {
I_2BSPLINE,
I_3BSPLINE,
#endif
- INTERP_LINEAR // Linear interpolation
+ INTERP_LINEAR, // Linear interpolation
+ INTERP_FREQ_PREINTERPOLATE,
} InterpolationID;
+ static const char BPROJ_TRIG_STR[]= "trig";
+ static const char BPROJ_TABLE_STR[]= "table";
+ 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_PREINTERPOLATE_STR[]= "freq_preinterpolate";
+
Backprojector (const Projections& proj, ImageFile& im, const char* const backprojName, const char* const interpName);
~Backprojector (void);
void BackprojectView (const double* const viewData, const double viewAngle);
bool fail(void) const {return m_fail;}
+ const string& failMessage(void) const {return m_failMessage;}
private:
string m_nameBackproject;
string m_nameInterpolation;
BackprojectID m_idBackproject;
InterpolationID m_idInterpolation;
- bool m_fail;
Backproject* m_pBackprojectImplem;
-
- static const char BPROJ_TRIG_STR[]= "trig";
- static const char BPROJ_TABLE_STR[]= "table";
- static const char BPROJ_DIFF_STR[]= "diff";
- static const char BPROJ_DIFF2_STR[]= "diff2";
- static const char BPROJ_IDIFF2_STR[]= "idiff2";
-
- static const char INTERP_NEAREST_STR[]= "nearest";
- static const char INTERP_LINEAR_STR[]= "linear";
- static const char INTERP_BSPLINE_STR[]= "bspline";
+ bool m_fail;
+ string m_failMessage;
static const InterpolationID convertInterpolationNameToID (const char* const interpName);
static const char* convertInterpolationIDToName (const InterpolationID interpID);
};
+class BackprojectIntDiff3 : public BackprojectDiff
+{
+ public:
+ BackprojectIntDiff3 (const Projections& proj, ImageFile& im, Backprojector::InterpolationID interpType)
+ : BackprojectDiff::BackprojectDiff (proj, im, interpType)
+ {}
+
+ void BackprojectView (const double* const t, double view_angle);
+};
+
+