1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
/*=========================================================================
Copyright (c) Kitware, Inc.
All rights reserved.
See Copyright.txt or http://www.kitware.com/VolViewCopyright.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 notice for more information.
=========================================================================*/
#include "itkPhantomBoundingBox.h"
#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"
#include "itkRegionOfInterestImageFilter.h"
#include <iostream>
int main( int argc, char *argv[] )
{
if (argc < 9)
{
std::cerr << "Usage args : PhantomCTData.mha OutputCroppedRegion.mha TeflonCenterX TeflonCenterY TeflonCenterZ DelrinCenterX DelrinCenterY DelrinCenterZ CylinderImage " << std::endl;
return EXIT_FAILURE;
}
typedef itk::Image< short, 3 > ImageType;
typedef itk::PhantomBoundingBox< ImageType > CalculatorType;
itk::ImageFileReader< ImageType >::Pointer reader =
itk::ImageFileReader< ImageType >::New();
reader->SetFileName( argv[1] );
reader->Update();
CalculatorType::Pointer calculator = CalculatorType::New();
calculator->SetImage( reader->GetOutput() );
CalculatorType::PointType teCenter, deCenter;
teCenter[0] = atof(argv[3]); teCenter[1] = atof(argv[4]); teCenter[2] = atof(argv[5]);
deCenter[0] = atof(argv[6]); deCenter[1] = atof(argv[7]); deCenter[2] = atof(argv[8]);
calculator->SetTeflonCenter( teCenter );
calculator->SetDelrinCenter( deCenter );
calculator->Compute();
calculator->Print(std::cout);
//std::cout << "BBox: " << calculator->GetBounds() << std::endl;
//std::cout << "BBox region: " << calculator->GetBoundingBoxRegion() << std::endl;
/*
typedef itk::RegionOfInterestImageFilter< ImageType, ImageType > ROIFilterType;
ROIFilterType::Pointer roi = ROIFilterType::New();
roi->SetInput( reader->GetOutput() );
roi->SetRegionOfInterest(calculator->GetBoundingBoxRegion());
roi->Update();
itk::ImageFileWriter< ImageType >::Pointer writer =
itk::ImageFileWriter< ImageType >::New();
writer->SetFileName( argv[2] );
writer->SetInput(roi->GetOutput());
writer->SetUseCompression(true);
writer->Update();
writer->SetFileName( argv[9] );
writer->SetInput(calculator->GetPhantomImage());
writer->Update();
itk::ImageFileWriter< CalculatorType::BinaryImageType >::Pointer writer2 =
itk::ImageFileWriter< CalculatorType::BinaryImageType >::New();
writer2->SetFileName( argv[10] );
writer2->SetInput(calculator->GetCentralBitsImage(0));
writer2->Update();
*/
return EXIT_SUCCESS;
}
|