diff options
| -rw-r--r-- | astra_vc08.vcproj | 12 | ||||
| -rw-r--r-- | astra_vc11.vcxproj | 6 | ||||
| -rw-r--r-- | build/linux/Makefile.in | 2 | ||||
| -rw-r--r-- | cuda/2d/dims.h | 12 | ||||
| -rw-r--r-- | cuda/3d/dims3d.h | 41 | ||||
| -rw-r--r-- | include/astra/ConeVecProjectionGeometry3D.h | 2 | ||||
| -rw-r--r-- | include/astra/FanFlatVecProjectionGeometry2D.h | 5 | ||||
| -rw-r--r-- | include/astra/GeometryUtil2D.h | 47 | ||||
| -rw-r--r-- | include/astra/GeometryUtil3D.h | 73 | ||||
| -rw-r--r-- | include/astra/ParallelVecProjectionGeometry3D.h | 2 | ||||
| -rw-r--r-- | src/GeometryUtil3D.cpp (renamed from cuda/3d/dims3d.cu) | 13 | 
11 files changed, 151 insertions, 64 deletions
| diff --git a/astra_vc08.vcproj b/astra_vc08.vcproj index 750a9eb..957586a 100644 --- a/astra_vc08.vcproj +++ b/astra_vc08.vcproj @@ -967,6 +967,10 @@  					>
  				</File>
  				<File
 +					RelativePath=".\src\GeometryUtil3D.cpp"
 +					>
 +				</File>
 +				<File
  					RelativePath=".\src\Logger.cpp"
  					>
  				</File>
 @@ -1007,6 +1011,14 @@  					>
  				</File>
  				<File
 +					RelativePath=".\include\astra\GeometryUtil2D.h"
 +					>
 +				</File>
 +				<File
 +					RelativePath=".\include\astra\GeometryUtil3D.h"
 +					>
 +				</File>
 +				<File
  					RelativePath=".\include\astra\Logger.h"
  					>
  				</File>
 diff --git a/astra_vc11.vcxproj b/astra_vc11.vcxproj index 482bb1b..6596a05 100644 --- a/astra_vc11.vcxproj +++ b/astra_vc11.vcxproj @@ -255,6 +255,7 @@      <ClCompile Include="src\ForwardProjectionAlgorithm.cpp" />      <ClCompile Include="src\Fourier.cpp" />      <ClCompile Include="src\Globals.cpp" /> +    <ClCompile Include="src\GeometryUtil3D.cpp" />      <ClCompile Include="src\Logger.cpp" />      <ClCompile Include="src\ParallelBeamBlobKernelProjector2D.cpp" />      <ClCompile Include="src\ParallelBeamLinearKernelProjector2D.cpp" /> @@ -364,6 +365,8 @@      <ClInclude Include="include\astra\ForwardProjectionAlgorithm.h" />      <ClInclude Include="include\astra\Fourier.h" />      <ClInclude Include="include\astra\Globals.h" /> +    <ClInclude Include="include\astra\GeometryUtil2D.h" /> +    <ClInclude Include="include\astra\GeometryUtil3D.h" />      <ClInclude Include="include\astra\Logger.h" />      <ClInclude Include="include\astra\ParallelBeamBlobKernelProjector2D.h" />      <ClInclude Include="include\astra\ParallelBeamLinearKernelProjector2D.h" /> @@ -415,7 +418,6 @@      <CudaCompile Include="cuda\3d\cone_bp.cu" />      <CudaCompile Include="cuda\3d\cone_fp.cu" />      <CudaCompile Include="cuda\3d\darthelper3d.cu" /> -    <CudaCompile Include="cuda\3d\dims3d.cu" />      <CudaCompile Include="cuda\3d\fdk.cu" />      <CudaCompile Include="cuda\3d\par3d_bp.cu" />      <CudaCompile Include="cuda\3d\par3d_fp.cu" /> @@ -436,4 +438,4 @@    <ImportGroup Label="ExtensionTargets">      <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 5.5.targets" />    </ImportGroup> -</Project>
