19 #include <itkImageRegionConstIteratorWithIndex.h> 20 #include <itkRandomImageSource.h> 27 template <
typename TPixel,
unsigned int VDimension>
30 typedef typename itk::Image<TPixel, VDimension>
ImageType;
32 itk::Size<VDimension> regionSize;
33 regionSize.Fill(size);
35 typename itk::RandomImageSource<ImageType>::Pointer randomImageSource = itk::RandomImageSource<ImageType>::New();
36 randomImageSource->SetNumberOfThreads(1);
37 randomImageSource->SetSize(regionSize);
38 randomImageSource->Update();
40 return randomImageSource->GetOutput();
50 template <
typename TPixel,
unsigned int VDimension>
54 typedef typename itk::VectorImage<TPixel, VDimension>
ImageType;
55 typedef typename ImageType::Pointer ImagePointer;
57 typename ImageType::RegionType imageRegion;
58 typename ImageType::RegionType::SizeType regionSize;
59 regionSize.Fill(size);
61 typename ImageType::RegionType::IndexType regionIndex;
63 imageRegion.SetSize(regionSize);
64 imageRegion.SetIndex(regionIndex);
66 typename ImageType::SpacingType imageSpacing;
67 imageSpacing.Fill(1.0f);
69 typename ImageType::PointType imageOrigin;
70 imageOrigin.Fill(0.0f);
72 ImagePointer itkImage = ImageType::New();
74 itkImage->SetVectorLength(value.GetNumberOfElements());
75 itkImage->SetRegions(imageRegion);
76 itkImage->SetOrigin(imageOrigin);
77 itkImage->SetSpacing(imageSpacing);
80 itkImage->FillBuffer(value);
91 template <
typename TPixel,
unsigned int VDimension>
94 typedef typename itk::Image<TPixel, VDimension>
ImageType;
95 typedef typename ImageType::Pointer ImagePointer;
97 typename ImageType::RegionType imageRegion;
98 typename ImageType::RegionType::SizeType regionSize;
99 regionSize.Fill(size);
101 typename ImageType::RegionType::IndexType regionIndex;
103 imageRegion.SetSize(regionSize);
104 imageRegion.SetIndex(regionIndex);
106 typename ImageType::SpacingType imageSpacing;
107 imageSpacing.Fill(1.0f);
109 typename ImageType::PointType imageOrigin;
110 imageOrigin.Fill(0.0f);
112 ImagePointer itkImage = ImageType::New();
114 itkImage->SetRegions(imageRegion);
115 itkImage->SetOrigin(imageOrigin);
116 itkImage->SetSpacing(imageSpacing);
117 itkImage->Allocate();
119 itkImage->FillBuffer(value);
127 template <
typename ImageType>
130 bool return_value =
true;
132 typename ImageType::RegionType itkRegion = itkImage->GetLargestPossibleRegion();
133 typename ImageType::SizeType itkImageSize = itkRegion.GetSize();
136 for (
unsigned int idx = 0; idx < mitkImage->GetDimension(); idx++)
138 return_value &= (itkImageSize[idx] == mitkImage->GetDimension(idx));
143 bool ptype_compare = (mitkImage->GetPixelType() == mitk::MakePixelType<ImageType>());
144 return_value &= ptype_compare;
150 bool origin_compare =
true;
151 for (
unsigned int idx = 0; idx < 3; idx++)
153 origin_compare &= (itkImage->GetOrigin()[idx] == origin[idx]);
155 return_value &= origin_compare;
165 template <
typename TPixel,
unsigned int VDimension>
168 std::stringstream msg;
169 msg <<
"Current type: (Random Image, " << VDimension <<
"D):" <<
typeid(TPixel).name() <<
"\n";
170 std::cout << msg.str();
172 bool assert_value =
true;
174 typedef typename itk::Image<TPixel, VDimension>
ImageType;
175 typedef typename ImageType::Pointer ImagePointer;
177 ImagePointer itkImage = CreateTestImageRandom<TPixel, VDimension>(5);
181 itk::ImageRegionConstIteratorWithIndex<ImageType> iter(itkImage, itkImage->GetLargestPossibleRegion());
186 bool difference =
false;
187 while (!iter.IsAtEnd())
189 TPixel ref = iter.Get();
192 difference |= (ref != val);
195 std::cout << iter.GetIndex() <<
":" << ref <<
" ? " << val <<
"\n";
200 assert_value = Assert_ImageMetaData_AreEqual<ImageType>(itkImage, output_import);
202 MITK_TEST_CONDITION(assert_value && (!difference),
"Pixel values are same in voxel-wise comparison.");
209 template <
typename TPixel,
unsigned int VDimension>
212 std::stringstream msg;
213 msg <<
"Current type: " << VDimension <<
"D):" <<
typeid(TPixel).name() <<
"\n";
214 std::cout << msg.str();
216 bool assert_value =
true;
218 typedef typename itk::Image<TPixel, VDimension>
ImageType;
219 typedef typename ImageType::Pointer ImagePointer;
225 itk::ImageRegionConstIteratorWithIndex<ImageType> iter(itkImage, itkImage->GetLargestPossibleRegion());
230 bool difference =
false;
231 while (!iter.IsAtEnd())
233 TPixel ref = iter.Get();
236 difference |= (ref != val);
239 std::cout << iter.GetIndex() <<
":" << ref <<
" ? " << val <<
"\n";
245 assert_value = Assert_ImageMetaData_AreEqual<ImageType>(itkImage, output_import);
247 MITK_TEST_CONDITION(assert_value && (!difference),
"Pixel values are same in voxel-wise comparison.");
252 typedef itk::VectorImage<short, 3>
ImageType;
253 ImageType::PixelType value;
255 value.SetElement(0, 1);
256 value.SetElement(0, 2);
257 ImageType::Pointer itkImage = CreateTestVectorImageFixedValue<short, 3>(5, value);
267 MITK_TEST_CONDITION(pixelType == pixelType2,
"ImportItkImage and CastToMitkImage produce same pixel types")
269 ImageType::Pointer itkImageOut;
272 MITK_TEST_CONDITION(pixelType == mitk::MakePixelType<ImageType>(2),
"MITK pixel type equals ITK pixel type")
274 typedef itk::VectorImage<int, 3> IntImageType;
275 IntImageType::Pointer itkIntImageOut;
277 MITK_TEST_CONDITION(!(pixelType == mitk::MakePixelType<IntImageType>(2)),
"MITK pixel type != ITK pixel type")
288 Assert_ItkImageImportSucceded_ReturnsTrue<short, 3>();
289 Assert_ItkImageImportSucceded_ReturnsTrue<float, 3>();
290 Assert_ItkImageImportSucceded_ReturnsTrue<unsigned char, 3>();
291 Assert_ItkImageImportSucceded_ReturnsTrue<int, 3>();
293 Assert_ItkImageImportRandomValuesSucceded_ReturnsTrue<short, 3>();
294 Assert_ItkImageImportRandomValuesSucceded_ReturnsTrue<float, 3>();
295 Assert_ItkImageImportRandomValuesSucceded_ReturnsTrue<unsigned char, 3>();
296 Assert_ItkImageImportRandomValuesSucceded_ReturnsTrue<int, 3>();
298 Assert_ItkImageImportRandomValuesSucceded_ReturnsTrue<short, 4>();
299 Assert_ItkImageImportRandomValuesSucceded_ReturnsTrue<float, 4>();
300 Assert_ItkImageImportRandomValuesSucceded_ReturnsTrue<unsigned char, 4>();
301 Assert_ItkImageImportRandomValuesSucceded_ReturnsTrue<int, 4>();
Gives locked and index-based read access for a particular image part. The class provides several set-...
itk::VectorImage< TPixel, VDimension >::Pointer CreateTestVectorImageFixedValue(vcl_size_t size, const itk::VariableLengthVector< TPixel > &value)
itk::Image< unsigned char, 3 > ImageType
const TPixel & GetPixelByIndex(const itk::Index< VDimension > &idx) const
section GeneralTestsDeprecatedOldTestingStyle Deprecated macros All tests with MITK_TEST_BEGIN()
Image::Pointer ImportItkImage(const itk::SmartPointer< ItkOutputImageType > &itkimage, const BaseGeometry *geometry=nullptr, bool update=true)
Imports an itk::Image (with a specific type) as an mitk::Image.Instantiates instance of ITKImageImpor...
void Assert_ItkImageImportSucceded_ReturnsTrue()
int GetComponentType() const
Get the component type (the scalar (!) type). Each element may contain m_NumberOfComponents (more tha...
itk::Image< TPixel, VDimension >::Pointer CreateTestImageRandom(short int size)
int mitkImportItkImageTest(int, char *[])
#define MITK_TEST_CONDITION(COND, MSG)
itk::Image< TPixel, VDimension >::Pointer CreateTestImageFixedValue(vcl_size_t size, TPixel value)
#define MITK_ASSERT_EQUAL(EXPECTED, ACTUAL, MSG)
Testing macro to test if two objects are equal.
itk::ImageIOBase::IOPixelType GetPixelType() const
const Point3D GetOrigin() const
Get the origin, e.g. the upper-left corner of the plane.
void CastToMitkImage(const itk::SmartPointer< ItkOutputImageType > &itkimage, itk::SmartPointer< mitk::Image > &mitkoutputimage)
Cast an itk::Image (with a specific type) to an mitk::Image.
void MITKCORE_EXPORT CastToItkImage(const mitk::Image *mitkImage, itk::SmartPointer< ItkOutputImageType > &itkOutputImage)
Cast an mitk::Image to an itk::Image with a specific type.
bool Assert_ImageMetaData_AreEqual(typename ImageType::Pointer itkImage, mitk::Image::Pointer mitkImage)
void Assert_ItkVectorImageImportAndCast_ReturnsTrue()
BaseGeometry Describes the geometry of a data object.
Class for defining the data type of pixels.
void Assert_ItkImageImportRandomValuesSucceded_ReturnsTrue()