summaryrefslogtreecommitdiffstats
path: root/cuda/2d/astra.h
diff options
context:
space:
mode:
authorWillem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl>2014-10-01 16:52:21 +0200
committerWillem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl>2014-10-01 16:52:21 +0200
commit9831569ef1730b1003f8ebe4378ce31973fcdf9f (patch)
tree6b6d7a26cd74564631b0268b9ad58cbb6c0023e6 /cuda/2d/astra.h
parent78a179737366188aea505173e3a935b08c3cef55 (diff)
downloadastra-9831569ef1730b1003f8ebe4378ce31973fcdf9f.tar.gz
astra-9831569ef1730b1003f8ebe4378ce31973fcdf9f.tar.bz2
astra-9831569ef1730b1003f8ebe4378ce31973fcdf9f.tar.xz
astra-9831569ef1730b1003f8ebe4378ce31973fcdf9f.zip
Support flexible 2D volume geometry
Diffstat (limited to 'cuda/2d/astra.h')
-rw-r--r--cuda/2d/astra.h36
1 files changed, 24 insertions, 12 deletions
diff --git a/cuda/2d/astra.h b/cuda/2d/astra.h
index 42b15e8..d2d7059 100644
--- a/cuda/2d/astra.h
+++ b/cuda/2d/astra.h
@@ -42,6 +42,11 @@ enum Cuda2DProjectionKernel {
ker2d_default = 0
};
+class CParallelProjectionGeometry2D;
+class CFanFlatProjectionGeometry2D;
+class CFanFlatVecProjectionGeometry2D;
+class CVolumeGeometry2D;
+
class AstraFBP_internal;
class _AstraExport AstraFBP {
@@ -195,24 +200,31 @@ _AstraExport bool astraCudaFP(const float* pfVolume, float* pfSinogram,
unsigned int iProjAngles, unsigned int iProjDets,
const float *pfAngles, const float *pfOffsets,
float fDetSize = 1.0f, unsigned int iDetSuperSampling = 1,
- int iGPUIndex = 0);
-
-// Do a single forward projection, fan beam
-_AstraExport bool astraCudaFanFP(const float* pfVolume, float* pfSinogram,
- unsigned int iVolWidth, unsigned int iVolHeight,
- unsigned int iProjAngles, unsigned int iProjDets,
- const float *pfAngles, float fOriginSourceDistance,
- float fOriginDetectorDistance, float fPixelSize = 1.0f,
- float fDetSize = 1.0f,
- unsigned int iDetSuperSampling = 1,
- int iGPUIndex = 0);
+ float fOutputScale = 1.0f, int iGPUIndex = 0);
_AstraExport bool astraCudaFanFP(const float* pfVolume, float* pfSinogram,
unsigned int iVolWidth, unsigned int iVolHeight,
unsigned int iProjAngles, unsigned int iProjDets,
const SFanProjection *pAngles,
unsigned int iDetSuperSampling = 1,
- int iGPUIndex = 0);
+ float fOutputScale = 1.0f, int iGPUIndex = 0);
+
+
+_AstraExport bool convertAstraGeometry(const CVolumeGeometry2D* pVolGeom,
+ const CParallelProjectionGeometry2D* pProjGeom,
+ float*& pfDetectorOffsets, float*& pfProjectionAngles,
+ float& fDetSize, float& fOutputScale);
+
+_AstraExport bool convertAstraGeometry(const CVolumeGeometry2D* pVolGeom,
+ const CFanFlatProjectionGeometry2D* pProjGeom,
+ astraCUDA::SFanProjection*& pProjs,
+ float& outputScale);
+
+_AstraExport bool convertAstraGeometry(const CVolumeGeometry2D* pVolGeom,
+ const CFanFlatVecProjectionGeometry2D* pProjGeom,
+ astraCUDA::SFanProjection*& pProjs,
+ float& outputScale);
+
}
#endif