[Insight-users] Batch resampling: error writing files of different size
Jolinda Smith
jolinda@darkwing.uoregon.edu
Thu, 1 May 2003 12:38:20 -0700
Thanks! That's what I needed to know.
----- Original Message -----
From: "Miller, James V (Research)" <millerjv@crd.ge.com>
To: "'Jolinda Smith'" <jolinda@darkwing.uoregon.edu>; "insight users"
<insight-users@public.kitware.com>
Sent: Thursday, May 01, 2003 10:10 AM
Subject: RE: [Insight-users] Batch resampling: error writing files of
different size
> Call UpdateLargestPossibleRegion() instead of Update() on the Writer.
>
> The first time a pipeline is executed, Update() and
> UpdateLargestPossibleRegion()
> do the same thing. After the first update, however, Update() always
tries
> to
> produce the same requests as the previous call to Update(). If you
change
> the
> file attached to the pipeline, the image size can change (as you found
out),
>
> and using the "cached" region requests is inappropriate. Calling
> UpdateLargestPossibleRegion() will force the pipeline to adapt to the
image
> sizes.
>
> In general, you want to call Update() when a pipeline or data has been
> modified
> but you "know" the image sizes have not changed. After a change to
the
> pipeline
> or data that causes a change in image sizes, you need to call
> UpdateLargestPossibleRegion() or explictly manage the
RequestedRegion() on
> the last
> node in the pipeline.
>
>
> > -----Original Message-----
> > From: Jolinda Smith [mailto:jolinda@darkwing.uoregon.edu]
> > Sent: Wednesday, April 30, 2003 3:19 PM
> > To: insight users
> > Subject: [Insight-users] Batch resampling: error writing files of
> > different size
> >
> >
> > Hello,
> >
> > I'd like to resample several files in a batch process. I've written
a
> > program that parses a text file containing input filenames, output
> > filenames, and resampling parameters. I set up the pipeline, call
> > "SetFileName" on the reader and writer, set resampling parameters,
and
> > update the writer. Then I read in new filenames and parameters, set
> > them, and update the writer again. However, if the size of the
output
> > image is larger that it was for the previous set of files, the
writer
> > fails (referencing memory at 0x00000 when writing metaimage output,
an
> > ITK exception: "error writing image data" when writing
> > analyze output).
> > A stripped-down version of the code is below.
> >
> > Is the buffer for the output image data not getting resized
correctly?
> > Is there something else I can do to make this work?
> >
> > ReaderType::Pointer reader = ReaderType::New();
> > WriterType::Pointer writer = WriterType::New();
> > FilterType::Pointer filter = FilterType::New();
> >
> > filter->SetInput( reader->GetOutput() );
> > writer->SetInput( filter->GetOutput() );
> >
> > while (file.good()) {
> >
> > getline(file, input_filename);
> > getline(file, output_filename);
> >
> > OutputImageType::SizeType size;
> > file >> size[0];
> > file >> size[1];
> > file >> size[2];
> >
> > reader->SetFileName(input_filename );
> > writer->SetFileName(output_filename);
> > filter->SetSize(size);
> >
> > try
> > {
> > writer->Update();
> > }
> > catch (itk::ExceptionObject& err)
> > {
> > cout << err << endl;
> > return -1;
> > }
> >
> > }
> >
> > _______________________________________________
> > Insight-users mailing list
> > Insight-users@public.kitware.com
> > http://public.kitware.com/mailman/listinfo/insight-users
> >
>