From f1831812306ad7114fcd94618cc2857bb63c8fc1 Mon Sep 17 00:00:00 2001 From: "Kevin M. Rosenberg" Date: Sun, 3 Dec 2000 15:16:18 +0000 Subject: [PATCH] r234: Fixed scaling bug with redundant rotations around phantom --- ChangeLog | 1 + include/backprojectors.h | 4 ++-- libctsim/backprojectors.cpp | 13 +++++++------ 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 582e251..876515c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,7 @@ Fixed minor compilation problem with procsignal.h Updated README file Fixed bug when simulating projections and Trace == CONSOLE + Fixed scaling bug when performing redundant rotations around object 2.0.5 - 12/01/00 Improved compilation on RedHat 7 diff --git a/include/backprojectors.h b/include/backprojectors.h index ef70d05..e3418df 100644 --- a/include/backprojectors.h +++ b/include/backprojectors.h @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: backprojectors.h,v 1.15 2000/09/02 05:10:39 kevin Exp $ +** $Id: backprojectors.h,v 1.16 2000/12/03 15:16:17 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 @@ -126,7 +126,7 @@ class Backproject kint32 nx; kint32 ny; double detInc; - double rotInc; + double rotScale; int iDetCenter; // index refering to L=0 projection int nDet; double xMin, xMax, yMin, yMax; // Retangular coords of phantom diff --git a/libctsim/backprojectors.cpp b/libctsim/backprojectors.cpp index 8c785ac..152e026 100644 --- a/libctsim/backprojectors.cpp +++ b/libctsim/backprojectors.cpp @@ -8,7 +8,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: backprojectors.cpp,v 1.14 2000/09/02 05:10:39 kevin Exp $ +** $Id: backprojectors.cpp,v 1.15 2000/12/03 15:16:18 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 @@ -262,7 +262,8 @@ Backproject::Backproject (const Projections& proj, ImageFile& im, const int inte detInc = proj.detInc(); nDet = proj.nDet(); iDetCenter = (nDet - 1) / 2; // index refering to L=0 projection - rotInc = proj.rotInc(); + rotScale = proj.rotInc(); + rotScale /= (proj.nView() * proj.rotInc() / PI); // scale by number of PI rotations v = im.getArray(); nx = im.nx(); @@ -288,7 +289,7 @@ Backproject::ScaleImageByRotIncrement () { for (int ix = 0; ix < nx; ix++) for (int iy = 0; iy < ny; iy++) - v[ix][iy] *= rotInc; + v[ix][iy] *= rotScale; } void Backproject::errorIndexOutsideDetector (int ix, int iy, double theta, double r, double phi, double L, int iDetPos) @@ -335,7 +336,7 @@ BackprojectTrig::BackprojectView (const double* const filteredProj, const double if (iDetPos < 0 || iDetPos >= nDet) // check for impossible: index outside of raysum pos errorIndexOutsideDetector (ix, iy, theta, r, phi, L, iDetPos); else - v[ix][iy] += rotInc * filteredProj[iDetPos]; + v[ix][iy] += rotScale * filteredProj[iDetPos]; } else if (interpType == Backprojector::INTERP_LINEAR) { double p = L / detInc; // position along detector double pFloor = floor (p); @@ -344,7 +345,7 @@ BackprojectTrig::BackprojectView (const double* const filteredProj, const double if (iDetPos < 0 || iDetPos >= nDet - 1) // check for impossible: index outside of raysum pos errorIndexOutsideDetector (ix, iy, theta, r, phi, L, iDetPos); else - v[ix][iy] += rotInc * ((1-frac) * filteredProj[iDetPos] + frac * filteredProj[iDetPos+1]); + v[ix][iy] += rotScale * ((1-frac) * filteredProj[iDetPos] + frac * filteredProj[iDetPos+1]); } } } @@ -493,7 +494,7 @@ BackprojectDiff2::BackprojectView (const double* const filteredProj, const doubl double detPosColStart = start_r * cos (theta - start_phi) / detInc; #ifdef DEBUG - printf ("start_r=%8.5f, start_phi=%8.5f, rotInc=%8.5f\n", start_r, start_phi, rotInc); + printf ("start_r=%8.5f, start_phi=%8.5f, rotScale=%8.5f\n", start_r, start_phi, rotScale); #endif for (int ix = 0; ix < nx; ix++, detPosColStart += det_dx) { double curDetPos = detPosColStart; -- 2.34.1