r615: no message
[ctsim.git] / libctsim / ctndicom.cpp
index 02a4ed2da10073da89d6ea2a24df288e66ffc580..f9a311bb2175364e1b9d752973192fc13885022d 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: ctndicom.cpp,v 1.8 2001/03/07 16:52:52 kevin Exp $
+**  $Id: ctndicom.cpp,v 1.9 2001/03/07 17:33:38 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
@@ -154,7 +154,7 @@ DicomImporter::loadImage(unsigned short iNRows, unsigned short iNCols, unsigned
   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];
@@ -164,7 +164,7 @@ DicomImporter::loadImage(unsigned short iNRows, unsigned short iNCols, unsigned
         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;
       }
     }
   }
@@ -284,7 +284,7 @@ DicomExporter::createDicomObject()
     dWidth = 1E-7;
   double dScale = 65535. / dWidth;
 
-  double dRescaleIntercept = -dMin;
+  double dRescaleIntercept = dMin;
   double dRescaleSlope = 1 / dScale;
   char szRescaleIntercept[17];
   char szRescaleSlope[17];
@@ -394,10 +394,10 @@ DicomExporter::createDicomObject()
   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;
     }