diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/CudaDataOperationAlgorithm.cpp | 2 | ||||
| -rw-r--r-- | src/FilteredBackProjectionAlgorithm.cpp | 14 | ||||
| -rw-r--r-- | src/Float32VolumeData3DMemory.cpp | 1 | ||||
| -rw-r--r-- | src/XMLNode.cpp | 4 | 
4 files changed, 11 insertions, 10 deletions
diff --git a/src/CudaDataOperationAlgorithm.cpp b/src/CudaDataOperationAlgorithm.cpp index 15886a4..82b676b 100644 --- a/src/CudaDataOperationAlgorithm.cpp +++ b/src/CudaDataOperationAlgorithm.cpp @@ -76,7 +76,7 @@ bool CCudaDataOperationAlgorithm::initialize(const Config& _cfg)  	node = _cfg.self.getSingleNode("DataId");  	ASTRA_CONFIG_CHECK(node, "CCudaDataOperationAlgorithm", "No DataId tag specified.");  	vector<string> data = node.getContentArray(); -	for (vector<string>::iterator it = data.begin(); it != data.end(); it++){ +	for (vector<string>::iterator it = data.begin(); it != data.end(); ++it){  		int id = StringUtil::stringToInt(*it);  		m_pData.push_back(dynamic_cast<CFloat32Data2D*>(CData2DManager::getSingleton().get(id)));  	} diff --git a/src/FilteredBackProjectionAlgorithm.cpp b/src/FilteredBackProjectionAlgorithm.cpp index c195578..ccbfec6 100644 --- a/src/FilteredBackProjectionAlgorithm.cpp +++ b/src/FilteredBackProjectionAlgorithm.cpp @@ -117,12 +117,10 @@ bool CFilteredBackProjectionAlgorithm::initialize(const Config& _cfg)  		int angleCount = projectionIndex.size();  		int detectorCount = m_pProjector->getProjectionGeometry()->getDetectorCount(); +		// TODO: There is no need to allocate this. Better just +		// create the CFloat32ProjectionData2D object directly, and use its +		// memory.  		float32 * sinogramData2D = new float32[angleCount* detectorCount]; -		float32 ** sinogramData = new float32*[angleCount]; -		for (int i = 0; i < angleCount; i++) -		{ -			sinogramData[i] = &(sinogramData2D[i * detectorCount]); -		}  		float32 * projectionAngles = new float32[angleCount];  		float32 detectorWidth = m_pProjector->getProjectionGeometry()->getDetectorWidth(); @@ -130,6 +128,8 @@ bool CFilteredBackProjectionAlgorithm::initialize(const Config& _cfg)  		for (int i = 0; i < angleCount; i ++) {  			if (projectionIndex[i] > m_pProjector->getProjectionGeometry()->getProjectionAngleCount() -1 )  			{ +				delete[] sinogramData2D; +				delete[] projectionAngles;  				ASTRA_ERROR("Invalid Projection Index");  				return false;  			} else { @@ -139,7 +139,6 @@ bool CFilteredBackProjectionAlgorithm::initialize(const Config& _cfg)  				{  					sinogramData2D[i*detectorCount+ iDetector] = m_pSinogram->getData2D()[orgIndex][iDetector];  				} -//				sinogramData[i] = m_pSinogram->getSingleProjectionData(projectionIndex[i]);  				projectionAngles[i] = m_pProjector->getProjectionGeometry()->getProjectionAngle((int)projectionIndex[i] );  			} @@ -148,6 +147,9 @@ bool CFilteredBackProjectionAlgorithm::initialize(const Config& _cfg)  		CParallelProjectionGeometry2D * pg = new CParallelProjectionGeometry2D(angleCount, detectorCount,detectorWidth,projectionAngles);  		m_pProjector = new CParallelBeamLineKernelProjector2D(pg,m_pReconstruction->getGeometry());  		m_pSinogram = new CFloat32ProjectionData2D(pg, sinogramData2D); + +		delete[] sinogramData2D; +		delete[] projectionAngles;  	}  	// TODO: check that the angles are linearly spaced between 0 and pi diff --git a/src/Float32VolumeData3DMemory.cpp b/src/Float32VolumeData3DMemory.cpp index af45cb9..14adb1a 100644 --- a/src/Float32VolumeData3DMemory.cpp +++ b/src/Float32VolumeData3DMemory.cpp @@ -136,7 +136,6 @@ CFloat32VolumeData2D * CFloat32VolumeData3DMemory::fetchSliceZ(int _iSliceIndex)  	CFloat32VolumeData2D* res = new CFloat32VolumeData2D(&volGeom);  	// copy data -	int iSliceCount = m_pGeometry->getGridSliceCount();  	float * pfTargetData = res->getData();  	for(int iRowIndex = 0; iRowIndex < iRowCount; iRowIndex++)  	{ diff --git a/src/XMLNode.cpp b/src/XMLNode.cpp index 40a9b22..cf268c2 100644 --- a/src/XMLNode.cpp +++ b/src/XMLNode.cpp @@ -158,7 +158,7 @@ vector<string> XMLNode::getContentArray() const  	vector<string> res(iSize);  	// loop all list item nodes  	list<XMLNode> nodes = getNodes("ListItem"); -	for (list<XMLNode>::iterator it = nodes.begin(); it != nodes.end(); it++) { +	for (list<XMLNode>::iterator it = nodes.begin(); it != nodes.end(); ++it) {  		int iIndex = it->getAttributeNumerical("index");  		string sValue = it->getAttribute("value");  		ASTRA_ASSERT(iIndex < iSize); @@ -290,7 +290,7 @@ vector<float32> XMLNode::getOptionNumericalArray(string _sKey) const  	if (!hasOption(_sKey)) return vector<float32>();  	list<XMLNode> nodes = getNodes("Option"); -	for (list<XMLNode>::iterator it = nodes.begin(); it != nodes.end(); it++) { +	for (list<XMLNode>::iterator it = nodes.begin(); it != nodes.end(); ++it) {  		if (it->getAttribute("key") == _sKey) {  			vector<float32> vals = it->getContentNumericalArray();  			return vals;  | 
