#include "itkTotalVariationDenoisingImageFilter.h"#include "itkTotalVariationSingleIterationImageFilter.h"#include "itkLocalVariationImageFilter.h"#include "itkImageRegionIterator.h"Go to the source code of this file.
Typedefs | |
| typedef itk::Image< float, 3 > | ImageType |
| typedef itk::ImageRegionIterator < ImageType > | IteratorType |
| typedef itk::Vector< float, 2 > | VectorPixelType |
| typedef itk::Image < VectorPixelType, 3 > | VectorImageType |
| typedef itk::ImageRegionIterator < VectorImageType > | VectorIteratorType |
Functions | |
| ImageType::Pointer | GenerateTestImage () |
| VectorImageType::Pointer | GenerateVectorTestImage () |
| void | PrintImage (ImageType::Pointer image) |
| void | PrintVectorImage (VectorImageType::Pointer image) |
| int | itkTotalVariationDenoisingImageFilterTest (int, char *[]) |
| typedef itk::Image<float, 3> ImageType |
Definition at line 25 of file itkTotalVariationDenoisingImageFilterTest.cpp.
| typedef itk::ImageRegionIterator<ImageType> IteratorType |
Definition at line 27 of file itkTotalVariationDenoisingImageFilterTest.cpp.
| typedef itk::Image<VectorPixelType, 3> VectorImageType |
Definition at line 33 of file itkTotalVariationDenoisingImageFilterTest.cpp.
| typedef itk::ImageRegionIterator<VectorImageType> VectorIteratorType |
Definition at line 35 of file itkTotalVariationDenoisingImageFilterTest.cpp.
| typedef itk::Vector<float,2> VectorPixelType |
Definition at line 31 of file itkTotalVariationDenoisingImageFilterTest.cpp.
| ImageType::Pointer GenerateTestImage | ( | ) |
3x3x3 test image
Definition at line 40 of file itkTotalVariationDenoisingImageFilterTest.cpp.
Referenced by itkTotalVariationDenoisingImageFilterTest().
{
// init
ImageType::Pointer image = ImageType::New();;
// spacing
ImageType::SpacingType spacing;
spacing[0] = 1;
spacing[1] = 1;
spacing[2] = 1;
image->SetSpacing(spacing);
// extent
ImageType::RegionType largestPossibleRegion;
ImageType::SizeType size = {{3,3,1}};
largestPossibleRegion.SetSize( size );
ImageType::IndexType index = {{0,0,0}};
largestPossibleRegion.SetIndex( index );
image->SetLargestPossibleRegion( largestPossibleRegion );
image->SetBufferedRegion( largestPossibleRegion );
// allocate memory
image->Allocate();
int i=0;
IteratorType it(image, largestPossibleRegion);
it.GoToBegin();
while(!it.IsAtEnd())
{
it.Set((float)i++);
++it;
}
return image;
}
| VectorImageType::Pointer GenerateVectorTestImage | ( | ) |
Definition at line 76 of file itkTotalVariationDenoisingImageFilterTest.cpp.
Referenced by itkTotalVariationDenoisingImageFilterTest().
{
// init
VectorImageType::Pointer image = VectorImageType::New();;
// spacing
VectorImageType::SpacingType spacing;
spacing[0] = 1;
spacing[1] = 1;
spacing[2] = 1;
image->SetSpacing(spacing);
// extent
VectorImageType::RegionType largestPossibleRegion;
VectorImageType::SizeType size = {{3,3,1}};
largestPossibleRegion.SetSize( size );
VectorImageType::IndexType index = {{0,0,0}};
largestPossibleRegion.SetIndex( index );
image->SetLargestPossibleRegion( largestPossibleRegion );
image->SetBufferedRegion( largestPossibleRegion );
// allocate memory
image->Allocate();
int i=0;
VectorIteratorType it(image, largestPossibleRegion);
it.GoToBegin();
while(!it.IsAtEnd())
{
VectorPixelType vec;
vec[0] = (float)i;
vec[1] = (float)i++;
it.Set(vec);
++it;
}
return image;
}
| int itkTotalVariationDenoisingImageFilterTest | ( | int | , |
| char * | [] | ||
| ) |
todo
Definition at line 138 of file itkTotalVariationDenoisingImageFilterTest.cpp.
References EXIT_FAILURE, EXIT_SUCCESS, GenerateTestImage(), GenerateVectorTestImage(), PrintImage(), and PrintVectorImage().
{
ImageType::Pointer image = GenerateTestImage();
PrintImage(image);
double precision = 0.01;
ImageType::IndexType index = {{1,1,0}};
VectorImageType::IndexType vecIndex = {{1,1,0}};
try
{
typedef itk::LocalVariationImageFilter<ImageType,ImageType>
LocalFilterType;
LocalFilterType::Pointer filter = LocalFilterType::New();
filter->SetInput(image);
filter->SetNumberOfThreads(1);
filter->Update();
ImageType::Pointer outImage = filter->GetOutput();
PrintImage(outImage);
if(fabs(outImage->GetPixel(index) - 4.472) > precision)
{
return EXIT_FAILURE;
}
}
catch (...)
{
return EXIT_FAILURE;
}
try
{
typedef itk::TotalVariationSingleIterationImageFilter<ImageType,ImageType>
SingleFilterType;
SingleFilterType::Pointer sFilter = SingleFilterType::New();
sFilter->SetInput( image );
sFilter->SetOriginalImage(GenerateTestImage());
sFilter->SetLambda(0.5);
sFilter->SetNumberOfThreads(1);
sFilter->Update();
ImageType::Pointer outImageS = sFilter->GetOutput();
PrintImage(outImageS);
if(fabs(outImageS->GetPixel(index) - 4.0) > precision)
{
return EXIT_FAILURE;
}
}
catch (...)
{
return EXIT_FAILURE;
}
try
{
typedef itk::TotalVariationDenoisingImageFilter<ImageType,ImageType>
TVFilterType;
TVFilterType::Pointer tvFilter = TVFilterType::New();
tvFilter->SetInput(image);
tvFilter->SetNumberIterations(30);
tvFilter->SetNumberOfThreads(1);
tvFilter->SetLambda(0.1);
tvFilter->Update();
ImageType::Pointer outImageTV = tvFilter->GetOutput();
PrintImage(outImageTV);
if(fabs(outImageTV->GetPixel(index) - 4.0) > precision)
{
return EXIT_FAILURE;
}
}
catch (...)
{
return EXIT_FAILURE;
}
VectorImageType::Pointer vecImage = GenerateVectorTestImage();
PrintVectorImage(vecImage);
try
{
typedef itk::LocalVariationImageFilter<VectorImageType,ImageType>
LocalVecFilterType;
LocalVecFilterType::Pointer vecFilter = LocalVecFilterType::New();
vecFilter->SetInput(vecImage);
vecFilter->SetNumberOfThreads(1);
vecFilter->Update();
ImageType::Pointer outVecImage = vecFilter->GetOutput();
PrintImage(outVecImage);
if(fabs(outVecImage->GetPixel(index) - 6.324) > precision)
{
return EXIT_FAILURE;
}
}
catch (...)
{
return EXIT_FAILURE;
}
try
{
typedef itk::TotalVariationSingleIterationImageFilter
<VectorImageType,VectorImageType>
SingleVecFilterType;
SingleVecFilterType::Pointer sVecFilter = SingleVecFilterType::New();
sVecFilter->SetInput( vecImage );
sVecFilter->SetOriginalImage(vecImage);
sVecFilter->SetLambda(0.5);
sVecFilter->SetNumberOfThreads(1);
sVecFilter->UpdateLargestPossibleRegion();
VectorImageType::Pointer outVecImageS = sVecFilter->GetOutput();
PrintVectorImage(outVecImageS);
if(fabs(outVecImageS->GetPixel(vecIndex)[1] - 4.0) > precision)
{
return EXIT_FAILURE;
}
}
catch (...)
{
return EXIT_FAILURE;
}
try
{
typedef itk::TotalVariationDenoisingImageFilter
<VectorImageType,VectorImageType> TVVectorFilterType;
TVVectorFilterType::Pointer tvVecFilter = TVVectorFilterType::New();
tvVecFilter->SetInput(vecImage);
tvVecFilter->SetNumberIterations(30);
tvVecFilter->SetNumberOfThreads(1);
tvVecFilter->SetLambda(0.1);
tvVecFilter->Update();
VectorImageType::Pointer outVecImageTV = tvVecFilter->GetOutput();
PrintVectorImage(outVecImageTV);
if(fabs(outVecImageTV->GetPixel(vecIndex)[1] - 4.0) > precision)
{
return EXIT_FAILURE;
}
}
catch (...)
{
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
| void PrintImage | ( | ImageType::Pointer | image ) |
Definition at line 115 of file itkTotalVariationDenoisingImageFilterTest.cpp.
Referenced by itkTotalVariationDenoisingImageFilterTest().
{
IteratorType it(image, image->GetLargestPossibleRegion());
for(it.GoToBegin(); !it.IsAtEnd(); ++it)
{
std::cout << it.Get() << " ";
}
std::cout << std::endl;
}
| void PrintVectorImage | ( | VectorImageType::Pointer | image ) |
Definition at line 125 of file itkTotalVariationDenoisingImageFilterTest.cpp.
Referenced by itkTotalVariationDenoisingImageFilterTest().
{
VectorIteratorType it(image, image->GetLargestPossibleRegion());
for(it.GoToBegin(); !it.IsAtEnd(); ++it)
{
std::cout << it.Get() << " ";
}
std::cout << std::endl;
}
1.7.2