\ No newline at end of file +</Project> diff --git a/build/linux/Makefile.in b/build/linux/Makefile.in index 6620446..cd5e74b 100644 --- a/build/linux/Makefile.in +++ b/build/linux/Makefile.in @@ -116,6 +116,7 @@ BASE_OBJECTS=\  	src/Float32VolumeData3DMemory.lo \  	src/ForwardProjectionAlgorithm.lo \  	src/Fourier.lo \ +	src/GeometryUtil3D.lo \  	src/Globals.lo \  	src/Logger.lo \  	src/ParallelBeamBlobKernelProjector2D.lo \ @@ -185,7 +186,6 @@ CUDA_OBJECTS=\  	cuda/3d/cgls3d.lo \  	cuda/3d/cone_fp.lo \  	cuda/3d/cone_bp.lo \ -	cuda/3d/dims3d.lo \  	cuda/3d/fdk.lo \  	cuda/3d/par3d_fp.lo \  	cuda/3d/par3d_bp.lo \ diff --git a/cuda/2d/dims.h b/cuda/2d/dims.h index 37bfa66..e870da5 100644 --- a/cuda/2d/dims.h +++ b/cuda/2d/dims.h @@ -29,18 +29,12 @@ $Id$  #ifndef _CUDA_DIMS_H  #define _CUDA_DIMS_H -namespace astraCUDA { +#include "astra/GeometryUtil2D.h" -struct SFanProjection { -        // the source -        float fSrcX, fSrcY; -        // the start of the (linear) detector -        float fDetSX, fDetSY; +namespace astraCUDA { -        // the length of a single detector pixel -        float fDetUX, fDetUY; -}; +using astra::SFanProjection;  struct SDimensions { diff --git a/cuda/3d/dims3d.h b/cuda/3d/dims3d.h index 9bf0b68..5437a85 100644 --- a/cuda/3d/dims3d.h +++ b/cuda/3d/dims3d.h @@ -29,46 +29,7 @@ $Id$  #ifndef _CUDA_CONE_DIMS_H  #define _CUDA_CONE_DIMS_H -namespace astra { - -struct SConeProjection { -	// the source -	double fSrcX, fSrcY, fSrcZ; - -	// the origin ("bottom left") of the (flat-panel) detector -	double fDetSX, fDetSY, fDetSZ; - -	// the U-edge of a detector pixel -	double fDetUX, fDetUY, fDetUZ; - -	// the V-edge of a detector pixel -	double fDetVX, fDetVY, fDetVZ; -}; - -struct SPar3DProjection { -	// the ray direction -	double fRayX, fRayY, fRayZ; - -	// the origin ("bottom left") of the (flat-panel) detector -	double fDetSX, fDetSY, fDetSZ; - -	// the U-edge of a detector pixel -	double fDetUX, fDetUY, fDetUZ; - -	// the V-edge of a detector pixel -	double fDetVX, fDetVY, fDetVZ; -}; - -void computeBP_UV_Coeffs(const SPar3DProjection& proj, double &fUX, double &fUY, double &fUZ, double &fUC, -                                                       double &fVX, double &fVY, double &fVZ, double &fVC); - -void computeBP_UV_Coeffs(const SConeProjection& proj, double &fUX, double &fUY, double &fUZ, double &fUC, -                                                      double &fVX, double &fVY, double &fVZ, double &fVC, -                                                      double &fDX, double &fDY, double &fDZ, double &fDC); - -} - - +#include "astra/GeometryUtil3D.h"  namespace astraCUDA3d { diff --git a/include/astra/ConeVecProjectionGeometry3D.h b/include/astra/ConeVecProjectionGeometry3D.h index e82a411..71e8010 100644 --- a/include/astra/ConeVecProjectionGeometry3D.h +++ b/include/astra/ConeVecProjectionGeometry3D.h @@ -30,7 +30,7 @@ $Id$  #define _INC_ASTRA_CONEVECPROJECTIONGEOMETRY3D  #include "ProjectionGeometry3D.h" -#include "../cuda/3d/dims3d.h" +#include "GeometryUtil3D.h"  namespace astra  { diff --git a/include/astra/FanFlatVecProjectionGeometry2D.h b/include/astra/FanFlatVecProjectionGeometry2D.h index ee85408..d93de79 100644 --- a/include/astra/FanFlatVecProjectionGeometry2D.h +++ b/include/astra/FanFlatVecProjectionGeometry2D.h @@ -30,13 +30,10 @@ $Id$  #define _INC_ASTRA_FANFLATVECPROJECTIONGEOMETRY2D  #include "ProjectionGeometry2D.h" -#include "../cuda/2d/dims.h" +#include "GeometryUtil2D.h"  #include <cmath> -// FIXME: Avoid using -using astraCUDA::SFanProjection; -  namespace astra  { diff --git a/include/astra/GeometryUtil2D.h b/include/astra/GeometryUtil2D.h new file mode 100644 index 0000000..d4ee92e --- /dev/null +++ b/include/astra/GeometryUtil2D.h @@ -0,0 +1,47 @@ +/* +----------------------------------------------------------------------- +Copyright: 2010-2015, iMinds-Vision Lab, University of Antwerp +           2014-2015, CWI, Amsterdam + +Contact: astra@uantwerpen.be +Website: http://sf.net/projects/astra-toolbox + +This file is part of the ASTRA Toolbox. + + +The ASTRA Toolbox is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +The ASTRA Toolbox is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with the ASTRA Toolbox. If not, see <http://www.gnu.org/licenses/>. + +----------------------------------------------------------------------- +$Id$ +*/ + +#ifndef _INC_ASTRA_GEOMETRYUTIL2D +#define _INC_ASTRA_GEOMETRYUTIL2D + +namespace astra { + +struct SFanProjection { +        // the source +        float fSrcX, fSrcY; + +        // the start of the (linear) detector +        float fDetSX, fDetSY; + +        // the length of a single detector pixel +        float fDetUX, fDetUY; +}; + +} + +#endif diff --git a/include/astra/GeometryUtil3D.h b/include/astra/GeometryUtil3D.h new file mode 100644 index 0000000..698372e --- /dev/null +++ b/include/astra/GeometryUtil3D.h @@ -0,0 +1,73 @@ +/* +----------------------------------------------------------------------- +Copyright: 2010-2015, iMinds-Vision Lab, University of Antwerp +           2014-2015, CWI, Amsterdam + +Contact: astra@uantwerpen.be +Website: http://sf.net/projects/astra-toolbox + +This file is part of the ASTRA Toolbox. + + +The ASTRA Toolbox is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +The ASTRA Toolbox is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with the ASTRA Toolbox. If not, see <http://www.gnu.org/licenses/>. + +----------------------------------------------------------------------- +$Id$ +*/ + +#ifndef _INC_ASTRA_GEOMETRYUTIL3D +#define _INC_ASTRA_GEOMETRYUTIL3D + +namespace astra { + +struct SConeProjection { +	// the source +	double fSrcX, fSrcY, fSrcZ; + +	// the origin ("bottom left") of the (flat-panel) detector +	double fDetSX, fDetSY, fDetSZ; + +	// the U-edge of a detector pixel +	double fDetUX, fDetUY, fDetUZ; + +	// the V-edge of a detector pixel +	double fDetVX, fDetVY, fDetVZ; +}; + +struct SPar3DProjection { +	// the ray direction +	double fRayX, fRayY, fRayZ; + +	// the origin ("bottom left") of the (flat-panel) detector +	double fDetSX, fDetSY, fDetSZ; + +	// the U-edge of a detector pixel +	double fDetUX, fDetUY, fDetUZ; + +	// the V-edge of a detector pixel +	double fDetVX, fDetVY, fDetVZ; +}; + +void computeBP_UV_Coeffs(const SPar3DProjection& proj, +                         double &fUX, double &fUY, double &fUZ, double &fUC, +                         double &fVX, double &fVY, double &fVZ, double &fVC); + +void computeBP_UV_Coeffs(const SConeProjection& proj, +                         double &fUX, double &fUY, double &fUZ, double &fUC, +                         double &fVX, double &fVY, double &fVZ, double &fVC, +                         double &fDX, double &fDY, double &fDZ, double &fDC); + +} + +#endif diff --git a/include/astra/ParallelVecProjectionGeometry3D.h b/include/astra/ParallelVecProjectionGeometry3D.h index 5a63249..59238c8 100644 --- a/include/astra/ParallelVecProjectionGeometry3D.h +++ b/include/astra/ParallelVecProjectionGeometry3D.h @@ -30,7 +30,7 @@ $Id$  #define _INC_ASTRA_PARALLELVECPROJECTIONGEOMETRY3D  #include "ProjectionGeometry3D.h" -#include "../cuda/3d/dims3d.h" +#include "GeometryUtil3D.h"  namespace astra  { diff --git a/cuda/3d/dims3d.cu b/src/GeometryUtil3D.cpp index 83a8eba..52dd5a9 100644 --- a/cuda/3d/dims3d.cu +++ b/src/GeometryUtil3D.cpp @@ -1,13 +1,13 @@  /*  ----------------------------------------------------------------------- -Copyright 2012 iMinds-Vision Lab, University of Antwerp +Copyright: 2010-2015, iMinds-Vision Lab, University of Antwerp +           2014-2015, CWI, Amsterdam -Contact: astra@ua.ac.be -Website: http://astra.ua.ac.be +Contact: astra@uantwerpen.be +Website: http://sf.net/projects/astra-toolbox +This file is part of the ASTRA Toolbox. -This file is part of the -All Scale Tomographic Reconstruction Antwerp Toolbox ("ASTRA Toolbox").  The ASTRA Toolbox is free software: you can redistribute it and/or modify  it under the terms of the GNU General Public License as published by @@ -26,7 +26,7 @@ along with the ASTRA Toolbox. If not, see <http://www.gnu.org/licenses/>.  $Id$  */ -#include "dims3d.h" +#include "astra/GeometryUtil3D.h"  namespace astra { @@ -71,4 +71,5 @@ void computeBP_UV_Coeffs(const SConeProjection& proj, double &fUX, double &fUY,  	fDC = -proj.fSrcX * (proj.fDetUY*proj.fDetVZ - proj.fDetUZ*proj.fDetVY) - proj.fSrcY * (proj.fDetUZ*proj.fDetVX - proj.fDetUX*proj.fDetVZ) - proj.fSrcZ * (proj.fDetUX*proj.fDetVY - proj.fDetUY*proj.fDetVX);  } +  } | 
