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