Static Public Member Functions | |
static void | Test3D (mitk::OverwriteSliceImageFilter *filter, mitk::Image *image, unsigned int &numberFailed) |
static void | Test2D (mitk::OverwriteSliceImageFilter *filter, mitk::Image *image, unsigned int &numberFailed) |
static void | TestOtherD (mitk::OverwriteSliceImageFilter *filter, mitk::Image *image, unsigned int &numberFailed) |
Definition at line 24 of file mitkOverwriteSliceImageFilterTest.cpp.
static void mitkOverwriteSliceImageFilterTestClass::Test2D | ( | mitk::OverwriteSliceImageFilter * | filter, |
mitk::Image * | image, | ||
unsigned int & | numberFailed | ||
) | [inline, static] |
Definition at line 227 of file mitkOverwriteSliceImageFilterTest.cpp.
References mitk::Image::GetDimension(), mitk::ImageToImageFilter::SetInput(), and mitk::OverwriteSliceImageFilter::SetSliceImage().
Referenced by mitkOverwriteSliceImageFilterTest().
{ assert(filter); assert(image); filter->SetInput( image ); filter->SetSliceImage( image ); bool exception = false; try { filter->Update(); } catch(...) { exception = true; } if (!exception) { std::cerr << " (EE) Using OverwriteImageFilter for 2D -> 2D did not throw an exception " << "(l. " << __LINE__ << ")" << std::endl; } unsigned int initialNumberFailed = numberFailed; if ( numberFailed == initialNumberFailed ) { std::cout << " (II) Overwriting works nicely (gives result, pixels are good) " << image->GetDimension() << "-dimensional image." << "(l. " << __LINE__ << ")" << std::endl; } }
static void mitkOverwriteSliceImageFilterTestClass::Test3D | ( | mitk::OverwriteSliceImageFilter * | filter, |
mitk::Image * | image, | ||
unsigned int & | numberFailed | ||
) | [inline, static] |
Definition at line 29 of file mitkOverwriteSliceImageFilterTest.cpp.
References CompareImageSliceTestHelper::CompareSlice(), mitk::Image::GetDimension(), mitk::ImageSource::GetOutput(), mitk::Image::New(), mitk::ExtractImageFilter::New(), mitk::ImageToImageFilter::SetInput(), mitk::OverwriteSliceImageFilter::SetSliceDimension(), mitk::OverwriteSliceImageFilter::SetSliceImage(), and mitk::OverwriteSliceImageFilter::SetSliceIndex().
Referenced by mitkOverwriteSliceImageFilterTest().
{ assert(filter); assert(image); filter->SetInput( image ); unsigned int initialNumberFailed = numberFailed; bool exception = false; // first extract slices and rewrite them for ( unsigned int sliceDimension = 0; sliceDimension < 6; ++sliceDimension ) { mitk::ExtractImageFilter::Pointer extractor = mitk::ExtractImageFilter::New(); extractor->SetInput( image ); extractor->SetSliceDimension( sliceDimension ); extractor->SetSliceIndex( 2 ); // third slice in that direction try { extractor->Update(); } catch(...) { if ( sliceDimension < 3 ) { // probably no sliceindex 2 there or extractor just doesn't work (check the corresponding test) std::cout << " (WW) Couldn't extract slice number 3 from a 3D image. This could be a problem if the image is not only two slices big." << std::endl; continue; } else { continue; // good } } mitk::Image::Pointer slice = extractor->GetOutput(); filter->SetSliceDimension( sliceDimension ); filter->SetSliceIndex( 1 ); // second slice in that direction filter->SetSliceImage( slice ); try { filter->Update(); // try to overwrite } catch(...) { if ( sliceDimension < 3 ) { ++numberFailed; std::cerr << " (EE) Couln't overwrite a slice with data from a neigbor in a " << image->GetDimension() << "-dimensional image, sliceDimension " << sliceDimension << " sliceIndex 1-2." << "(l. " << __LINE__ << ")" << std::endl; } else { // this was expected and is nice to see continue; } } mitk::Image::Pointer output = filter->GetOutput(); if (output.IsNull()) { ++numberFailed; std::cerr << " (EE) Overwrite filter has output NULL and gave no exception for an " << image->GetDimension() << "-dimensional image, sliceDimension " << sliceDimension << " sliceIndex 1-2." << "(l. " << __LINE__ << ")" << std::endl; continue; } if (!CompareImageSliceTestHelper::CompareSlice( image, sliceDimension , 1 , slice )) { ++numberFailed; std::cerr << " (EE) Overwriting a slice seemed to work, but the pixels are not correct for an " << image->GetDimension() << "-dimensional image, sliceDimension " << sliceDimension << " sliceIndex 1-2." << "(l. " << __LINE__ << ")" << std::endl; } // try inserting at a position outside the image filter->SetSliceDimension( sliceDimension ); filter->SetSliceIndex( image->GetDimension(sliceDimension) ); // last possible slice index + 1 filter->SetSliceImage( slice ); exception = false; try { filter->Update(); // try to overwrite } catch(...) { exception = true; } if (!exception) { ++numberFailed; std::cerr << " (EE) Inserting a slice outside the 3D volume did NOT throw an exception for an " << image->GetDimension() << "-dimensional image, sliceDimension " << sliceDimension << " sliceIndex 1-2." << "(l. " << __LINE__ << ")" << std::endl; } mitk::Image::Pointer originalSlice = slice; // now test slices that just don't fit (slice too big) { unsigned int dim[]={ slice->GetDimension(0) + 2, slice->GetDimension(1) + 2 }; slice = mitk::Image::New(); slice-> Initialize(mitk::PixelType(typeid(signed int)), 2, dim); unsigned int i; signed int *p = (signed int*)slice->GetData(); unsigned int size = dim[0]*dim[1]; for(i=0; i<size; ++i, ++p) *p= (signed int)i; // try to insert this bad slice filter->SetSliceImage( slice ); exception = false; try { filter->Update(); // try to overwrite } catch(...) { exception = true; } if (!exception) { ++numberFailed; std::cerr << " (EE) Trying to insert a slice of bad dimensions (larger) did NOT throw an exception in an " << image->GetDimension() << "-dimensional image, sliceDimension " << sliceDimension << " sliceIndex 1-2." << "(l. " << __LINE__ << ")" << std::endl; } } // now test slices that just don't fit (slice too small) { slice = originalSlice; if ( (slice->GetDimension(0) <3) || (slice->GetDimension(1) <3) ) continue; // not possible shrink the image much further unsigned int dim[]={ slice->GetDimension(0) - 2, slice->GetDimension(1) - 2 }; slice = mitk::Image::New(); slice-> Initialize(mitk::PixelType(typeid(signed int)), 2, dim); unsigned int i; signed int *p = (signed int*)slice->GetData(); unsigned int size = dim[0]*dim[1]; for(i=0; i<size; ++i, ++p) *p= (signed int)i; // try to insert this bad slice filter->SetSliceImage( slice ); exception = false; try { filter->Update(); // try to overwrite } catch(...) { exception = true; } if (!exception) { ++numberFailed; std::cerr << " (EE) Trying to insert a slice of bad dimensions (smaller) did NOT throw an exception in an " << image->GetDimension() << "-dimensional image, sliceDimension " << sliceDimension << " sliceIndex 1-2." << "(l. " << __LINE__ << ")" << std::endl; } } } if ( numberFailed == initialNumberFailed ) { std::cout << " (II) Overwriting works nicely (gives result, pixels are good) " << image->GetDimension() << "-dimensional image." << "(l. " << __LINE__ << ")" << std::endl; } }
static void mitkOverwriteSliceImageFilterTestClass::TestOtherD | ( | mitk::OverwriteSliceImageFilter * | filter, |
mitk::Image * | image, | ||
unsigned int & | numberFailed | ||
) | [inline, static] |
Definition at line 259 of file mitkOverwriteSliceImageFilterTest.cpp.
References mitk::Image::GetDimension(), mitk::ImageToImageFilter::SetInput(), and mitk::OverwriteSliceImageFilter::SetSliceImage().
Referenced by mitkOverwriteSliceImageFilterTest().
{ assert(filter); assert(image); filter->SetInput( image ); filter->SetSliceImage( image ); bool exception = false; try { filter->Update(); } catch(...) { exception = true; } if (!exception) { std::cerr << " (EE) Using OverwriteImageFilter did not throw an exception " << "(l. " << __LINE__ << ")" << std::endl; } unsigned int initialNumberFailed = numberFailed; if ( numberFailed == initialNumberFailed ) { std::cout << " (II) Overwriting works nicely (gives result, pixels are good) " << image->GetDimension() << "-dimensional image." << "(l. " << __LINE__ << ")" << std::endl; } }