diff options
author | Willem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl> | 2017-10-10 13:15:53 +0200 |
---|---|---|
committer | Willem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl> | 2017-10-11 12:19:34 +0200 |
commit | 90ef1f69d79a0c40414c5932dfa9bd69f363ae80 (patch) | |
tree | 5579258ec62e5cad1ba9a5203357b0bfc1c9a07a /include/astra/ParallelBeamLinearKernelProjector2D.inl | |
parent | bf92d2d8dfacd7125ed48403145dbd4dc6181e4a (diff) | |
download | astra-90ef1f69d79a0c40414c5932dfa9bd69f363ae80.tar.gz astra-90ef1f69d79a0c40414c5932dfa9bd69f363ae80.tar.bz2 astra-90ef1f69d79a0c40414c5932dfa9bd69f363ae80.tar.xz astra-90ef1f69d79a0c40414c5932dfa9bd69f363ae80.zip |
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.inl | 6 |
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; } |