** This is part of the CTSim program
** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: ctndicom.cpp,v 1.7 2001/03/07 16:34:47 kevin Exp $
+** $Id: ctndicom.cpp,v 1.10 2001/03/11 18:52:03 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_strFilename(pszFile), m_bFail(false), m_iContents(DICOM_CONTENTS_INVALID),
+ : m_pFile(NULL), m_strFilename(pszFile), m_bFail(false), m_iContents(DICOM_CONTENTS_INVALID),
m_pImageFile(NULL), m_pProjections(NULL)
{
unsigned long lOptions = DCM_ORDERLITTLEENDIAN;
if (iMaskLength > 8)
iMaskLength -= 8;
unsigned int iMask = (1 << iMaskLength) - 1;
- for (int iy = iNRows - 1; iy >= 0; iy--) {
+ for (int iy = 0; iy < iNRows; iy++) {
for (int ix = 0; ix < iNCols; ix++) {
if (iBitsAllocated == 8) {
unsigned char cV = pRawPixels[iy * iNRows + ix];
unsigned char cV1 = pRawPixels[lBase];
unsigned char cV2 = pRawPixels[lBase+1] & iMask;
int iV = cV1 + (cV2 << 8);
- v[ix][iy] = iV * dRescaleSlope + dRescaleIntercept;
+ v[ix][iNRows - 1 - iy] = iV * dRescaleSlope + dRescaleIntercept;
}
}
}
dWidth = 1E-7;
double dScale = 65535. / dWidth;
- double dRescaleIntercept = -dMin;
+ double dRescaleIntercept = dMin;
double dRescaleSlope = 1 / dScale;
char szRescaleIntercept[17];
char szRescaleSlope[17];
snprintf (szRescaleIntercept, sizeof(szRescaleIntercept), "%e", dRescaleIntercept);
snprintf (szRescaleSlope, sizeof(szRescaleIntercept), "%e", dRescaleSlope);
+ char szCTSimRoot[] = "1.2.826.0.1.3680043.2.284.";
char szModality[] = "CT";
char szSOPClassUID[65] = "1.2.840.10008.5.4.1.1.2";
char szImgPhotometricInterp[] = "MONOCHROME2";
char szAcqKvp[] = "0";
char szRelAcquisitionNumber[] = "1";
char szRelImageNumber[] = "1";
- char szIDSOPInstanceUID[] = "";
+ char szIDSOPInstanceUID[65] = "";
char szIDManufacturer[] = "CTSim";
char szRelPositionRefIndicator[] = "0";
- char szRelFrameOfReferenceUID[] = "";
+ char szRelFrameOfReferenceUID[65] = "";
char szRelSeriesNumber[] = "1";
char szIDAccessionNumber[] = "0";
char szRelStudyID[] = "1";
char szIDReferringPhysician[] = "NONE";
char szIDStudyTime[] = "000000.0";
char szIDStudyDate[] = "00000000";
- char szRelStudyInstanceUID[] = "";
+ char szRelStudyInstanceUID[65] = "";
char szPatSex[] = "O";
char szPatBirthdate[] = "0000000";
char szPatID[] = "NONE";
char szIDImageType[] = "ORIGINAL";
char szIDManufacturerModel[65] = "";
+ snprintf (szIDSOPInstanceUID, sizeof(szIDSOPInstanceUID), "%s.2.1.6.1", szCTSimRoot);
+ snprintf (szRelStudyInstanceUID, sizeof(szRelStudyInstanceUID), "%s.2.1.6.1.1", szCTSimRoot);
+ snprintf (szRelFrameOfReferenceUID, sizeof(szRelFrameOfReferenceUID), "%s.99", szCTSimRoot);
#ifdef VERSION
snprintf (szIDManufacturerModel, sizeof(szIDManufacturerModel), "VERSION %s", VERSION);
#endif
elemPixelData.d.ot = pRawPixels;
ImageFileArray v = m_pImageFile->getArray();
- for (int iy = iNRows - 1; iy >= 0; iy--) {
+ for (int iy = 0; iy < iNRows; iy++) {
for (int ix = 0; ix < iNCols; ix++) {
unsigned long lBase = (iy * iNRows + ix) * 2;
- unsigned int iValue = nearest<int>(dScale * (v[ix][iy] - dMin));
+ unsigned int iValue = nearest<int>(dScale * (v[ix][iNRows - 1 - iy] - dMin));
pRawPixels[lBase] = iValue & 0xFF;
pRawPixels[lBase+1] = (iValue & 0xFF00) >> 8;
}