#include "mitkImage.h"#include "mitkImageAccessByItk.h"#include "mitkITKImageImport.h"#include "mitkReferenceCountWatcher.h"#include "itkDiffusionTensor3D.h"#include "itkConfidenceDiffusionTensor3D.h"#include <mitkImageCast.h>#include <fstream>Go to the source code of this file.
Functions | |
| int | compareGeometries (mitk::Geometry3D *geometry1, mitk::Geometry3D *geometry2) |
| template<class ImageType > | |
| int | testBackCasting (mitk::Image *imgMem, typename ImageType::Pointer &itkImage, bool disconnectAfterImport) |
| template<unsigned int dim> | |
| int | testImageToItkAndBack (mitk::Image *imgMem) |
| int | mitkImageToItkTest (int, char *[]) |
| int compareGeometries | ( | mitk::Geometry3D * | geometry1, |
| mitk::Geometry3D * | geometry2 | ||
| ) |
Definition at line 29 of file mitkImageToItkTest.cpp.
References EXIT_FAILURE, EXIT_SUCCESS, mitk::Geometry3D::GetAxisVector(), mitk::Geometry3D::GetOrigin(), and mitk::Geometry3D::GetSpacing().
Referenced by testBackCasting().
{
std::cout << "Testing transfer of GetGeometry()->GetOrigin(): " << std::flush;
if(mitk::Equal(geometry1->GetOrigin(), geometry2->GetOrigin()) == false)
{
std::cout<<"[FAILED]"<<std::endl;
return EXIT_FAILURE;
}
std::cout<<"[PASSED]"<<std::endl;
std::cout << "Testing transfer of GetGeometry()->GetSpacing(): " << std::flush;
if(mitk::Equal(geometry1->GetSpacing(), geometry2->GetSpacing()) == false)
{
std::cout<<"[FAILED]"<<std::endl;
return EXIT_FAILURE;
}
std::cout<<"[PASSED]"<<std::endl;
int i;
for(i=0; i<3; ++i)
{
std::cout << "Testing transfer of GetGeometry()->GetAxisVector(" << i << "): " << std::flush;
if(mitk::Equal(geometry1->GetAxisVector(i), geometry2->GetAxisVector(i)) == false)
{
std::cout<<"[FAILED]"<<std::endl;
return EXIT_FAILURE;
}
std::cout<<"[PASSED]"<<std::endl;
}
return EXIT_SUCCESS;
}
| int mitkImageToItkTest | ( | int | , |
| char * | [] | ||
| ) |
Definition at line 157 of file mitkImageToItkTest.cpp.
References mitk::CastToItkImage(), EXIT_FAILURE, EXIT_SUCCESS, mitk::PlaneGeometry::New(), and mitk::Image::New().
{
int result;
//Create Image out of nowhere
mitk::Image::Pointer imgMem;
mitk::PixelType pt(typeid(int));
std::cout << "Testing creation of Image: ";
imgMem=mitk::Image::New();
if(imgMem.IsNull())
{
std::cout<<"[FAILED]"<<std::endl;
return EXIT_FAILURE;
}
std::cout<<"[PASSED]"<<std::endl;
// geometry information for image
mitk::Point3D origin;
mitk::Vector3D right, bottom;
mitk::Vector3D spacing;
mitk::FillVector3D(origin, 17.0, 19.92, 7.83);
mitk::FillVector3D(right, 1.0, 2.0, 3.0);
mitk::FillVector3D(bottom, 0.0, -3.0, 2.0);
mitk::FillVector3D(spacing, 0.78, 0.91, 2.23);
std::cout << "Testing InitializeStandardPlane(rightVector, downVector, spacing): " << std::flush;
mitk::PlaneGeometry::Pointer planegeometry = mitk::PlaneGeometry::New();
planegeometry->InitializeStandardPlane(100, 100, right, bottom, &spacing);
planegeometry->SetOrigin(origin);
std::cout << "done" << std::endl;
std::cout << "Testing Initialize(const mitk::PixelType& type, int sDim, const mitk::PlaneGeometry& geometry) and GetData(): ";
imgMem->Initialize(mitk::PixelType(typeid(int)), 40, *planegeometry); //XXXXXXXXXXXXXXXXXXXXXCHANGE!
result = testImageToItkAndBack<3>(imgMem);
if(result != EXIT_SUCCESS)
return result;
std::cout << "Testing mitk::CastToItkImage with casting (mitk int to itk float): " << std::flush;
typedef itk::Image<float,3> ImageType;
ImageType::Pointer itkImage;
mitk::CastToItkImage( imgMem, itkImage );
result = testBackCasting<ImageType>(imgMem, itkImage, false);
if(result != EXIT_SUCCESS)
return result;
result = testBackCasting<ImageType>(imgMem, itkImage, true);
if(result != EXIT_SUCCESS)
return result;
std::cout << "Testing Initialize(const mitk::PixelType& type, int sDim, const mitk::PlaneGeometry& geometry) and GetData(): ";
imgMem->Initialize(mitk::PixelType(typeid(int)), 40, *planegeometry, false, 1, 6);
result = testImageToItkAndBack<4>(imgMem);
if(result != EXIT_SUCCESS)
return result;
std::cout << "Testing mitk::CastToItkImage again (mitk float to itk float): " << std::flush;
imgMem->Initialize(mitk::PixelType(typeid(float)), 40, *planegeometry);
mitk::CastToItkImage( imgMem, itkImage );
std::cout<<"[PASSED]"<<std::endl;
mitk::ImageDataItem::Pointer imageDataItem = imgMem->GetChannelData().GetPointer();
std::cout << "Testing destruction of original mitk::Image: " << std::flush;
imgMem = NULL;
std::cout<<"[PASSED]"<<std::endl;
std::cout << "Testing reference count mitk::ImageDataItem, which is responsible for the memory still used within the itk::Image: " << std::flush;
if(imageDataItem->GetReferenceCount()-1 != 1) // 1 count by imageDataItem itself
{
std::cout<< imageDataItem->GetReferenceCount()-1 << " != 1. [FAILED]" << std::endl;
return EXIT_FAILURE;
}
std::cout<<"[PASSED]"<<std::endl;
std::cout << "Testing destruction of itk::Image: " << std::flush;
itkImage = NULL;
std::cout<<"[PASSED]"<<std::endl;
std::cout << "Testing reference count mitk::ImageDataItem, which should now have been freed by itk::Image: " << std::flush;
if(imageDataItem->GetReferenceCount()-1 != 0) // 1 count by imageDataItem itself
{
std::cout<< imageDataItem->GetReferenceCount()-1 << " != 0. [FAILED]" << std::endl;
return EXIT_FAILURE;
}
std::cout<<"[PASSED]"<<std::endl;
imgMem=mitk::Image::New();
itk::Image<itk::DiffusionTensor3D<float>,3>::Pointer diffImage;
imgMem->Initialize(mitk::PixelType(typeid(itk::DiffusionTensor3D<float>)), 40, *planegeometry);
mitk::CastToItkImage( imgMem, diffImage );
imgMem->InitializeByItk(diffImage.GetPointer());
std::cout<<"[PASSED]"<<std::endl;
itk::Image<itk::DiffusionTensor3D<double>,3>::Pointer diffImage2;
imgMem->Initialize(mitk::PixelType(typeid(itk::DiffusionTensor3D<double>)), 40, *planegeometry);
mitk::CastToItkImage( imgMem, diffImage2 );
imgMem->InitializeByItk(diffImage2.GetPointer());
std::cout<<"[PASSED]"<<std::endl;
itk::Image<itk::ConfidenceDiffusionTensor3D<float>,3>::Pointer confDiffImage;
imgMem->Initialize(mitk::PixelType(typeid(itk::ConfidenceDiffusionTensor3D<float>)), 40, *planegeometry);
mitk::CastToItkImage( imgMem, confDiffImage );
imgMem->InitializeByItk(confDiffImage.GetPointer());
std::cout<<"[PASSED]"<<std::endl;
itk::Image<itk::ConfidenceDiffusionTensor3D<double>,3>::Pointer confDiffImage2;
imgMem->Initialize(mitk::PixelType(typeid(itk::ConfidenceDiffusionTensor3D<double>)), 40, *planegeometry);
mitk::CastToItkImage( imgMem, confDiffImage2 );
imgMem->InitializeByItk(confDiffImage2.GetPointer());
std::cout<<"[PASSED]"<<std::endl;
std::cout<<"[TEST DONE]"<<std::endl;
return EXIT_SUCCESS;
}
| int testBackCasting | ( | mitk::Image * | imgMem, |
| typename ImageType::Pointer & | itkImage, | ||
| bool | disconnectAfterImport | ||
| ) |
Definition at line 62 of file mitkImageToItkTest.cpp.
References mitk::CastToMitkImage(), compareGeometries(), EXIT_FAILURE, EXIT_SUCCESS, mitk::BaseData::GetGeometry(), mitk::ImportItkImage(), and mitk::Image::New().
{
int result;
if(itkImage.IsNull())
{
std::cout<<"[FAILED]"<<std::endl;
return EXIT_FAILURE;
}
int *p = (int*)itkImage->GetBufferPointer();
if(p==NULL)
{
std::cout<<"[FAILED]"<<std::endl;
return EXIT_FAILURE;
}
std::cout<<"[PASSED]"<<std::endl;
std::cout << "Testing mitk::CastToMitkImage: " << std::flush;
mitk::Image::Pointer mitkImage = mitk::Image::New();
mitk::CastToMitkImage( itkImage, mitkImage );
std::cout<<"[PASSED]"<<std::endl;
result = compareGeometries(imgMem->GetGeometry(), mitkImage->GetGeometry());
if(result != EXIT_SUCCESS)
return result;
std::cout << "Testing whether data after mitk::CastToMitkImage is available: " << std::flush;
if(mitkImage->IsChannelSet()==false)
{
std::cout<<"[FAILED]"<<std::endl;
return EXIT_FAILURE;
}
std::cout<<"[PASSED]"<<std::endl;
std::cout << "Testing mitk::ImportItkImage: " << std::flush;
mitkImage = mitk::ImportItkImage(itkImage);
std::cout<<"[PASSED]"<<std::endl;
if(disconnectAfterImport)
{
std::cout << "Testing DisconnectPipeline() on mitk::Image into which was imported : " << std::flush;
mitkImage->DisconnectPipeline();
std::cout<<"[PASSED]"<<std::endl;
}
result = compareGeometries(imgMem->GetGeometry(), mitkImage->GetGeometry());
if(result != EXIT_SUCCESS)
return result;
std::cout << "Testing whether data after mitk::ImportItkImage is available: " << std::flush;
if(mitkImage->IsChannelSet()==false)
{
std::cout<<"[FAILED]"<<std::endl;
return EXIT_FAILURE;
}
std::cout<<"[PASSED]"<<std::endl;
return EXIT_SUCCESS;
}
| int testImageToItkAndBack | ( | mitk::Image * | imgMem ) |
Definition at line 124 of file mitkImageToItkTest.cpp.
References EXIT_FAILURE, EXIT_SUCCESS, mitk::Image::GetData(), mitk::ImageToItk< TOutputImage >::New(), and mitk::ImageToItk< TOutputImage >::SetInput().
{
int result;
int *p = (int*)imgMem->GetData();
if(p==NULL)
{
std::cout<<"[FAILED]"<<std::endl;
return EXIT_FAILURE;
}
std::cout<<"[PASSED]"<<std::endl;
std::cout << "Testing for dimension " << dim << ": " << std::flush;
std::cout << "Testing mitk::ImageToItk: " << std::flush;
typedef itk::Image<int,dim> ImageType;
typename mitk::ImageToItk<ImageType>::Pointer toItkFilter = mitk::ImageToItk<ImageType>::New();
toItkFilter->SetInput(imgMem);
toItkFilter->Update();
typename ImageType::Pointer itkImage = toItkFilter->GetOutput();
result = testBackCasting<ImageType>(imgMem, itkImage, false);
if(result != EXIT_SUCCESS)
return result;
std::cout << "Testing mitk::ImageToItk (with subsequent DisconnectPipeline, see below): " << std::flush;
result = testBackCasting<ImageType>(imgMem, itkImage, true);
if(result != EXIT_SUCCESS)
return result;
return EXIT_SUCCESS;
}
1.7.2