** This is part of the CTSim program
** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: projections.cpp,v 1.78 2002/06/20 09:17:36 kevin Exp $
+** $Id: projections.cpp,v 1.80 2002/06/27 03:19:23 kevin Exp $
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License (version 2) as
double** ppdDet = adDet.getArray();
std::complex<double>** ppcDetValue = new std::complex<double>* [pProj->m_nView];
- unsigned int iView;
+ int iView;
for (iView = 0; iView < pProj->m_nView; iView++) {
ppcDetValue[iView] = new std::complex<double> [pProj->m_nDet];
DetectorValue* detval = pProj->getDetectorArray (iView).detValues();
- for (unsigned int iDet = 0; iDet < pProj->m_nDet; iDet++)
+ for (int iDet = 0; iDet < pProj->m_nDet; iDet++)
ppcDetValue[iView][iDet] = std::complex<double>(detval[iDet], 0);
}
int iZerosAdded = iNumInterpDetWithZeros - iInterpDet;
// For each view, interpolate to nx length, shift to center at origin, and FFt transform
- for (unsigned int iView = 0; iView < m_nView; iView++) {
+ for (int iView = 0; iView < m_nView; iView++) {
DetectorValue* detval = pProj->getDetectorArray(iView).detValues();
LinearInterpolator<DetectorValue> projInterp (detval, pProj->m_nDet);
- for (unsigned int iDet = 0; iDet < iInterpDet; iDet++) {
+ for (int iDet = 0; iDet < iInterpDet; iDet++) {
double dInterpPos = (m_nDet / 2.) + (iDet - dMidPoint) * dInterpScale;
pcIn[iDet].re = projInterp.interpolate (dInterpPos) * dInterpScale;
pcIn[iDet].im = 0;
Fourier::shuffleFourierToNaturalOrder (pcIn, iInterpDet);
if (iZerosAdded > 0) {
- for (unsigned int iDet1 = iMidPoint; iDet1 < iInterpDet; iDet1++)
+ for (int iDet1 = iMidPoint; iDet1 < iInterpDet; iDet1++)
pcIn[iDet1+iZerosAdded] = pcIn[iDet1];
- for (unsigned int iDet2 = iMidPoint; iDet2 < iMidPoint + iZerosAdded; iDet2++)
+ for (int iDet2 = iMidPoint; iDet2 < iMidPoint + iZerosAdded; iDet2++)
pcIn[iDet2].re = pcIn[iDet2].im = 0;
}
fftw_one (plan, pcIn, NULL);
ppcDetValue[iView] = new std::complex<double> [iNumInterpDetWithZeros];
- for (unsigned int iD = 0; iD < iNumInterpDetWithZeros; iD++) {
+ for (int iD = 0; iD < iNumInterpDetWithZeros; iD++) {
ppcDetValue[iView][iD] = std::complex<double> (pcIn[iD].re * dFFTScale, pcIn[iD].im * dFFTScale);
}
{
typedef std::complex<double> complexValue;
- BilinearInterpolator<complexValue>* pBilinear;
+ BilinearInterpolator<complexValue>* pBilinear = NULL;
if (iInterpolationID == POLAR_INTERP_BILINEAR)
pBilinear = new BilinearInterpolator<complexValue> (ppcDetValue, nView, nDetWithZeros);
for (int iv = 0; iv < iNViews; iv++) {
unsigned char* pArgBase = pData + lDataPos;
unsigned char* p = pArgBase+0; SwapBytes4IfLittleEndian (p);
- long lProjNumber = *reinterpret_cast<long*>(p);
+ // long lProjNumber = *reinterpret_cast<long*>(p);
p = pArgBase+20; SwapBytes4IfLittleEndian (p);
long lEscale = *reinterpret_cast<long*>(p);
p = pArgBase+28; SwapBytes4IfLittleEndian (p);
- long lTime = *reinterpret_cast<long*>(p);
+ // long lTime = *reinterpret_cast<long*>(p);
p = pArgBase + 4; SwapBytes4IfLittleEndian (p);
double dAlpha = *reinterpret_cast<float*>(p) + HALFPI;
p = pArgBase+12; SwapBytes4IfLittleEndian (p);
- double dAlign = *reinterpret_cast<float*>(p);
+ // double dAlign = *reinterpret_cast<float*>(p);
p = pArgBase + 16; SwapBytes4IfLittleEndian (p);
- double dMaxValue = *reinterpret_cast<float*>(p);
+ // double dMaxValue = *reinterpret_cast<float*>(p);
DetectorArray& detArray = getDetectorArray (iv);
detArray.setViewAngle (dAlpha);
double dViewAngle = m_rotStart;
int iLastFloor = -1;
+ LinearInterpolator<double> interp (pdThetaValuesForT, pdRaysumsForT, pProjNew->nView(), false);
for (int iV = 0; iV < pProjNew->nView(); iV++, dViewAngle += pProjNew->m_rotInc) {
DetectorValue* detValues = pProjNew->getDetectorArray (iV).detValues();
- LinearInterpolator<double> interp (pdThetaValuesForT, pdRaysumsForT, pProjNew->nView(), false);
detValues[iD] = interp.interpolate (dViewAngle, &iLastFloor);
}
}
///////////////////////////////////////////////////////////////////////////////
ParallelRaysums::ParallelRaysums (const Projections* pProjections, int iThetaRange)
-: m_iNumCoordinates(0), m_iNumView(pProjections->nView()), m_iNumDet(pProjections->nDet()),
- m_iThetaRange (iThetaRange), m_pCoordinates(NULL)
+: m_pCoordinates(NULL), m_iNumCoordinates(0), m_iNumView(pProjections->nView()), m_iNumDet(pProjections->nDet()),
+ m_iThetaRange (iThetaRange)
{
int iGeometry = pProjections->geometry();
double dDetInc = pProjections->detInc();