-Jul 1, 2002 Version 3.5.5
+Jul 1, 2002 Version 3.5.6
+
+ * Bug fix for Debian alpha platform
+
+ * Fix some compilation warnings
+Jun 20, 2002 Version 3.5.5
* Fix printing of version number
* Minor bug fixes
PACKAGE=ctsim
-VERSION=3.5.5
+VERSION=3.5.6
if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
{ { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
AC_INIT
AC_CONFIG_SRCDIR([src/ctsim.cpp])
-AM_INIT_AUTOMAKE(ctsim,3.5.5)
+AM_INIT_AUTOMAKE(ctsim,3.5.6)
AM_CONFIG_HEADER(config.h)
dnl Checks for programs.
** This is part of the CTSim program
** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: interpolator.h,v 1.5 2001/03/30 22:09:09 kevin Exp $
+** $Id: interpolator.h,v 1.6 2002/06/27 01:48:25 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
class BilinearInterpolator {
private:
T** const m_ppMatrix;
- const unsigned int m_nx;
- const unsigned int m_ny;
+ const int m_nx;
+ const int m_ny;
public:
BilinearInterpolator (T** ppMatrix, unsigned int nx, unsigned int ny)
** This is part of the CTSim program
** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: ctndicom.cpp,v 1.14 2002/05/08 08:55:45 kevin Exp $
+** $Id: ctndicom.cpp,v 1.15 2002/06/27 01:48:26 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
DicomImporter::DicomImporter (const char* const pszFile)
- : m_pFile(NULL), m_strFilename(pszFile), m_bFail(false), m_iContents(DICOM_CONTENTS_INVALID),
- m_pImageFile(NULL), m_pProjections(NULL)
+ : m_strFilename(pszFile), m_bFail(false), m_iContents(DICOM_CONTENTS_INVALID),
+ m_pImageFile(NULL), m_pProjections(NULL), m_pFile(NULL)
{
unsigned long lOptions = DCM_ORDERLITTLEENDIAN | DCM_FORMATCONVERSION;
DCM_Debug (FALSE);
unsigned short iNRows, iNCols, iBitsAllocated, iBitsStored, iHighBit, iPixRep;
DCM_ELEMENT aElemRequired[] = {
- {DCM_IMGROWS, DCM_US, "", 1, sizeof(iNRows), reinterpret_cast<char*>(&iNRows)},
- {DCM_IMGCOLUMNS, DCM_US, "", 1, sizeof(iNCols), reinterpret_cast<char*>(&iNCols)},
- {DCM_IMGBITSALLOCATED, DCM_US, "", 1, sizeof(iBitsAllocated), reinterpret_cast<char*>(&iBitsAllocated)},
- {DCM_IMGBITSSTORED, DCM_US, "", 1, sizeof(iBitsStored), reinterpret_cast<char*>(&iBitsStored)},
- {DCM_IMGHIGHBIT, DCM_US, "", 1, sizeof(iHighBit), reinterpret_cast<char*>(&iHighBit)},
- {DCM_IMGPIXELREPRESENTATION, DCM_US, "", 1, sizeof(iPixRep), reinterpret_cast<char*>(&iPixRep)}
+ {DCM_IMGROWS, DCM_US, "", 1, sizeof(iNRows), reinterpret_cast<char*>(&iNRows),},
+ {DCM_IMGCOLUMNS, DCM_US, "", 1, sizeof(iNCols), reinterpret_cast<char*>(&iNCols),},
+ {DCM_IMGBITSALLOCATED, DCM_US, "", 1, sizeof(iBitsAllocated), reinterpret_cast<char*>(&iBitsAllocated),},
+ {DCM_IMGBITSSTORED, DCM_US, "", 1, sizeof(iBitsStored), reinterpret_cast<char*>(&iBitsStored),},
+ {DCM_IMGHIGHBIT, DCM_US, "", 1, sizeof(iHighBit), reinterpret_cast<char*>(&iHighBit),},
+ {DCM_IMGPIXELREPRESENTATION, DCM_US, "", 1, sizeof(iPixRep), reinterpret_cast<char*>(&iPixRep),},
};
int nElemRequired = sizeof (aElemRequired) / sizeof(DCM_ELEMENT);
loadImage (iNRows, iNCols, iBitsAllocated, iBitsStored, iHighBit, iPixRep);
return;
}
- unsigned long lRtnLength;
+ U32 lRtnLength;
DCM_TAG somatomTag = DCM_MAKETAG(TAG_GROUP_SOMATOM, TAG_MEMBER_SOMATOM_DATA);
if (DCM_GetElementSize (&m_pFile, somatomTag, &lRtnLength) == DCM_NORMAL)
loadProjections();
DicomImporter::loadImage(unsigned short iNRows, unsigned short iNCols, unsigned short iBitsAllocated,
unsigned short iBitsStored, unsigned short iHighBit, unsigned short iPixRep)
{
- unsigned long lRtnLength;
+ U32 lRtnLength;
unsigned short iSamplesPerPixel, iPlanarConfig;
DCM_ELEMENT elemPlanarConfig = {DCM_IMGPLANARCONFIGURATION, DCM_US, "", 1, sizeof(iPlanarConfig),
return;
}
if ((lCheckLengthInBytes < lRealLength) && (cond != DCM_GETINCOMPLETE)) {
- m_bFail;
+ m_bFail = true;
m_strFailMessage = "Should have gooten incomplete message reading pixel data";
delete pRawPixels;
return;
void
DicomImporter::loadProjections()
{
- unsigned long lRtnLength;
+ U32 lRtnLength;
void* ctx = NULL;
unsigned short iNViews, iNDets;
** 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.79 2002/06/27 01:48:26 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();
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);
}
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);
}
}