summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ParallelProjectionGeometry3D.cpp24
-rw-r--r--src/ProjectionGeometry3D.cpp109
2 files changed, 9 insertions, 124 deletions
diff --git a/src/ParallelProjectionGeometry3D.cpp b/src/ParallelProjectionGeometry3D.cpp
index ff46ae2..41c79b2 100644
--- a/src/ParallelProjectionGeometry3D.cpp
+++ b/src/ParallelProjectionGeometry3D.cpp
@@ -50,9 +50,7 @@ CParallelProjectionGeometry3D::CParallelProjectionGeometry3D(int _iProjectionAng
int _iDetectorColCount,
float32 _fDetectorWidth,
float32 _fDetectorHeight,
- const float32* _pfProjectionAngles,
- const float32* _pfExtraDetectorOffsetsX,
- const float32* _pfExtraDetectorOffsetsY) :
+ const float32* _pfProjectionAngles) :
CProjectionGeometry3D()
{
initialize(_iProjectionAngleCount,
@@ -60,9 +58,7 @@ CParallelProjectionGeometry3D::CParallelProjectionGeometry3D(int _iProjectionAng
_iDetectorColCount,
_fDetectorWidth,
_fDetectorHeight,
- _pfProjectionAngles,
- _pfExtraDetectorOffsetsX,
- _pfExtraDetectorOffsetsY);
+ _pfProjectionAngles);
}
//----------------------------------------------------------------------------------------
@@ -95,18 +91,14 @@ bool CParallelProjectionGeometry3D::initialize(int _iProjectionAngleCount,
int _iDetectorColCount,
float32 _fDetectorWidth,
float32 _fDetectorHeight,
- const float32* _pfProjectionAngles,
- const float32* _pfExtraDetectorOffsetsX,
- const float32* _pfExtraDetectorOffsetsY)
+ const float32* _pfProjectionAngles)
{
_initialize(_iProjectionAngleCount,
_iDetectorRowCount,
_iDetectorColCount,
_fDetectorWidth,
_fDetectorHeight,
- _pfProjectionAngles,
- _pfExtraDetectorOffsetsX,
- _pfExtraDetectorOffsetsY);
+ _pfProjectionAngles);
// success
m_bInitialized = _check();
@@ -127,10 +119,6 @@ CProjectionGeometry3D* CParallelProjectionGeometry3D::clone() const
res->m_fDetectorSpacingY = m_fDetectorSpacingY;
res->m_pfProjectionAngles = new float32[m_iProjectionAngleCount];
memcpy(res->m_pfProjectionAngles, m_pfProjectionAngles, sizeof(float32)*m_iProjectionAngleCount);
- res->m_pfExtraDetectorOffsetsX = new float32[m_iProjectionAngleCount];
- memcpy(res->m_pfExtraDetectorOffsetsX, m_pfExtraDetectorOffsetsX, sizeof(float32)*m_iProjectionAngleCount);
- res->m_pfExtraDetectorOffsetsY = new float32[m_iProjectionAngleCount];
- memcpy(res->m_pfExtraDetectorOffsetsY, m_pfExtraDetectorOffsetsY, sizeof(float32)*m_iProjectionAngleCount);
return res;
}
@@ -178,8 +166,6 @@ void CParallelProjectionGeometry3D::toXML(XMLNode* _sNode) const
_sNode->addChildNode("DetectorRowCount", m_iDetectorRowCount);
_sNode->addChildNode("DetectorColCount", m_iDetectorColCount);
_sNode->addChildNode("ProjectionAngles", m_pfProjectionAngles, m_iProjectionAngleCount);
- _sNode->addChildNode("ExtraDetectorOffsetsX", m_pfExtraDetectorOffsetsX, m_iProjectionAngleCount);
- _sNode->addChildNode("ExtraDetectorOffsetsY", m_pfExtraDetectorOffsetsY, m_iProjectionAngleCount);
}
CVector3D CParallelProjectionGeometry3D::getProjectionDirection(int _iProjectionIndex, int _iDetectorIndex) const
@@ -199,7 +185,7 @@ CParallelProjectionGeometry2D * CParallelProjectionGeometry3D::createProjectionG
//getProjectionAngles(pfProjectionAngles);
CParallelProjectionGeometry2D * pOutput = new CParallelProjectionGeometry2D(getProjectionCount(),
- getDetectorColCount(), getDetectorSpacingX(), pfProjectionAngles,getExtraDetectorOffsetsX());
+ getDetectorColCount(), getDetectorSpacingX(), pfProjectionAngles);
//delete [] pfProjectionAngles;
diff --git a/src/ProjectionGeometry3D.cpp b/src/ProjectionGeometry3D.cpp
index 2cd0dd3..e2108aa 100644
--- a/src/ProjectionGeometry3D.cpp
+++ b/src/ProjectionGeometry3D.cpp
@@ -72,9 +72,7 @@ CProjectionGeometry3D::CProjectionGeometry3D(int _iAngleCount,
int _iDetectorColCount,
float32 _fDetectorSpacingX,
float32 _fDetectorSpacingY,
- const float32 *_pfProjectionAngles,
- const float32 *_pfExtraDetectorOffsetsX,
- const float32 *_pfExtraDetectorOffsetsY) : configCheckData(0)
+ const float32 *_pfProjectionAngles) : configCheckData(0)
{
_clear();
_initialize(_iAngleCount,
@@ -82,9 +80,7 @@ CProjectionGeometry3D::CProjectionGeometry3D(int _iAngleCount,
_iDetectorColCount,
_fDetectorSpacingX,
_fDetectorSpacingY,
- _pfProjectionAngles,
- _pfExtraDetectorOffsetsX,
- _pfExtraDetectorOffsetsY);
+ _pfProjectionAngles);
}
//----------------------------------------------------------------------------------------
@@ -97,9 +93,7 @@ CProjectionGeometry3D::CProjectionGeometry3D(const CProjectionGeometry3D& _projG
_projGeom.m_iDetectorColCount,
_projGeom.m_fDetectorSpacingX,
_projGeom.m_fDetectorSpacingY,
- _projGeom.m_pfProjectionAngles,
- _projGeom.m_pfExtraDetectorOffsetsX,
- _projGeom.m_pfExtraDetectorOffsetsY);
+ _projGeom.m_pfProjectionAngles);
}
//----------------------------------------------------------------------------------------
@@ -122,8 +116,6 @@ void CProjectionGeometry3D::_clear()
m_fDetectorSpacingX = 0.0f;
m_fDetectorSpacingY = 0.0f;
m_pfProjectionAngles = NULL;
- m_pfExtraDetectorOffsetsX = NULL;
- m_pfExtraDetectorOffsetsY = NULL;
m_bInitialized = false;
}
@@ -139,15 +131,7 @@ void CProjectionGeometry3D::clear()
if (m_pfProjectionAngles != NULL) {
delete [] m_pfProjectionAngles;
}
- if (m_pfExtraDetectorOffsetsX != NULL) {
- delete [] m_pfExtraDetectorOffsetsX;
- }
- if (m_pfExtraDetectorOffsetsY != NULL) {
- delete [] m_pfExtraDetectorOffsetsY;
- }
m_pfProjectionAngles = NULL;
- m_pfExtraDetectorOffsetsX = NULL;
- m_pfExtraDetectorOffsetsY = NULL;
m_bInitialized = false;
}
@@ -206,58 +190,6 @@ bool CProjectionGeometry3D::initialize(const Config& _cfg)
CC.markNodeParsed("ProjectionAngles");
ASTRA_DELETE(node);
- // Optional: ExtraDetectorOffsetX
- node = _cfg.self->getSingleNode("ExtraDetectorOffsetsX");
- m_pfExtraDetectorOffsetsX = new float32[m_iProjectionAngleCount];
- if (node) {
- vector<float32> translationsX = node->getContentNumericalArray();
- if (translationsX.size() < m_iProjectionAngleCount){
- cout << "Not enough ExtraDetectorOffsetsX components specified. " << endl;
- for (int i = 0; i < m_iProjectionAngleCount; i++) {
- m_pfExtraDetectorOffsetsX[i] = 0;
- }
- }
- else {
- for (int i = 0; i < m_iProjectionAngleCount; i++) {
- m_pfExtraDetectorOffsetsX[i] = translationsX[i];
- }
- }
- }
- else {
- //cout << "No ExtraDetectorOffsetsX tag specified." << endl;
- for (int i = 0; i < m_iProjectionAngleCount; i++) {
- m_pfExtraDetectorOffsetsX[i] = 0;
- }
- }
- CC.markOptionParsed("ExtraDetectorOffsetsX");
- ASTRA_DELETE(node);
-
- // Optional: ExtraDetectorOffsetsY
- node = _cfg.self->getSingleNode("ExtraDetectorOffsetsY");
- m_pfExtraDetectorOffsetsY = new float32[m_iProjectionAngleCount];
- if (node) {
- vector<float32> translationsX = node->getContentNumericalArray();
- if (translationsX.size() < m_iProjectionAngleCount){
- cout << "Not enough ExtraDetectorOffsetsY components specified. " << endl;
- for (int i = 0; i < m_iProjectionAngleCount; i++) {
- m_pfExtraDetectorOffsetsY[i] = 0;
- }
- }
- else {
- for (int i = 0; i < m_iProjectionAngleCount; i++) {
- m_pfExtraDetectorOffsetsY[i] = translationsX[i];
- }
- }
- }
- else {
- //cout << "No ExtraDetectorOffsetsY tag specified." << endl;
- for (int i = 0; i < m_iProjectionAngleCount; i++) {
- m_pfExtraDetectorOffsetsY[i] = 0;
- }
- }
- CC.markOptionParsed("ExtraDetectorOffsetsY");
- ASTRA_DELETE(node);
-
// Interface class, so don't return true
return false;
}
@@ -269,9 +201,7 @@ bool CProjectionGeometry3D::_initialize(int _iProjectionAngleCount,
int _iDetectorColCount,
float32 _fDetectorSpacingX,
float32 _fDetectorSpacingY,
- const float32 *_pfProjectionAngles,
- const float32 *_pfExtraDetectorOffsetsX,
- const float32 *_pfExtraDetectorOffsetsY)
+ const float32 *_pfProjectionAngles)
{
if (m_bInitialized) {
clear();
@@ -285,14 +215,8 @@ bool CProjectionGeometry3D::_initialize(int _iProjectionAngleCount,
m_fDetectorSpacingX = _fDetectorSpacingX;
m_fDetectorSpacingY = _fDetectorSpacingY;
m_pfProjectionAngles = new float32[m_iProjectionAngleCount];
- m_pfExtraDetectorOffsetsX = new float32[m_iProjectionAngleCount];
- m_pfExtraDetectorOffsetsY = new float32[m_iProjectionAngleCount];
for (int i = 0; i < m_iProjectionAngleCount; i++) {
m_pfProjectionAngles[i] = _pfProjectionAngles[i];
- m_pfExtraDetectorOffsetsX[i] = _pfExtraDetectorOffsetsX ? _pfExtraDetectorOffsetsX[i]:0;
- m_pfExtraDetectorOffsetsY[i] = _pfExtraDetectorOffsetsY ? _pfExtraDetectorOffsetsY[i]:0;
- //m_pfExtraDetectorOffsetsX[i] = 0;
- //m_pfExtraDetectorOffsetsY[i] = 0;
}
m_iDetectorTotCount = m_iProjectionAngleCount * m_iDetectorRowCount * m_iDetectorColCount;
@@ -301,29 +225,4 @@ bool CProjectionGeometry3D::_initialize(int _iProjectionAngleCount,
return false;
}
-//---------------------------------------------------------------------------------------
-//
-AstraError CProjectionGeometry3D::setExtraDetectorOffsetsX(float32* _pfExtraDetectorOffsetsX)
-{
- if (!m_bInitialized)
- return ASTRA_ERROR_NOT_INITIALIZED;
-
- for (int iAngle = 0; iAngle<m_iProjectionAngleCount; iAngle++)
- m_pfExtraDetectorOffsetsX[iAngle] = _pfExtraDetectorOffsetsX[iAngle];
-
- return ASTRA_SUCCESS;
-}
-
-//---------------------------------------------------------------------------------------
-//
-AstraError CProjectionGeometry3D::setExtraDetectorOffsetsY(float32* _pfExtraDetectorOffsetsY)
-{
- if (!m_bInitialized)
- return ASTRA_ERROR_NOT_INITIALIZED;
-
- for (int iAngle = 0; iAngle<m_iProjectionAngleCount; iAngle++)
- m_pfExtraDetectorOffsetsY[iAngle] = _pfExtraDetectorOffsetsY[iAngle];
-
- return ASTRA_SUCCESS;
-}
} // namespace astra