[Insight-users] TileFilterType
Alberto
albermnz at gmail.com
Tue Jun 17 13:53:16 EDT 2008
Thanks a ot BIll, although I just tried what you said and it still doesn't
work. The output is exactly the same.
Has anybody another suggestion?
Regards
Bert
On Tue, Jun 17, 2008 at 7:43 PM, Bill Lorensen <bill.lorensen at gmail.com>
wrote:
> Bert,
>
> Move the
> ExtractFilterType::Pointer extractFilter = ExtractFilterType::New ();
> inside the for loop. Currently you are reusing the output of the same
> instance. By moving the New inside the loop, you will get a new
> extract filter for each iteration. The magic of smart pointers should
> delete memory when it should.
>
> Bill
>
> On Tue, Jun 17, 2008 at 12:45 PM, Alberto <albermnz at gmail.com> wrote:
> > Dear all,
> > I am trying to test that I know how to use the tileFIlter. What I am
> doing
> > is to extract 5 2D slices and then, withot any processing, recover the 3D
> > image. The problem is that all slices are OK, except the first one which
> is
> > equal to the las one. I cannot see the mistake, could yo help me?
> >
> >
> >
> >
> > typedef unsigned char InputPixelType;
> > typedef unsigned char MiddlePixelType;
> > typedef unsigned char OutputPixelType;
> >
> > typedef itk::Image< InputPixelType, 3 > InputImageType;
> > typedef itk::Image< MiddlePixelType, 2 > MiddleImageType;
> > typedef itk::Image< OutputPixelType, 3 > OutputImageType;
> >
> > typedef itk::ImageFileReader< InputImageType > ReaderType;
> > typedef itk::ImageFileWriter< OutputImageType > WriterType;
> >
> > typedef itk::ExtractImageFilter< InputImageType, MiddleImageType >
> > ExtractFilterType;
> > typedef itk::TileImageFilter<MiddleImageType, OutputImageType >
> > TileFilterType;
> >
> > const char * inputFilename = argv[1];
> > const char * outputFilename = argv[2];
> >
> > ReaderType::Pointer reader = ReaderType::New();
> > WriterType::Pointer writer = WriterType::New();
> > reader->SetFileName( inputFilename );
> > writer->SetFileName( outputFilename );
> >
> > reader->Update();
> >
> > InputImageType::RegionType inputRegion =
> > reader->GetOutput()->GetLargestPossibleRegion();
> > ExtractFilterType::Pointer extractFilter = ExtractFilterType::New ();
> >
> > InputImageType::SizeType size = inputRegion.GetSize();
> > size[2] = 0;
> >
> > InputImageType::IndexType start = inputRegion.GetIndex();
> > InputImageType::RegionType desiredRegion;
> >
> > TileFilterType::Pointer tileFilter = TileFilterType::New();
> >
> > for (int sliceNumber=0; sliceNumber<5; sliceNumber++)
> > {
> > start[2] = sliceNumber;
> >
> > desiredRegion.SetSize( size );
> > desiredRegion.SetIndex( start );
> >
> > extractFilter->SetExtractionRegion( desiredRegion );
> > extractFilter->SetInput( reader->GetOutput() );
> > extractFilter->Update();
> >
> > TileFilterType::LayoutArrayType layout;
> > layout[0] = 1;
> > layout[1] = 1;
> > layout[2] = 0;
> > tileFilter->SetLayout( layout );
> >
> > // Set up pipeline
> > tileFilter->SetInput( extractFilter->GetOutput() );
> >
> > // Vector of pointers to the many 2D extracted images
> > std::vector< MiddleImageType::Pointer > extracts;
> > desiredRegion.SetIndex( start );
> >
> > extracts.push_back( extractFilter->GetOutput() );
> >
> > if (sliceNumber != 0)
> > {
> > tileFilter->PushBackInput( extracts.back() );
> > }
> > extracts.back()->DisconnectPipeline();
> > }
> > tileFilter->Update();
> >
> >
> > Thanks a lot
> > Best regards
> > Bert
> >
> >
> > _______________________________________________
> > Insight-users mailing list
> > Insight-users at itk.org
> > http://www.itk.org/mailman/listinfo/insight-users
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20080617/df40ac2b/attachment.htm>
More information about the Insight-users
mailing list