#include "itkImageFileReader.h" #include "itkImageFileWriter.h" #include "itkSimpleFilterWatcher.h" #include "itkLabelObject.h" #include "itkLabelMap.h" #include "itkLabelImageToLabelMapFilter.h" #include "itkChangeRegionLabelMapFilter.h" #include "itkLabelMapToLabelImageFilter.h" int main(int argc, char * argv[]) { if( argc != 7 ) { std::cerr << "usage: " << argv[0] << " input output idx0 idx1 size0 size1" << std::endl; // std::cerr << " : " << std::endl; exit(1); } const int dim = 2; typedef itk::Image< unsigned char, dim > ImageType; typedef itk::LabelObject< unsigned char, dim > LabelObjectType; typedef itk::LabelMap< LabelObjectType > LabelMapType; typedef itk::ImageFileReader< ImageType > ReaderType; ReaderType::Pointer reader = ReaderType::New(); reader->SetFileName( argv[1] ); typedef itk::LabelImageToLabelMapFilter< ImageType, LabelMapType> I2LType; I2LType::Pointer i2l = I2LType::New(); i2l->SetInput( reader->GetOutput() ); typedef itk::ChangeRegionLabelMapFilter< LabelMapType > ChangeType; ChangeType::Pointer change = ChangeType::New(); change->SetInput( i2l->GetOutput() ); ChangeType::IndexType idx; idx[0] = atoi( argv[3] ); idx[1] = atoi( argv[4] ); ChangeType::SizeType size; size[0] = atoi( argv[5] ); size[1] = atoi( argv[6] ); ChangeType::RegionType region; region.SetSize( size ); region.SetIndex( idx ); change->SetRegion( region ); itk::SimpleFilterWatcher watcher6(change, "filter"); typedef itk::LabelMapToLabelImageFilter< LabelMapType, ImageType> L2IType; L2IType::Pointer l2i = L2IType::New(); l2i->SetInput( change->GetOutput() ); typedef itk::ImageFileWriter< ImageType > WriterType; WriterType::Pointer writer = WriterType::New(); writer->SetInput( l2i->GetOutput() ); writer->SetFileName( argv[2] ); writer->Update(); return 0; }