]> Creatis software - gdcm.git/commitdiff
Add some accessors for debugging purpose
authorjpr <jpr>
Fri, 17 Jun 2005 12:35:00 +0000 (12:35 +0000)
committerjpr <jpr>
Fri, 17 Jun 2005 12:35:00 +0000 (12:35 +0000)
src/gdcmFileHelper.cxx
src/gdcmFileHelper.h
src/gdcmPixelReadConvert.cxx
src/gdcmPixelReadConvert.h

index c99d06471a0fd7fbc9e47e25453425c8c2df7ef0..af0a9694306ade41deff8f1eeb2429384b438e30 100644 (file)
@@ -4,8 +4,8 @@
   Module:    $RCSfile: gdcmFileHelper.cxx,v $
   Language:  C++
 
-  Date:      $Date: 2005/05/27 10:51:00 $
-  Version:   $Revision: 1.42 $
+  Date:      $Date: 2005/06/17 12:35:00 $
+  Version:   $Revision: 1.43 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -500,9 +500,27 @@ size_t FileHelper::GetRawDataSize()
  */
 uint8_t* FileHelper::GetLutRGBA()
 {
+   if ( PixelReadConverter->GetLutRGBA() ==0 )
+      PixelReadConverter->BuildLUTRGBA();
    return PixelReadConverter->GetLutRGBA();
 }
 
