** Date Started: June 2000
**
** This is part of the CTSim program
-** Copyright (C) 1983-2000 Kevin Rosenberg
+** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: backprojectors.h,v 1.14 2000/08/31 08:38:58 kevin Exp $
+** $Id: backprojectors.h,v 1.22 2001/02/22 18:22:40 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
static const int BPROJ_TRIG;
static const int BPROJ_TABLE;
static const int BPROJ_DIFF;
- static const int BPROJ_DIFF2;
- static const int BPROJ_IDIFF2;
- static const int BPROJ_IDIFF3;
+ static const int BPROJ_IDIFF;
static const int INTERP_INVALID;
static const int INTERP_NEAREST;
static const int INTERP_LINEAR;
+ static const int INTERP_CUBIC;
static const int INTERP_FREQ_PREINTERPOLATION;
#if HAVE_BSPLINE_INTERP
static const int INTERP_BSPLINE;
void BackprojectView (const double* const viewData, const double viewAngle);
bool fail() const {return m_fail;}
- const string& failMessage() const {return m_failMessage;}
+ const std::string& failMessage() const {return m_failMessage;}
static const int getBackprojectCount() {return s_iBackprojectCount;}
- static const char** getBackprojectNameArray() {return s_aszBackprojectName;}
- static const char** getBackprojectTitleArray() {return s_aszBackprojectTitle;}
+ static const char* const* getBackprojectNameArray() {return s_aszBackprojectName;}
+ static const char* const* getBackprojectTitleArray() {return s_aszBackprojectTitle;}
static int convertBackprojectNameToID (const char* const bprojName);
static const char* convertBackprojectIDToName (const int bprojID);
static const char* convertBackprojectIDToTitle (const int bprojID);
static const int getInterpCount() {return s_iInterpCount;}
- static const char** getInterpNameArray() {return s_aszInterpName;}
- static const char** getInterpTitleArray() {return s_aszInterpTitle;}
+ static const char* const * getInterpNameArray() {return s_aszInterpName;}
+ static const char* const * getInterpTitleArray() {return s_aszInterpTitle;}
static int convertInterpNameToID (const char* const interpName);
static const char* convertInterpIDToName (const int interpID);
static const char* convertInterpIDToTitle (const int interpID);
private:
- string m_nameBackproject;
- string m_nameInterpolation;
+ std::string m_nameBackproject;
+ std::string m_nameInterpolation;
int m_idBackproject;
int m_idInterpolation;
Backproject* m_pBackprojectImplem;
bool m_fail;
- string m_failMessage;
+ std::string m_failMessage;
- static const char* s_aszBackprojectName[];
- static const char* s_aszBackprojectTitle[];
+ static const char* const s_aszBackprojectName[];
+ static const char* const s_aszBackprojectTitle[];
static const int s_iBackprojectCount;
- static const char* s_aszInterpName[];
- static const char* s_aszInterpTitle[];
+ static const char* const s_aszInterpName[];
+ static const char* const s_aszInterpTitle[];
static const int s_iInterpCount;
bool initBackprojector (const Projections& proj, ImageFile& im, const char* const backprojName, const char* const interpName, const int interpFactor);
kint32 nx;
kint32 ny;
double detInc;
- double rotInc;
+ double rotScale;
int iDetCenter; // index refering to L=0 projection
int nDet;
double xMin, xMax, yMin, yMax; // Retangular coords of phantom
{
public:
BackprojectTrig (const Projections& proj, ImageFile& im, int interpID, const int interpFactor)
- : Backproject::Backproject (proj, im, interpID, interpFactor)
+ : Backproject (proj, im, interpID, interpFactor)
{}
- void BackprojectView (const double* const t, double view_angle);
+ void BackprojectView (const double* const t, const double view_angle);
};
{
public:
BackprojectTable (const Projections& proj, ImageFile& im, int interpID, const int interpFactor);
- ~BackprojectTable ();
+ virtual ~BackprojectTable ();
- void BackprojectView (const double* const t, double view_angle);
+ void BackprojectView (const double* const t, const double view_angle);
protected:
Array2d<kfloat64> arrayR;
BackprojectDiff (const Projections& proj, ImageFile& im, int interpID, const int interpFactor);
~BackprojectDiff ();
- void BackprojectView (const double* const t, double view_angle);
+ void BackprojectView (const double* const t, const double view_angle);
protected:
double start_r;
double im_xinc, im_yinc;
};
-class BackprojectDiff2 : public BackprojectDiff
-{
- public:
- BackprojectDiff2 (const Projections& proj, ImageFile& im, int interpID, const int interpFactor)
- : BackprojectDiff::BackprojectDiff (proj, im, interpID, interpFactor)
- {}
-
- void BackprojectView (const double* const t, double view_angle);
-};
-
-class BackprojectIntDiff2 : public BackprojectDiff
-{
- public:
- BackprojectIntDiff2 (const Projections& proj, ImageFile& im, int interpID, const int interpFactor)
- : BackprojectDiff::BackprojectDiff (proj, im, interpID, interpFactor)
- {}
-
- void BackprojectView (const double* const t, double view_angle);
-};
-
-class BackprojectIntDiff3 : public BackprojectDiff
+class BackprojectIntDiff : public BackprojectDiff
{
public:
- BackprojectIntDiff3 (const Projections& proj, ImageFile& im, int interpID, const int interpFactor)
- : BackprojectDiff::BackprojectDiff (proj, im, interpID, interpFactor)
+ BackprojectIntDiff (const Projections& proj, ImageFile& im, int interpID, const int interpFactor)
+ : BackprojectDiff (proj, im, interpID, interpFactor)
{}
- void BackprojectView (const double* const t, double view_angle);
+ void BackprojectView (const double* const t, const double view_angle);
};
class BackprojectEquilinear : public BackprojectTable
{
public:
BackprojectEquilinear (const Projections& proj, ImageFile& im, int interpID, const int interpFactor)
- : BackprojectTable::BackprojectTable (proj, im, interpID, interpFactor)
+ : BackprojectTable (proj, im, interpID, interpFactor)
{}
- void BackprojectView (const double* const t, double view_angle);
+ void BackprojectView (const double* const t, const double view_angle);
+
+ virtual ~BackprojectEquilinear()
+ {}
};
class BackprojectEquiangular : public BackprojectTable
{
public:
BackprojectEquiangular (const Projections& proj, ImageFile& im, int interpID, const int interpFactor)
- : BackprojectTable::BackprojectTable (proj, im, interpID, interpFactor)
+ : BackprojectTable (proj, im, interpID, interpFactor)
{}
- void BackprojectView (const double* const t, double view_angle);
+ void BackprojectView (const double* const t, const double view_angle);
+
+ virtual ~BackprojectEquiangular()
+ {}
};