summaryrefslogtreecommitdiffstats
path: root/cuda/2d/sirt.cu
diff options
context:
space:
mode:
authorWillem Jan Palenstijn <wjp@usecode.org>2016-04-14 13:12:51 +0200
committerWillem Jan Palenstijn <wjp@usecode.org>2016-04-14 13:12:51 +0200
commit7633a0f48ce030413642627f16e50d27da4cf709 (patch)
tree53150eade1dd920644c690a1d9da741cedcefdf6 /cuda/2d/sirt.cu
parenta7c4275ee8cd90b4ecf7fbca5d9571aae62a2931 (diff)
parent16430239d04ff738a21146c410918c285552543f (diff)
downloadastra-7633a0f48ce030413642627f16e50d27da4cf709.tar.gz
astra-7633a0f48ce030413642627f16e50d27da4cf709.tar.bz2
astra-7633a0f48ce030413642627f16e50d27da4cf709.tar.xz
astra-7633a0f48ce030413642627f16e50d27da4cf709.zip
Merge pull request #35 from wjp/relaxation
Add relaxation factor option to SIRT, SART
Diffstat (limited to 'cuda/2d/sirt.cu')
-rw-r--r--cuda/2d/sirt.cu8
1 files changed, 8 insertions, 0 deletions
diff --git a/cuda/2d/sirt.cu b/cuda/2d/sirt.cu
index 162ee77..4baaccb 100644
--- a/cuda/2d/sirt.cu
+++ b/cuda/2d/sirt.cu
@@ -50,6 +50,8 @@ SIRT::SIRT() : ReconAlgo()
D_minMaskData = 0;
D_maxMaskData = 0;
+ fRelaxation = 1.0f;
+
freeMinMaxMasks = false;
}
@@ -83,6 +85,8 @@ void SIRT::reset()
useVolumeMask = false;
useSinogramMask = false;
+ fRelaxation = 1.0f;
+
ReconAlgo::reset();
}
@@ -139,6 +143,9 @@ bool SIRT::precomputeWeights()
processVol<opMul>(D_pixelWeight, D_maskData, pixelPitch, dims);
}
+ // Also fold the relaxation factor into pixel weights
+ processVol<opMul>(D_pixelWeight, fRelaxation, pixelPitch, dims);
+
return true;
}
@@ -253,6 +260,7 @@ bool SIRT::iterate(unsigned int iterations)
callBP(D_tmpData, tmpPitch, D_projData, projPitch, 1.0f);
+ // pixel weights also contain the volume mask and relaxation factor
processVol<opAddMul>(D_volumeData, D_pixelWeight, D_tmpData, volumePitch, dims);
if (useMinConstraint)