Static Public Member Functions | |
| static void | Test (mitk::CompressedImageContainer *container, mitk::Image *image, unsigned int &numberFailed) |
Definition at line 24 of file mitkCompressedImageContainerTest.cpp.
| 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"
}
}
}
1.7.2