X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=include%2Fprojections.h;h=3efbde920f64aab989976457266eafedfd082ac1;hp=d2fe89c0e6a286f58c7ae9f5c98fa76cd9c2780b;hb=f13a8c004b8f182b42d9e4df2bcd7c7f030bf1ad;hpb=3ea498d51ce4597e9649cd21f155b51175ea0bea diff --git a/include/projections.h b/include/projections.h index d2fe89c..3efbde9 100644 --- a/include/projections.h +++ b/include/projections.h @@ -7,10 +7,7 @@ ** Date Started: July 1, 1984 ** ** This is part of the CTSim program -** Copyright (c) 1983-2001 Kevin Rosenberg -** -** $Id: projections.h,v 1.35 2001/03/21 21:45:31 kevin Exp $ -** +** Copyright (c) 1983-2009 Kevin Rosenberg ** ** 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 @@ -41,7 +38,7 @@ class fnetorderstream; //used for rebinning divergent beam projections to parallel -class ParallelRaysumCoordinate { +class ParallelRaysumCoordinate { public: double m_dT; // Distance from center of origin double m_dTheta; // perpendicular angle to origin @@ -122,6 +119,10 @@ class Projections void printProjectionData (); void printScanInfo (std::ostringstream& os) const; + int Helical180LI(int interpView); + int Helical180LI_Equiangular(int interpView); + int HalfScanFeather(void); + bool read (const std::string& fname); bool read (const char* fname); bool write (const char* fname); @@ -133,10 +134,10 @@ class Projections 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 calcArrayPolarCoordinates (unsigned int nx, unsigned int ny, double** ppdView, double** ppdDet, int iNumDetWithZeros, double dZeropadRatio, double dDetInc); void interpolatePolar (ImageFileArray& v, ImageFileArray& vImag, unsigned int nx, unsigned int ny, std::complex** ppcDetValue, - double** ppdDet, double** ppdView, unsigned int nView, unsigned int nDet, unsigned int nDetWithZeros, + double** ppdDet, double** ppdView, unsigned int nView, unsigned int nDet, unsigned int nDetWithZeros, 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; @@ -170,7 +171,7 @@ class Projections DetectorArray& getDetectorArray (const int iview) { return (*m_projData[iview]); } - + const DetectorArray& getDetectorArray (const int iview) const { return (*m_projData[iview]); } @@ -179,19 +180,19 @@ class Projections static bool copyViewData (const char* const filename, std::ostream& os, int startView, int endView); static bool copyViewData (const std::string& filename, std::ostream& os, int startView, int endView); - + private: - int m_headerSize; // Size of disk file header - int m_geometry; // Geometry of scanner - class DetectorArray **m_projData; // Pointer to array of detarray_st pointers - std::string m_remark; // description of raysum data - int m_nDet; // number of detectors in array - int m_nView; // number of rotated views - double m_calcTime; // time required to calculate raysums - double m_rotStart; // starting view rotation - double m_rotInc; // angle between rotations - double m_detStart; // distance of beginning detector to center phantom - double m_detInc; // increment between detectors + int m_headerSize; // Size of disk file header + int m_geometry; // Geometry of scanner + class DetectorArray **m_projData; // Pointer to array of detarray_st pointers + std::string m_remark; // description of raysum data + int m_nDet; // number of detectors in array + int m_nView; // number of rotated views + double m_calcTime; // time required to calculate raysums + double m_rotStart; // starting view rotation + double m_rotInc; // angle between rotations + double m_detStart; // distance of beginning detector to center phantom + double m_detInc; // increment between detectors double m_dFocalLength; double m_dSourceDetectorLength; double m_dViewDiameter;