Static Public Member Functions

mitkCompressedImageContainerTestClass Class Reference

List of all members.

Static Public Member Functions

static void Test (mitk::CompressedImageContainer *container, mitk::Image *image, unsigned int &numberFailed)

Detailed Description

Definition at line 24 of file mitkCompressedImageContainerTest.cpp.


Member Function Documentation

static void mitkCompressedImageContainerTestClass::Test ( mitk::CompressedImageContainer container,
mitk::Image image,
unsigned int &  numberFailed 
) [inline, static]

Definition at line 28 of file mitkCompressedImageContainerTest.cpp.

References mitk::PixelType::GetBitsPerComponent(), mitk::PixelType::GetBpe(), mitk::Image::GetDimension(), mitk::CompressedImageContainer::GetImage(), mitk::PixelType::GetNumberOfComponents(), mitk::Image::GetPixelType(), mitk::PixelType::GetTypeId(), mitk::Image::GetVolumeData(), and mitk::CompressedImageContainer::SetImage().

Referenced by mitkCompressedImageContainerTest().

{
  container->SetImage( image ); // compress
  mitk::Image::Pointer uncompressedImage = container->GetImage(); // uncompress

  // check dimensions
  if (image->GetDimension() != uncompressedImage->GetDimension())
  {
    ++numberFailed;
    std::cerr << "  (EE) Number of image dimensions wrong after uncompression (was: " << image->GetDimension() << ", now: " << uncompressedImage->GetDimension() << ")" << std::endl;
  }

  for (unsigned int dim = 0; dim < image->GetDimension(); ++dim)
  {
    if (image->GetDimension(dim) != uncompressedImage->GetDimension(dim))
    {
      ++numberFailed;
      std::cerr << "  (EE) Image dimension " << dim << " differs after uncompression (was: " << image->GetDimension(dim) << ", now: " << uncompressedImage->GetDimension(dim) << ")" << std::endl;
    }
  }

   // check pixel type
  if (image->GetPixelType() != uncompressedImage->GetPixelType())
  {
    ++numberFailed;
    std::cerr << "  (EE) Pixel type wrong after uncompression:" << std::endl;
    
    mitk::PixelType m_PixelType = image->GetPixelType();
    std::cout << "Original pixel type:" << std::endl;
    std::cout << " PixelType: " << m_PixelType.GetTypeId()->name() << std::endl;
    std::cout << " BitsPerElement: " << m_PixelType.GetBpe() << std::endl;
    std::cout << " NumberOfComponents: " << m_PixelType.GetNumberOfComponents() << std::endl;
    std::cout << " BitsPerComponent: " << m_PixelType.GetBitsPerComponent() << std::endl;

    m_PixelType = uncompressedImage->GetPixelType();
    std::cout << "Uncompressed pixel type:" << std::endl;
    std::cout << " PixelType: " << m_PixelType.GetTypeId()->name() << std::endl;
    std::cout << " BitsPerElement: " << m_PixelType.GetBpe() << std::endl;
    std::cout << " NumberOfComponents: " << m_PixelType.GetNumberOfComponents() << std::endl;
    std::cout << " BitsPerComponent: " << m_PixelType.GetBitsPerComponent() << std::endl;
  }

  // check data
  mitk::PixelType m_PixelType = image->GetPixelType();
  unsigned long oneTimeStepSizeInBytes = m_PixelType.GetBpe() >> 3; // bits per element divided by 8
  for (unsigned int dim = 0; dim < image->GetDimension(); ++dim)
  {
    if (dim < 3)
    {
      oneTimeStepSizeInBytes *= image->GetDimension(dim);
    }
  }

  unsigned int numberOfTimeSteps(1);
  if (image->GetDimension() > 3) 
  {
    numberOfTimeSteps = image->GetDimension(3);
  }

  for (unsigned int timeStep = 0; timeStep < numberOfTimeSteps; ++timeStep)
  {
    unsigned char* originalData( static_cast<unsigned char*>(image->GetVolumeData(timeStep)->GetData()) );
    unsigned char* uncompressedData( static_cast<unsigned char*>(uncompressedImage->GetVolumeData(timeStep)->GetData()) );

    unsigned long difference(0);
    for (unsigned long byte = 0; byte < oneTimeStepSizeInBytes; ++byte)
    {
      if ( originalData[byte] != uncompressedData[byte] )
      {
        ++difference;
      }
    }

    if ( difference > 0 )
    {
      ++numberFailed;
      std::cerr << "  (EE) Pixel data in timestep " << timeStep << " not identical after uncompression. " << difference << " pixels different." << std::endl;
      break; // break "for timeStep"
    }
  }
 
}

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines