X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=include%2Fprojections.h;h=4c93304f33040dbe5ffca502021f769b7e8d1179;hp=aa76b1a05a21620eb7fc7556c7c7c68f813c7457;hb=23f5654dacb1952c15bda92c2606fae3a55e48ad;hpb=dc034c9d0b7d9c3874a324a4c2c189a02945adc8 diff --git a/include/projections.h b/include/projections.h index aa76b1a..4c93304 100644 --- a/include/projections.h +++ b/include/projections.h @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: projections.h,v 1.18 2000/12/16 06:12:47 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 @@ -32,17 +32,34 @@ class Scanner; class DetectorArray; class Array2dFileLabel; +class fnetorderstream; +#include "array2dfile.h" +#include "imagefile.h" +#include // 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); @@ -56,6 +73,12 @@ class Projections bool detarrayRead (fnetorderstream& fs, DetectorArray& darray, const int view_num); bool detarrayWrite (fnetorderstream& fs, const DetectorArray& darray, const int view_num); + 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** 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; void setNView (int nView); // used in MPI to restrict # of views @@ -121,6 +144,10 @@ class Projections 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 ();