+/**
+ * \brief Access to the underlying \ref PixelReadConverter RGBA LUT Item Number
+ */
+int FileHelper::GetLutItemNumber()
+{
+   return PixelReadConverter->GetLutItemNumber();
+}
+
+/**
+ * \brief Access to the underlying \ref PixelReadConverter RGBA LUT Item Size
+ */
+int FileHelper::GetLutItemSize()
+{
+   return PixelReadConverter->GetLutItemSize();
+}
+
 /**
  * \brief Writes on disk A SINGLE Dicom file
  *        NO test is performed on  processor "Endiannity".
index 9056534e0feec536c973fda59562c48d1877ea10..5d053d2b7829c1100ccf56a14603779bbbbcafd2 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmFileHelper.h,v $
   Language:  C++
-  Date:      $Date: 2005/03/09 09:45:33 $
-  Version:   $Revision: 1.16 $
+  Date:      $Date: 2005/06/17 12:35:00 $
+  Version:   $Revision: 1.17 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -93,6 +93,8 @@ public:
 
    // LUT
    uint8_t* GetLutRGBA();
+   int GetLutItemNumber();
+   int GetLutItemSize();
 
    // Write mode
 
index 1b4c6f3c17275f147fac7b1c90653149f0ea03bb..264f30bc7343543efd45a93140b556eb6f4dc4e0 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmPixelReadConvert.cxx,v $
   Language:  C++
-  Date:      $Date: 2005/06/15 19:59:39 $
-  Version:   $Revision: 1.66 $
+  Date:      $Date: 2005/06/17 12:35:00 $
+  Version:   $Revision: 1.67 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -612,7 +612,8 @@ void PixelReadConvert::BuildLUTRGBA()
       LutRGBA = new uint8_t[ 1024 ]; // 256 * 4 (R, G, B, Alpha)
       if ( !LutRGBA )
          return;
-
+      LutItemNumber = 256;
+      LutItemSize   = 8;
       memset( LutRGBA, 0, 1024 );
                                                                                 
       int mult;
@@ -683,6 +684,9 @@ void PixelReadConvert::BuildLUTRGBA()
          return;
       memset( LutRGBA, 0, 65536*4*2 );  // 16 bits = 2 bytes ;-)
 
+      LutItemNumber = 65536;
+      LutItemSize   = 16;
+
       int i;
       uint16_t *a16;
 
@@ -691,21 +695,21 @@ void PixelReadConvert::BuildLUTRGBA()
       a16 = (uint16_t*)LutRGBA + 0 + debR;
       for( i=0; i < lengthR; ++i )
       {
-         *a16 = ((uint16_t*)LutRedData)[i+1];
+         *a16 = ((uint16_t*)LutRedData)[i];
          a16 += 4;
       }
                                                                               
       a16 = (uint16_t*)LutRGBA + 1 + debG;
       for( i=0; i < lengthG; ++i)
       {
-         *a16 = ((uint16_t*)LutGreenData)[i+1];
+         *a16 = ((uint16_t*)LutGreenData)[i];
          a16 += 4;
       }
                                                                                 
       a16 = (uint16_t*)LutRGBA + 2 + debB;
       for(i=0; i < lengthB; ++i)
       {
-         *a16 = ((uint16_t*)LutBlueData)[i+1];
+         *a16 = ((uint16_t*)LutBlueData)[i];
          a16 += 4;
       }
                                                                              
@@ -968,6 +972,15 @@ void PixelReadConvert::ConvertRGBPlanesToRGBPixels()
  */
 void PixelReadConvert::ConvertYcBcRPlanesToRGBPixels()
 {
+  // Remarks for YBR newbees :
+  // YBR_FULL works very much like RGB, i.e. three samples per pixel, 
+  // just the color space is YCbCr instead of RGB. This is particularly useful
+  // for doppler ultrasound where most of the image is grayscale 
+  // (i.e. only populates the Y components) and Cb and Cr are mostly zero,
+  // except for the few patches of color on the image. //
+  // On such images, RLE achieves a compression ratio that is much better 
+  // than the compression ratio on an equivalent RGB image. 
+    
    uint8_t *localRaw = Raw;
    uint8_t *copyRaw = new uint8_t[ RawSize ];
    memmove( copyRaw, localRaw, RawSize );
index 4cc379afa4cc6af9ba8040a53035663c1851051d..4c6f96c0d824ed766e6b4dc9f3cfe09d96f68aa3 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmPixelReadConvert.h,v $
   Language:  C++
-  Date:      $Date: 2005/06/14 13:56:42 $
-  Version:   $Revision: 1.22 $
+  Date:      $Date: 2005/06/17 12:35:00 $
+  Version:   $Revision: 1.23 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -43,12 +43,13 @@ public:
    void Print( std::ostream &os = std::cout, std::string const &indent = "" );
 
    // Getter accessors:
-   uint8_t *GetRGB()     { return RGB;     }
-   size_t   GetRGBSize() { return RGBSize; }
-   uint8_t *GetRaw()     { return Raw;     }
-   size_t   GetRawSize() { return RawSize; }
-   uint8_t *GetLutRGBA() { return LutRGBA; }
-
+   uint8_t *GetRGB()           { return RGB;     }
+   size_t   GetRGBSize()       { return RGBSize; }
+   uint8_t *GetRaw()           { return Raw;     }
+   size_t   GetRawSize()       { return RawSize; }
+   uint8_t *GetLutRGBA()       { return LutRGBA; }
+   int      GetLutItemNumber() { return LutItemNumber; }
+   int      GetLutItemSize()   { return LutItemSize;   }
    // Predicates:
    bool IsRawRGB();
 
@@ -57,6 +58,7 @@ public:
    bool ReadAndDecompressPixelData( std::ifstream *fp );
    void Squeeze();
    bool BuildRGBImage();
+   void BuildLUTRGBA();
 
 private:
    // Use the fp:
@@ -66,7 +68,6 @@ private:
 
    // In place (within Decompressed and with no fp access) decompression
    // or convertion:
-   void BuildLUTRGBA();
    void ConvertSwapZone();
    void ConvertReorderEndianity();
    bool ConvertReArrangeBits() throw ( FormatError );
@@ -95,6 +96,11 @@ private:
    /// \brief Red/Green/Blue/Alpha LookUpTable build out of the
    ///        Red/Green/Blue LUT descriptors (see \ref BuildLUTRGBA ).
    uint8_t *LutRGBA;
+   int LutItemNumber;
+   int LutItemSize;
+
+   // *ALL* the following info belong to the FileHelper
+   // One should think there is an analyze error in the model !
 
    size_t PixelOffset;
    size_t PixelDataLength;
@@ -135,7 +141,6 @@ private:
    uint8_t *LutRedData;
    uint8_t *LutGreenData;
    uint8_t *LutBlueData;
-
 };
 } // end namespace gdcm