diff options
author | Willem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl> | 2017-11-22 17:02:25 +0100 |
---|---|---|
committer | Willem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl> | 2017-11-22 17:07:30 +0100 |
commit | 85b619e6c5c04faa6a365c5be4b9bc8c7db445fa (patch) | |
tree | dfb33f5621b3be27a6ffc5827fa208f87a9ba234 | |
parent | 845b398d9e2e078d7cb2a1da84fadceca66306a2 (diff) | |
download | astra-85b619e6c5c04faa6a365c5be4b9bc8c7db445fa.tar.gz astra-85b619e6c5c04faa6a365c5be4b9bc8c7db445fa.tar.bz2 astra-85b619e6c5c04faa6a365c5be4b9bc8c7db445fa.tar.xz astra-85b619e6c5c04faa6a365c5be4b9bc8c7db445fa.zip |
Allow cone_vec for FDK
NB: This will let you do mathematically nonsensical things, since FDK
does not support non-circular cone geometries. However, this does let you
use translated detectors, for example.
-rw-r--r-- | src/CompositeGeometryManager.cpp | 5 | ||||
-rw-r--r-- | src/CudaFDKAlgorithm3D.cpp | 3 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/CompositeGeometryManager.cpp b/src/CompositeGeometryManager.cpp index 470476e..8af430c 100644 --- a/src/CompositeGeometryManager.cpp +++ b/src/CompositeGeometryManager.cpp @@ -1202,8 +1202,9 @@ bool CCompositeGeometryManager::doFDK(CProjector3D *pProjector, CFloat32VolumeDa CFloat32ProjectionData3D *pProjData, bool bShortScan, const float *pfFilter, SJob::EMode eMode) { - if (!dynamic_cast<CConeProjectionGeometry3D*>(pProjData->getGeometry())) { - ASTRA_ERROR("CCompositeGeometryManager::doFDK: cone geometry required"); + if (!dynamic_cast<CConeProjectionGeometry3D*>(pProjData->getGeometry()) && + !dynamic_cast<CConeVecProjectionGeometry3D*>(pProjData->getGeometry())) { + ASTRA_ERROR("CCompositeGeometryManager::doFDK: cone/cone_vec geometry required"); return false; } diff --git a/src/CudaFDKAlgorithm3D.cpp b/src/CudaFDKAlgorithm3D.cpp index d503351..b2b9c06 100644 --- a/src/CudaFDKAlgorithm3D.cpp +++ b/src/CudaFDKAlgorithm3D.cpp @@ -31,6 +31,7 @@ along with the ASTRA Toolbox. If not, see <http://www.gnu.org/licenses/>. #include "astra/CudaProjector3D.h" #include "astra/ConeProjectionGeometry3D.h" +#include "astra/ConeVecProjectionGeometry3D.h" #include "astra/CompositeGeometryManager.h" #include "astra/Logging.h" @@ -82,7 +83,7 @@ bool CCudaFDKAlgorithm3D::_check() ASTRA_CONFIG_CHECK(CReconstructionAlgorithm3D::_check(), "CUDA_FDK", "Error in ReconstructionAlgorithm3D initialization"); const CProjectionGeometry3D* projgeom = m_pSinogram->getGeometry(); - ASTRA_CONFIG_CHECK(dynamic_cast<const CConeProjectionGeometry3D*>(projgeom), "CUDA_FDK", "Error setting FDK geometry"); + ASTRA_CONFIG_CHECK(dynamic_cast<const CConeProjectionGeometry3D*>(projgeom) || dynamic_cast<const CConeVecProjectionGeometry3D*>(projgeom), "CUDA_FDK", "Error setting FDK geometry"); const CVolumeGeometry3D* volgeom = m_pReconstruction->getGeometry(); |