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;
}
}
1.7.2