#include <mitkCompareImageSliceTestHelper.h>
Static Public Member Functions | |
template<typename TPixel1 , unsigned int VImageDimension1, typename TPixel2 , unsigned int VImageDimension2> | |
static void | ItkImageCompare (itk::Image< TPixel1, VImageDimension1 > *inputImage, itk::Image< TPixel2, VImageDimension2 > *outputImage) |
template<typename TPixel , unsigned int VImageDimension> | |
static void | ItkImageSwitch (itk::Image< TPixel, VImageDimension > *itkImage) |
static bool | CompareSlice (mitk::Image *image, unsigned int sliceDimension, unsigned int sliceIndex, mitk::Image *slice) |
Definition at line 52 of file mitkCompareImageSliceTestHelper.h.
static bool CompareImageSliceTestHelper::CompareSlice | ( | mitk::Image * | image, |
unsigned int | sliceDimension, | ||
unsigned int | sliceIndex, | ||
mitk::Image * | slice | ||
) | [inline, static] |
Definition at line 118 of file mitkCompareImageSliceTestHelper.h.
References AccessFixedDimensionByItk, mitk::Image::GetDimension(), and ItkImageSwitch().
Referenced by mitkSegmentationInterpolationTestClass::CompareInterpolationsToDefinedReference(), mitkOverwriteSliceImageFilterTestClass::Test3D(), mitkExtractImageFilterTestClass::Test3D(), and mitkExtractImageFilterTestClass::Test4D().
{ if ( !image || ! slice ) return false; switch (sliceDimension) { default: case 2: m_Dimension0 = 0; m_Dimension1 = 1; break; case 1: m_Dimension0 = 0; m_Dimension1 = 2; break; case 0: m_Dimension0 = 1; m_Dimension1 = 2; break; } if ( slice->GetDimension() != 2 || image->GetDimension() != 3 || slice->GetDimension(0) != image->GetDimension(m_Dimension0) || slice->GetDimension(1) != image->GetDimension(m_Dimension1) ) { std::cerr << "Slice and image dimensions differ. Sorry, cannot work like this." << std::endl; return false; } // this will do a long long if/else to find out both pixel typesA m_SliceImage = slice; m_SliceIndex = sliceIndex; m_SliceDimension = sliceDimension; m_ComparisonResult = false; AccessFixedDimensionByItk( image, ItkImageSwitch, 3 ); return m_ComparisonResult; }
static void CompareImageSliceTestHelper::ItkImageCompare | ( | itk::Image< TPixel1, VImageDimension1 > * | inputImage, |
itk::Image< TPixel2, VImageDimension2 > * | outputImage | ||
) | [inline, static] |
Definition at line 67 of file mitkCompareImageSliceTestHelper.h.
Referenced by ItkImageSwitch().
{ m_ComparisonResult = false; typedef itk::Image<TPixel1, VImageDimension1> SliceImageType; typedef itk::Image<TPixel2, VImageDimension2> VolumeImageType; typedef itk::ImageSliceConstIteratorWithIndex< VolumeImageType > OutputSliceIteratorType; typedef itk::ImageRegionConstIterator< SliceImageType > InputSliceIteratorType; typename VolumeImageType::RegionType sliceInVolumeRegion; sliceInVolumeRegion = outputImage->GetLargestPossibleRegion(); sliceInVolumeRegion.SetSize( m_SliceDimension, 1 ); // just one slice sliceInVolumeRegion.SetIndex( m_SliceDimension, m_SliceIndex ); // exactly this slice, please OutputSliceIteratorType outputIterator( outputImage, sliceInVolumeRegion ); outputIterator.SetFirstDirection(m_Dimension0); outputIterator.SetSecondDirection(m_Dimension1); InputSliceIteratorType inputIterator( inputImage, inputImage->GetLargestPossibleRegion() ); // iterate over output slice (and over input slice simultaneously) outputIterator.GoToBegin(); inputIterator.GoToBegin(); while ( !outputIterator.IsAtEnd() ) { while ( !outputIterator.IsAtEndOfSlice() ) { while ( !outputIterator.IsAtEndOfLine() ) { m_ComparisonResult = outputIterator.Get() == (TPixel2) inputIterator.Get(); if (!m_ComparisonResult) return; // return on first mismatch ++outputIterator; ++inputIterator; } outputIterator.NextLine(); } outputIterator.NextSlice(); } }
static void CompareImageSliceTestHelper::ItkImageSwitch | ( | itk::Image< TPixel, VImageDimension > * | itkImage ) | [inline, static] |
Definition at line 110 of file mitkCompareImageSliceTestHelper.h.
References mitk::Image::GetPixelType(), mitk::PixelType::GetTypeId(), ItkImageCompare(), and myMITKOverwriteSliceImageFilterAccessAllTypesByItk.
Referenced by CompareSlice().
{ const std::type_info& typeId=*(m_SliceImage->GetPixelType().GetTypeId()); myMITKOverwriteSliceImageFilterAccessAllTypesByItk( m_SliceImage, ItkImageCompare, 2, itkImage ); }