** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: backprojectors.h,v 1.6 2000/07/07 15:30:59 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
I_2BSPLINE,
I_3BSPLINE,
#endif
- INTERP_LINEAR // Linear interpolation
+ INTERP_LINEAR, // Linear interpolation
+ INTERP_FREQ_PREINTERPOLATION,
} InterpolationID;
static const char BPROJ_TRIG_STR[]= "trig";
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);
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 ();
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);
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);
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);
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);
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);
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)
- : BackprojectDiff::BackprojectDiff (proj, im, interpType)
+ 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);