diff options
author | Willem Jan Palenstijn <wjp@usecode.org> | 2019-03-30 21:21:16 +0100 |
---|---|---|
committer | Willem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl> | 2019-09-25 14:10:09 +0200 |
commit | 12f86554bafb66e6afc6193f181527ba0749de92 (patch) | |
tree | 7d89d128c3011251d19be98333eefca450e99c5b /cuda/2d/par_bp.cu | |
parent | 11114e33fb504b0b74f3d239e77fe248a027cc23 (diff) | |
download | astra-12f86554bafb66e6afc6193f181527ba0749de92.tar.gz astra-12f86554bafb66e6afc6193f181527ba0749de92.tar.bz2 astra-12f86554bafb66e6afc6193f181527ba0749de92.tar.xz astra-12f86554bafb66e6afc6193f181527ba0749de92.zip |
Adjust SART to line integral scaling
Diffstat (limited to 'cuda/2d/par_bp.cu')
-rw-r--r-- | cuda/2d/par_bp.cu | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/cuda/2d/par_bp.cu b/cuda/2d/par_bp.cu index 21484b1..3bf78ee 100644 --- a/cuda/2d/par_bp.cu +++ b/cuda/2d/par_bp.cu @@ -176,7 +176,7 @@ __global__ void devBP_SART(float* D_volData, unsigned int volPitch, float offset const float fT = fX * angle_cos - fY * angle_sin + offset; const float fVal = tex2D(gT_projTexture, fT, 0.5f); - // NB: The 'scale' constant in devBP has been folded into fOutputScale by the caller here + // NB: The 'scale' constant in devBP is cancelled out by the SART weighting D_volData[Y*volPitch+X] += fVal * fOutputScale; } @@ -280,7 +280,8 @@ bool BP_SART(float* D_volumeData, unsigned int volumePitch, float angle_scaled_cos = angles[angle].fRayY / d; float angle_scaled_sin = -angles[angle].fRayX / d; // TODO: Check signs float angle_offset = (angles[angle].fDetSY * angles[angle].fRayX - angles[angle].fDetSX * angles[angle].fRayY) / d; - fOutputScale *= sqrt(angles[angle].fRayX * angles[angle].fRayX + angles[angle].fRayY * angles[angle].fRayY) / abs(d); + // NB: The adjoint scaling factor from regular BP is cancelled out by the SART weighting + //fOutputScale *= sqrt(angles[angle].fRayX * angles[angle].fRayX + angles[angle].fRayY * angles[angle].fRayY) / abs(d); dim3 dimBlock(g_blockSlices, g_blockSliceSize); dim3 dimGrid((dims.iVolWidth+g_blockSlices-1)/g_blockSlices, |