detInc = proj.detInc();
nDet = proj.nDet();
iDetCenter = (nDet - 1) / 2; // index refering to L=0 projection
- rotScale = proj.rotInc();
if (proj.geometry() == Scanner::GEOMETRY_PARALLEL)
- rotScale /= (proj.nView() * proj.rotInc() / PI); // scale by number of PI rotations
+ rotScale = PI / proj.nView(); // scale by number of PI rotations
else if (proj.geometry() == Scanner::GEOMETRY_EQUIANGULAR || proj.geometry() == Scanner::GEOMETRY_EQUILINEAR)
- rotScale /= (proj.nView() * proj.rotInc() / (2 * PI)); // scale by number of 2PI rotations
+ rotScale = (2 * PI) / proj.nView(); // scale by number of 2PI rotations
else
sys_error (ERR_SEVERE, "Invalid geometry type %d [Backproject::Backproject]", proj.geometry());
const int iDetPos = (curDetPos + halfScale) >> scaleShift;
if (iDetPos >= 0 && iDetPos <= iLastDet)
*pImCol++ += filteredProj[iDetPos];
+ else
+ pImCol++;
+
} // end for iy
} else if (interpType == Backprojector::INTERP_FREQ_PREINTERPOLATION) {
for (int iy = 0; iy < ny; iy++, curDetPos += det_dy) {
const int iDetPos = ((curDetPos + halfScale) >> scaleShift) * m_interpFactor;
if (iDetPos >= 0 && iDetPos <= iLastDet)
*pImCol++ += filteredProj[iDetPos];
+ else
+ pImCol++;
} // end for iy
} else if (interpType == Backprojector::INTERP_LINEAR) {
for (int iy = 0; iy < ny; iy++, curDetPos += det_dy) {
if (iDetPos >= 0 && iDetPos <= iLastDet) {
const long detRemainder = curDetPos & scaleBitmask;
*pImCol++ += filteredProj[iDetPos] + (detRemainder * deltaFilteredProj[iDetPos]);
- }
+ } else
+ pImCol++;
} // end for iy
} else if (interpType == Backprojector::INTERP_CUBIC) {
for (int iy = 0; iy < ny; iy++, curDetPos += det_dy) {