/*========================================================================= Program: Insight Segmentation & Registration Toolkit Module: $RCSfile: itkMaskedSpatialObjectToImageFilterTests.cxx,v $ Language: C++ Date: $Date: 2006/07/19 14:04:24 $ Version: $Revision: 1.0 $ Copyright (c) Insight Software Consortium. All rights reserved. See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ #if defined(_MSC_VER) #pragma warning ( disable : 4786 ) #endif #include "itkNumericTraits.h" #include "itkImageFileReader.h" #include "itkImageFileWriter.h" #include "itkMaskedSpatialObjectToImageFilter.h" #include "itkSpatialObjectToImageFilter.h" #include "itkGroupSpatialObject.h" #include "itkImageSpatialObject.h" #include "itkSpatialObjectReader.h" int itkMaskedSpatialObjectToImageFilterTest(int argc, char *argv[]) { //Set input variables char* InputSpatialObjectFilename = argv[1]; char* OutputImageFilename = argv[2]; unsigned int Size0 = atoi(argv[3]); unsigned int Size1 = atoi(argv[4]); unsigned int Size2 = atoi(argv[5]); double Spacing0 = atof(argv[6]); double Spacing1 = atof(argv[7]); double Spacing2 = atof(argv[8]); double MaskResampleFactor = atof(argv[9]); double MaskDilationSize = atoi(argv[10]); if (argc < 11) { std::cerr << "Usage: " << std::endl; std::cerr << argv[0]; std::cerr << " InputSpatialObjectFilename"; std::cerr << " OutputImageFilename"; std::cerr << " Size0"; std::cerr << " Size1"; std::cerr << " Size2"; std::cerr << " Spacing0"; std::cerr << " Spacing1"; std::cerr << " Spacing2"; std::cerr << " MaskResampleFactor"; std::cerr << " MaskDilationSize"; std::cerr << std::endl; return EXIT_FAILURE; } //Declare types const unsigned int Dimension = 3; typedef unsigned char PixelType; typedef itk::Image ImageType; typedef itk::SpatialObjectReader SpatialReaderType; typedef itk::ImageFileWriter WriterType; typedef itk::GroupSpatialObject GroupType; typedef itk::MaskedSpatialObjectToImageFilter SpatialObjectToImageFilterType; try { //Read input SpatialObject (SO) SpatialReaderType::Pointer readerSO = SpatialReaderType::New(); readerSO->SetFileName(InputSpatialObjectFilename); readerSO->Update(); //Convert SO to image SpatialObjectToImageFilterType::Pointer filterConvert = SpatialObjectToImageFilterType::New(); filterConvert->SetInput(readerSO->GetGroup()); //Set Input SpatialObjectToImageFilterType::SizeType size; //Set Size size[0] = Size0; size[1] = Size1; size[2] = Size2; filterConvert->SetSize(size); SpatialObjectToImageFilterType::SpacingType spacing; //Set Spacing spacing[0] = Spacing0; spacing[1] = Spacing1; spacing[2] = Spacing2; filterConvert->SetSpacing(spacing); filterConvert->SetUseObjectValue(false); //Setup Parameters filterConvert->SetInsideValue(itk::NumericTraits::max()); filterConvert->SetOutsideValue(itk::NumericTraits::min()); filterConvert->SetMaskResampleFactor(MaskResampleFactor); filterConvert->SetMaskDilationSize(MaskDilationSize); filterConvert->Update(); //Write output WriterType::Pointer writer = WriterType::New(); writer->SetFileName(OutputImageFilename); writer->SetInput(filterConvert->GetOutput()); writer->Update(); } catch (itk::ExceptionObject & err) { std::cout << "ExceptionObject caught !" << std::endl; std::cout << err << std::endl; return EXIT_FAILURE; } //Return return EXIT_SUCCESS; } int itkSpatialObjectToImageFilterTest(int argc, char *argv[]) { //Set input variables char* InputSpatialObjectFilename = argv[1]; char* OutputImageFilename = argv[2]; unsigned int Size0 = atoi(argv[3]); unsigned int Size1 = atoi(argv[4]); unsigned int Size2 = atoi(argv[5]); double Spacing0 = atof(argv[6]); double Spacing1 = atof(argv[7]); double Spacing2 = atof(argv[8]); if (argc < 9) { std::cerr << "Usage: " << std::endl; std::cerr << argv[0]; std::cerr << " InputSpatialObjectFilename"; std::cerr << " OutputImageFilename"; std::cerr << " Size0"; std::cerr << " Size1"; std::cerr << " Size2"; std::cerr << " Spacing0"; std::cerr << " Spacing1"; std::cerr << " Spacing2"; std::cerr << std::endl; return EXIT_FAILURE; } //Declare types const unsigned int Dimension = 3; typedef unsigned char PixelType; typedef itk::Image ImageType; typedef itk::SpatialObjectReader SpatialReaderType; typedef itk::ImageFileWriter WriterType; typedef itk::GroupSpatialObject GroupType; typedef itk::SpatialObjectToImageFilter SpatialObjectToImageFilterType; try { //Read input SpatialObject (SO) SpatialReaderType::Pointer readerSO = SpatialReaderType::New(); readerSO->SetFileName(InputSpatialObjectFilename); readerSO->Update(); //Convert SO to image SpatialObjectToImageFilterType::Pointer filterConvert = SpatialObjectToImageFilterType::New(); filterConvert->SetInput(readerSO->GetGroup()); SpatialObjectToImageFilterType::SizeType size; //Set Size size[0] = Size0; size[1] = Size1; size[2] = Size2; filterConvert->SetSize(size); SpatialObjectToImageFilterType::SpacingType spacing; //Set Spacing spacing[0] = Spacing0; spacing[1] = Spacing1; spacing[2] = Spacing2; filterConvert->SetSpacing(spacing); filterConvert->SetUseObjectValue(false); filterConvert->SetInsideValue(itk::NumericTraits::max()); filterConvert->SetOutsideValue(itk::NumericTraits::min()); filterConvert->Update(); //Write output WriterType::Pointer writer = WriterType::New(); writer->SetFileName(OutputImageFilename); writer->SetInput(filterConvert->GetOutput()); writer->Update(); } catch (itk::ExceptionObject & err) { std::cout << "ExceptionObject caught !" << std::endl; std::cout << err << std::endl; return EXIT_FAILURE; } //Return return EXIT_SUCCESS; } int itkImageSpatialObjectTest(int argc, char *argv[]) { //NOTE: This test ensures that the MaskedSpatialObjectToImageFilter // can handle SpatialObjects which return a grey-scale value // during conversion, rather than simply a binary value // (eg. ImageSpatialObject). //Set input variables char* InputImageFilename = argv[1]; char* OutputImageFilename = argv[2]; unsigned int Size0 = atoi(argv[3]); unsigned int Size1 = atoi(argv[4]); unsigned int Size2 = atoi(argv[5]); double Spacing0 = atof(argv[6]); double Spacing1 = atof(argv[7]); double Spacing2 = atof(argv[8]); double MaskResampleFactor = atof(argv[9]); double MaskDilationSize = atoi(argv[10]); if (argc < 11) { std::cerr << "Usage: " << std::endl; std::cerr << argv[0]; std::cerr << " InputImageFilename"; std::cerr << " OutputImageFilename"; std::cerr << " Size0"; std::cerr << " Size1"; std::cerr << " Size2"; std::cerr << " Spacing0"; std::cerr << " Spacing1"; std::cerr << " Spacing2"; std::cerr << " MaskResampleFactor"; std::cerr << " MaskDilationSize"; std::cerr << std::endl; return EXIT_FAILURE; } //Declare types const unsigned int Dimension = 3; typedef unsigned char PixelType; typedef itk::Image ImageType; typedef itk::ImageFileWriter WriterType; typedef itk::ImageFileReader ReaderType; typedef itk::ImageSpatialObject ImageSpatialObjectType; typedef itk::MaskedSpatialObjectToImageFilter SpatialObjectToImageFilterType; //Read input image ReaderType::Pointer reader = ReaderType::New(); reader->SetFileName(InputImageFilename); reader->Update(); //Create image spatial object ImageSpatialObjectType::Pointer imageSO = ImageSpatialObjectType::New(); imageSO->SetImage(reader->GetOutput()); //Convert ImageSpatialObject to Image SpatialObjectToImageFilterType::Pointer filterConvert = SpatialObjectToImageFilterType::New(); filterConvert->SetInput(imageSO); SpatialObjectToImageFilterType::SizeType size; //Set Size size[0] = Size0; size[1] = Size1; size[2] = Size2; filterConvert->SetSize(size); SpatialObjectToImageFilterType::SpacingType spacing; //Set Spacing spacing[0] = Spacing0; spacing[1] = Spacing1; spacing[2] = Spacing2; filterConvert->SetSpacing(spacing); filterConvert->SetUseObjectValue(true); filterConvert->Update(); //Write output WriterType::Pointer writer = WriterType::New(); writer->SetFileName(OutputImageFilename); writer->SetInput(filterConvert->GetOutput()); writer->Update(); return EXIT_SUCCESS; }