#include "mitkImage.h"#include "mitkPicFileReader.h"#include "mitkImageWriter.h"#include "mitkImageAccessByItk.h"#include <itksys/SystemTools.hxx>Go to the source code of this file.
Functions | |
| mitk::Image::Pointer | CreateTestImage (unsigned int which) |
| template<typename TPixel , unsigned int VImageDimension> | |
| void | ItkImageProcessing (itk::Image< TPixel, VImageDimension > *itkImage, mitk::Image *mitkImage, bool &identical) |
| int | mitkPicFileIOTest (int, char *[]) |
Variables | |
| unsigned int | numberOfTestImages = 3 |
| mitk::Image::Pointer CreateTestImage | ( | unsigned int | which ) |
Definition at line 28 of file mitkPicFileIOTest.cpp.
References mitk::Image::New().
Referenced by mitkPicFileIOTest().
{
mitk::Image::Pointer image = mitk::Image::New();
switch (which)
{
case 0:
{
unsigned int dim[]={10,10,20}; // image dimensions
image->Initialize(mitk::PixelType(typeid(int)), 3, dim);
int *p = (int*)image->GetData(); // pointer to pixel data
int size = dim[0]*dim[1]*dim[2];
for(int i=0; i<size; ++i, ++p) *p=i - size/2; // fill image
}
break;
case 1:
{
unsigned int dim[]={10,10,20}; // image dimensions
image->Initialize(mitk::PixelType(typeid(float)), 3, dim);
float *p = (float*)image->GetData(); // pointer to pixel data
int size = dim[0]*dim[1]*dim[2];
for(int i=0; i<size; ++i, ++p) *p=(float)i - size/2; // fill image
}
break;
case 2:
{
unsigned int dim[]={10,10,20}; // image dimensions
image->Initialize(mitk::PixelType(typeid(double)), 3, dim);
double *p = (double*)image->GetData(); // pointer to pixel data
int size = dim[0]*dim[1]*dim[2];
for(int i=0; i<size; ++i, ++p) *p=(double)i - size/2; // fill image
}
break;
default:
{
unsigned int dim[]={10,10,20}; // image dimensions
image->Initialize(mitk::PixelType(typeid(int)), 3, dim);
int *p = (int*)image->GetData(); // pointer to pixel data
int size = dim[0]*dim[1]*dim[2];
for(int i=0; i<size; ++i, ++p) *p=i - size/2; // fill image
}
}
return image;
}
| void ItkImageProcessing | ( | itk::Image< TPixel, VImageDimension > * | itkImage, |
| mitk::Image * | mitkImage, | ||
| bool & | identical | ||
| ) |
Definition at line 84 of file mitkPicFileIOTest.cpp.
References mitk::CastToItkImage().
Referenced by mitk::ExtractImageFilter::GenerateData(), mitk::ImageToOpenCVImageFilter::GetOpenCVImage(), mitk::OverwriteSliceImageFilter::ItkImageSwitch(), and mitkPicFileIOTest().
{
typename itk::Image< TPixel, VImageDimension >::Pointer itkImage2;
mitk::CastToItkImage( mitkImage, itkImage2 );
if (!itkImage2 || !itkImage2.GetPointer())
{
identical = false;
return;
}
itk::ImageRegionConstIterator<itk::Image<TPixel, VImageDimension> > iterItkImage1( itkImage, itkImage->GetLargestPossibleRegion() );
itk::ImageRegionConstIterator<itk::Image<TPixel, VImageDimension> > iterItkImage2( itkImage, itkImage2->GetLargestPossibleRegion() );
iterItkImage1.GoToBegin();
iterItkImage2.GoToBegin();
while (!iterItkImage1.IsAtEnd())
{
if (iterItkImage1.Get() != iterItkImage2.Get())
{
std::cout << iterItkImage1.Get() << " != " << iterItkImage2.Get() << std::endl;
identical = false;
return;
}
++iterItkImage1;
++iterItkImage2;
}
// if we reach this point, all pixel are the same
identical = true;
}
| int mitkPicFileIOTest | ( | int | , |
| char * | [] | ||
| ) |
Definition at line 119 of file mitkPicFileIOTest.cpp.
References AccessFixedDimensionByItk_2, CreateTestImage(), EXIT_FAILURE, EXIT_SUCCESS, ItkImageProcessing(), mitk::PicFileReader::New(), mitk::ImageWriter::New(), and numberOfTestImages.
{
unsigned int numberFailed(0);
for (unsigned int i = 0; i < numberOfTestImages; ++i)
{
mitk::Image::Pointer originalImage = CreateTestImage(i);
mitk::Image::Pointer secondImage;
// write
try
{
mitk::ImageWriter::Pointer imageWriter = mitk::ImageWriter::New();
imageWriter->SetInput(originalImage);
imageWriter->SetFileName("test_image");
imageWriter->SetExtension(".pic");
imageWriter->Write();
}
catch ( std::exception& e )
{
std::cerr << "Error during attempt to write 'test_image.pic' Exception says:" << std::endl;
std::cerr << e.what() << std::endl;
++numberFailed;
continue;
}
// load
try
{
mitk::PicFileReader::Pointer imageReader = mitk::PicFileReader::New();
imageReader->SetFileName("test_image.pic");
imageReader->Update();
secondImage = imageReader->GetOutput();
}
catch ( std::exception& e )
{
std::cerr << "Error during attempt to read 'test_image.pic' Exception says:" << std::endl;
std::cerr << e.what() << std::endl;
++numberFailed;
continue;
}
if (secondImage.IsNull())
{
std::cerr << "Error reading 'test_image.pic'. No image created." << std::endl;
++numberFailed;
continue;
}
std::remove( "test_image.pic" );
// compare
bool identical(false);
AccessFixedDimensionByItk_2( secondImage.GetPointer(), ItkImageProcessing, 3, originalImage.GetPointer(), identical );
if (!identical)
{
std::cerr << "Images differ for testimage " << i << std::endl;
++numberFailed;
continue;
}
}
// if one fails, whole test fails
if (numberFailed > 0)
{
std::cout << "[FAILED]: " << numberFailed << " of " << numberOfTestImages << " sub-tests failed." << std::endl;
return EXIT_FAILURE;
}
else
{
std::cout << "[PASSED]" << std::endl;
return EXIT_SUCCESS;
}
}
| unsigned int numberOfTestImages = 3 |
Definition at line 25 of file mitkPicFileIOTest.cpp.
Referenced by mitkPicFileIOTest().
1.7.2