summaryrefslogtreecommitdiff
path: root/include/astra/ParallelBeamLinearKernelProjector2D.inl
diff options
context:
space:
mode:
authorWillem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl>2017-10-10 13:15:53 +0200
committerWillem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl>2017-10-11 12:19:34 +0200
commit90ef1f69d79a0c40414c5932dfa9bd69f363ae80 (patch)
tree5579258ec62e5cad1ba9a5203357b0bfc1c9a07a /include/astra/ParallelBeamLinearKernelProjector2D.inl
parentbf92d2d8dfacd7125ed48403145dbd4dc6181e4a (diff)
Scale 2D projection results by detector pixel width
The strip and cuda projectors already did this scaling, so this makes the other behave consistently.
Diffstat (limited to 'include/astra/ParallelBeamLinearKernelProjector2D.inl')
-rw-r--r--include/astra/ParallelBeamLinearKernelProjector2D.inl6
1 files changed, 4 insertions, 2 deletions
diff --git a/include/astra/ParallelBeamLinearKernelProjector2D.inl b/include/astra/ParallelBeamLinearKernelProjector2D.inl
index ccb8cda..d2c529f 100644
--- a/include/astra/ParallelBeamLinearKernelProjector2D.inl
+++ b/include/astra/ParallelBeamLinearKernelProjector2D.inl
@@ -155,14 +155,16 @@ void CParallelBeamLinearKernelProjector2D::projectBlock_internal(int _iProjFrom,
const SParProjection * proj = &pVecProjectionGeometry->getProjectionVectors()[iAngle];
+ float32 detSize = sqrt(proj->fDetUX * proj->fDetUX + proj->fDetUY * proj->fDetUY);
+
bool vertical = fabs(proj->fRayX) < fabs(proj->fRayY);
if (vertical) {
RxOverRy = proj->fRayX/proj->fRayY;
- lengthPerRow = m_pVolumeGeometry->getPixelLengthX() * sqrt(proj->fRayY*proj->fRayY + proj->fRayX*proj->fRayX) / abs(proj->fRayY);
+ lengthPerRow = detSize * m_pVolumeGeometry->getPixelLengthX() * sqrt(proj->fRayY*proj->fRayY + proj->fRayX*proj->fRayX) / abs(proj->fRayY);
deltac = -pixelLengthY * RxOverRy * inv_pixelLengthX;
} else {
RyOverRx = proj->fRayY/proj->fRayX;
- lengthPerCol = m_pVolumeGeometry->getPixelLengthY() * sqrt(proj->fRayY*proj->fRayY + proj->fRayX*proj->fRayX) / abs(proj->fRayX);
+ lengthPerCol = detSize * m_pVolumeGeometry->getPixelLengthY() * sqrt(proj->fRayY*proj->fRayY + proj->fRayX*proj->fRayX) / abs(proj->fRayX);
deltar = -pixelLengthX * RyOverRx * inv_pixelLengthY;
}