diff options
author | Wim van Aarle <wimvanaarle@gmail.com> | 2015-05-26 15:43:08 +0200 |
---|---|---|
committer | Wim van Aarle <wimvanaarle@gmail.com> | 2015-05-26 15:43:08 +0200 |
commit | 3117c7a61a83ca28ba00211d1eb65eaf13a7307a (patch) | |
tree | 4851ae878cf499deb2ae2f77575b3c48ecaf5d04 /src/CudaReconstructionAlgorithm2D.cpp | |
parent | 9e884e760b71be354c08892f6bce2efe723917b3 (diff) | |
parent | 57668bcdd086145eb14598e32fd5d0dca711865c (diff) | |
download | astra-3117c7a61a83ca28ba00211d1eb65eaf13a7307a.tar.gz astra-3117c7a61a83ca28ba00211d1eb65eaf13a7307a.tar.bz2 astra-3117c7a61a83ca28ba00211d1eb65eaf13a7307a.tar.xz astra-3117c7a61a83ca28ba00211d1eb65eaf13a7307a.zip |
Merge remote-tracking branch 'upstream/master' into parallel_vec
Conflicts:
astra_vc11.vcxproj.filters
python/astra/functions.py
src/ParallelBeamBlobKernelProjector2D.cpp
src/ProjectionGeometry2D.cpp
Diffstat (limited to 'src/CudaReconstructionAlgorithm2D.cpp')
-rw-r--r-- | src/CudaReconstructionAlgorithm2D.cpp | 53 |
1 files changed, 26 insertions, 27 deletions
diff --git a/src/CudaReconstructionAlgorithm2D.cpp b/src/CudaReconstructionAlgorithm2D.cpp index d3dedc5..db99d42 100644 --- a/src/CudaReconstructionAlgorithm2D.cpp +++ b/src/CudaReconstructionAlgorithm2D.cpp @@ -37,6 +37,8 @@ $Id$ #include "astra/FanFlatVecProjectionGeometry2D.h" #include "astra/CudaProjector2D.h" +#include "astra/Logging.h" + #include "../cuda/2d/algo.h" #include <ctime> @@ -94,91 +96,88 @@ bool CCudaReconstructionAlgorithm2D::initialize(const Config& _cfg) } // sinogram data - XMLNode* node = _cfg.self->getSingleNode("ProjectionDataId"); + XMLNode node = _cfg.self.getSingleNode("ProjectionDataId"); ASTRA_CONFIG_CHECK(node, "CudaSirt2", "No ProjectionDataId tag specified."); - int id = boost::lexical_cast<int>(node->getContent()); + int id = boost::lexical_cast<int>(node.getContent()); m_pSinogram = dynamic_cast<CFloat32ProjectionData2D*>(CData2DManager::getSingleton().get(id)); - ASTRA_DELETE(node); CC.markNodeParsed("ProjectionDataId"); // reconstruction data - node = _cfg.self->getSingleNode("ReconstructionDataId"); + node = _cfg.self.getSingleNode("ReconstructionDataId"); ASTRA_CONFIG_CHECK(node, "CudaSirt2", "No ReconstructionDataId tag specified."); - id = boost::lexical_cast<int>(node->getContent()); + id = boost::lexical_cast<int>(node.getContent()); m_pReconstruction = dynamic_cast<CFloat32VolumeData2D*>(CData2DManager::getSingleton().get(id)); - ASTRA_DELETE(node); CC.markNodeParsed("ReconstructionDataId"); // fixed mask - if (_cfg.self->hasOption("ReconstructionMaskId")) { + if (_cfg.self.hasOption("ReconstructionMaskId")) { m_bUseReconstructionMask = true; - id = boost::lexical_cast<int>(_cfg.self->getOption("ReconstructionMaskId")); + id = boost::lexical_cast<int>(_cfg.self.getOption("ReconstructionMaskId")); m_pReconstructionMask = dynamic_cast<CFloat32VolumeData2D*>(CData2DManager::getSingleton().get(id)); ASTRA_CONFIG_CHECK(m_pReconstructionMask, "CudaReconstruction2D", "Invalid ReconstructionMaskId."); } CC.markOptionParsed("ReconstructionMaskId"); // fixed mask - if (_cfg.self->hasOption("SinogramMaskId")) { + if (_cfg.self.hasOption("SinogramMaskId")) { m_bUseSinogramMask = true; - id = boost::lexical_cast<int>(_cfg.self->getOption("SinogramMaskId")); + id = boost::lexical_cast<int>(_cfg.self.getOption("SinogramMaskId")); m_pSinogramMask = dynamic_cast<CFloat32ProjectionData2D*>(CData2DManager::getSingleton().get(id)); ASTRA_CONFIG_CHECK(m_pSinogramMask, "CudaReconstruction2D", "Invalid SinogramMaskId."); } CC.markOptionParsed("SinogramMaskId"); // Constraints - NEW - if (_cfg.self->hasOption("MinConstraint")) { + if (_cfg.self.hasOption("MinConstraint")) { m_bUseMinConstraint = true; - m_fMinValue = _cfg.self->getOptionNumerical("MinConstraint", 0.0f); + m_fMinValue = _cfg.self.getOptionNumerical("MinConstraint", 0.0f); CC.markOptionParsed("MinConstraint"); } else { // Constraint - OLD - m_bUseMinConstraint = _cfg.self->getOptionBool("UseMinConstraint", false); + m_bUseMinConstraint = _cfg.self.getOptionBool("UseMinConstraint", false); CC.markOptionParsed("UseMinConstraint"); if (m_bUseMinConstraint) { - m_fMinValue = _cfg.self->getOptionNumerical("MinConstraintValue", 0.0f); + m_fMinValue = _cfg.self.getOptionNumerical("MinConstraintValue", 0.0f); CC.markOptionParsed("MinConstraintValue"); } } - if (_cfg.self->hasOption("MaxConstraint")) { + if (_cfg.self.hasOption("MaxConstraint")) { m_bUseMaxConstraint = true; - m_fMaxValue = _cfg.self->getOptionNumerical("MaxConstraint", 255.0f); + m_fMaxValue = _cfg.self.getOptionNumerical("MaxConstraint", 255.0f); CC.markOptionParsed("MaxConstraint"); } else { // Constraint - OLD - m_bUseMaxConstraint = _cfg.self->getOptionBool("UseMaxConstraint", false); + m_bUseMaxConstraint = _cfg.self.getOptionBool("UseMaxConstraint", false); CC.markOptionParsed("UseMaxConstraint"); if (m_bUseMaxConstraint) { - m_fMaxValue = _cfg.self->getOptionNumerical("MaxConstraintValue", 0.0f); + m_fMaxValue = _cfg.self.getOptionNumerical("MaxConstraintValue", 0.0f); CC.markOptionParsed("MaxConstraintValue"); } } // GPU number - m_iGPUIndex = (int)_cfg.self->getOptionNumerical("GPUindex", -1); - m_iGPUIndex = (int)_cfg.self->getOptionNumerical("GPUIndex", m_iGPUIndex); + m_iGPUIndex = (int)_cfg.self.getOptionNumerical("GPUindex", -1); + m_iGPUIndex = (int)_cfg.self.getOptionNumerical("GPUIndex", m_iGPUIndex); CC.markOptionParsed("GPUindex"); - if (!_cfg.self->hasOption("GPUindex")) + if (!_cfg.self.hasOption("GPUindex")) CC.markOptionParsed("GPUIndex"); // Detector supersampling factor - m_iDetectorSuperSampling = (int)_cfg.self->getOptionNumerical("DetectorSuperSampling", 1); + m_iDetectorSuperSampling = (int)_cfg.self.getOptionNumerical("DetectorSuperSampling", 1); CC.markOptionParsed("DetectorSuperSampling"); // Pixel supersampling factor - m_iPixelSuperSampling = (int)_cfg.self->getOptionNumerical("PixelSuperSampling", 1); + m_iPixelSuperSampling = (int)_cfg.self.getOptionNumerical("PixelSuperSampling", 1); CC.markOptionParsed("PixelSuperSampling"); // This isn't used yet, but passing it is not something to warn about - node = _cfg.self->getSingleNode("ProjectorId"); + node = _cfg.self.getSingleNode("ProjectorId"); if (node) { - id = boost::lexical_cast<int>(node->getContent()); + id = boost::lexical_cast<int>(node.getContent()); CProjector2D *projector = CProjector2DManager::getSingleton().get(id); if (!dynamic_cast<CCudaProjector2D*>(projector)) { - cout << "Warning: non-CUDA Projector2D passed" << std::endl; + ASTRA_WARN("non-CUDA Projector2D passed"); } - delete node; } CC.markNodeParsed("ProjectorId"); |