X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=libctsim%2Fprojections.cpp;h=a29d7c5a6ca967ab5e569349a46acc0ef2082797;hb=e4c1f7f8eb87558c3abf3bf1d20732361f425351;hp=db6431411cff6a435d78a2dfb31a9407a7a1f95b;hpb=a2a9671aff06827cec6d6b80234b90128d337e40;p=ctsim.git diff --git a/libctsim/projections.cpp b/libctsim/projections.cpp index db64314..a29d7c5 100644 --- a/libctsim/projections.cpp +++ b/libctsim/projections.cpp @@ -8,7 +8,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: projections.cpp,v 1.12 2000/07/06 08:30:30 kevin Exp $ +** $Id: projections.cpp,v 1.15 2000/07/15 08:36:13 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 @@ -208,7 +208,6 @@ Projections::headerRead (fnetorderstream& fs) if (! fs) return false; - off_t testPos; fs.readInt16 (_hsize); fs.readInt16 (_signature); fs.readInt32 (_nView); @@ -366,7 +365,7 @@ Projections::detarrayRead (fnetorderstream& fs, DetectorArray& darray, const int darray.setViewAngle (view_angle); // darray.setNDet ( nDet); - for (int i = 0; i < nDet; i++) { + for (unsigned int i = 0; i < nDet; i++) { kfloat32 detval; fs.readFloat32 (detval); detval_ptr[i] = detval; @@ -412,7 +411,7 @@ Projections::detarrayWrite (fnetorderstream& fs, const DetectorArray& darray, co fs.writeFloat64 (view_angle); fs.writeInt32 (nDet); - for (int i = 0; i < nDet; i++) { + for (unsigned int i = 0; i < nDet; i++) { kfloat32 detval = detval_ptr[i]; fs.writeFloat32 (detval); } @@ -487,17 +486,16 @@ Projections::printScanInfo (void) const */ bool -Projections::reconstruct (ImageFile& im, const char* const filterName, double filt_param, const char* const filterMethodName, const int zeropad, const char* const interpName, int interp_param, const char* const backprojectName, const int trace) +Projections::reconstruct (ImageFile& im, const char* const filterName, double filt_param, const char* const filterMethodName, const int zeropad, const char* const interpName, int interpFactor, const char* const backprojectName, const int trace) const { - int nview = m_nView; double detInc = m_detInc; - int n_filteredProj = m_nDet; + int n_filteredProj = m_nDet * interpFactor; double filteredProj [n_filteredProj]; // filtered projections #ifdef HAVE_BSPLINE_INTERP int spline_order = 0, zoom_factor = 0; if (interp_type == I_BSPLINE) { - zoom_factor = interp_param; + zoom_factor = interpFactor; spline_order = 3; zoom_factor = 3; n_filteredProj = (m_nDet - 1) * (zoom_factor + 1) + 1; @@ -505,7 +503,7 @@ Projections::reconstruct (ImageFile& im, const char* const filterName, double fi #endif double filterBW = 1. / detInc; - SignalFilter filter (filterName, filterMethodName, filterBW, m_detInc, m_nDet, filt_param, "spatial", zeropad); + SignalFilter filter (filterName, filterMethodName, filterBW, m_detInc, m_nDet, filt_param, "spatial", zeropad, interpFactor); filter.setTraceLevel(trace); if (filter.fail()) { @@ -540,7 +538,7 @@ Projections::reconstruct (ImageFile& im, const char* const filterName, double fi } #endif //HAVE_SGP - Backprojector bj (*this, im, backprojectName, interpName); + Backprojector bj (*this, im, backprojectName, interpName, interpFactor); if (bj.fail()) { sys_error (ERR_SEVERE, "%s [Projections::reconstruct]", bj.failMessage().c_str()); return false; @@ -550,8 +548,8 @@ Projections::reconstruct (ImageFile& im, const char* const filterName, double fi if (trace >= TRACE_TEXT) printf ("Reconstructing view %d (last = %d)\n", iview, m_nView - 1); - DetectorArray& darray = getDetectorArray (iview); - DetectorValue* detval = darray.detValues(); + const DetectorArray& darray = getDetectorArray (iview); + const DetectorValue* detval = darray.detValues(); filter.filterSignal (detval, filteredProj); @@ -574,8 +572,9 @@ Projections::reconstruct (ImageFile& im, const char* const filterName, double fi ezset ("xporigin .5."); ezset ("xlength .5."); ezset ("box"); + ezset ("grid"); - gid = ezplot (filteredProj, plot_xaxis, m_nDet); + gid = ezplot (filteredProj, plot_xaxis, n_filteredProj); } #endif //HAVE_SGP