** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: projections.h,v 1.19 2001/01/03 22:00:46 kevin Exp $
+** $Id: projections.h,v 1.20 2001/01/04 21:28:41 kevin Exp $
**
**
** This program is free software; you can redistribute it and/or modify
class Scanner;
class DetectorArray;
class Array2dFileLabel;
+class fnetorderstream;
+#include "array2dfile.h"
+#include "imagefile.h"
+#include <complex>
// Projections
class Projections
{
public:
+
+ static const int POLAR_INTERP_INVALID;
+ static const int POLAR_INTERP_NEAREST;
+ static const int POLAR_INTERP_BILINEAR;
+ static const int POLAR_INTERP_BICUBIC;
+
Projections (const int nView, const int nDet);
Projections (const Scanner& scanner);
Projections ();
~Projections ();
+ static const int getInterpCount() {return s_iInterpCount;}
+ static const char** getInterpNameArray() {return s_aszInterpName;}
+ static const char** 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);
+
void initFromScanner (const Scanner& scanner);
void printProjectionData (int startView, int endView);
bool convertPolar (ImageFile& rIF, int iInterpolation);
bool convertFFTPolar (ImageFile& rIF, int iInterpolation, int iZeropad);
+ void calcArrayPolarCoordinates (unsigned int nx, unsigned int ny, double** ppdView, double** ppdDet);
+ void interpolatePolar (ImageFileArray& v, ImageFileArray& vImag, unsigned int nx, unsigned int ny, std::complex<double>** ppcDetValue,
+ double** ppdDet, double** ppdView, unsigned int nView, unsigned int nDet, int iInterpolate);
bool reconstruct (ImageFile& im, const char* const filterName, double filt_param, const char* const filterMethodName, const int zeropad, const char* frequencyFilterName, const char* const interpName, int interp_param, const char* const backprojName, const int trace) const;
const static kuint16 m_signature;
+ static const char* s_aszInterpName[];
+ static const char* s_aszInterpTitle[];
+ static const int s_iInterpCount;
+
bool headerWrite (fnetorderstream& fs);
bool headerRead (fnetorderstream& fs);
void newProjData ();