#if defined(_MSC_VER) #pragma warning ( disable : 4786 ) #endif #ifdef __BORLANDC__ #define ITK_LEAN_AND_MEAN #endif #include "itkConnectedThresholdImageFilter.h" #include "itkImage.h" #include "itkImageFileReader.h" #include "itkImageFileWriter.h" int main( int argc, char *argv[] ) { if (argc != 3 ) { std::cerr << "Incorrect number of arguments " << std::endl; std::cerr << "Usage: " << argv[0]; std::cerr << " inputImage outputImage" << std::endl; return 1; } // pixel types and dimension typedef float InputPixelType; typedef short OutputPixelType; const unsigned int Dimension = 3; // image types typedef itk::Image< InputPixelType, Dimension > InputImageType; typedef itk::Image< OutputPixelType, Dimension > OutputImageType; // Reader/Writer stuff typedef itk::ImageFileReader< InputImageType > FileReaderType; typedef itk::ImageFileWriter< OutputImageType > FileWriterType; // filter typedef itk::ConnectedThresholdImageFilter< InputImageType, OutputImageType > FilterType; // read file FileReaderType::Pointer fileReader = FileReaderType::New(); fileReader->SetFileName( argv[1] ); // filter FilterType::Pointer filter = FilterType::New(); filter->SetInput( fileReader->GetOutput() ); // writer FileWriterType::Pointer fileWriter = FileWriterType::New(); fileWriter->SetFileName( argv[2] ); fileWriter->SetInput( filter->GetOutput() ); filter->SetReplaceValue( 1000 ); // filter->SetMultiplier( 1.5 ); // filter->SetNumberOfIterations( 2 ); filter->SetLower( 1100 ); filter->SetUpper( 2000 ); InputImageType::IndexType index; index[0] = 90; index[1] = 120; index[2] = 67; filter->AddSeed(index); filter->AddSeed(index); // filter->SetInitialNeighborhoodRadius( 2 ); try { fileWriter->Update(); } catch( itk::ExceptionObject & excep ) { std::cerr << "Exception caught !" << std::endl; std::cerr << excep << std::endl; } return 0; }