[Insight-developers] propagating region size changes through
the pipeline
Joshua Cates
cates@cs.utah.edu
Mon, 10 Sep 2001 11:46:59 -0600 (MDT)
Hi Jim,
I agree that these different behaviors of Update() are confusing. Is
there a reason that Update() can't just behave as if it were being called
the first time at each subsequent call--at least with respect to updating
& propagating region sizes?
Josh.
______________________________
Josh Cates
School of Computer Science
University of Utah
Email: cates@cs.utah.edu
Phone: (801) 587-7697
URL: www.cs.utk.edu/~cates
On Mon, 10 Sep 2001, Miller, James V (CRD) wrote:
> Josh,
>
> I finally have a handle on this. I'm not too happy with the solution/explaination. So I may end up
> reworking some things.
>
> ProcessObject has two methods: Update() and UpdateLargestPossibleRegion(). Update() always brings
> the output requested region up-to-date. If an output requested region has not been set, then
> Update() will set the output requested region to the output largest possible region. Once the output
> requested region is set, Update() will continue using that requested region. If changes are made to
> the pipeline such that the largest possible region changes, these changes will not change the output
> requested region.
>
> So for your pipeline, changing the file to be read resulted in different largest possible regions.
> The first time through the pipeline, Update() set the filter's output requested region to the largest
> possible region for the first dataset. When you changed the file to be read, the filter tried to use
> the previous requested region.
>
> If you always want the entire image to be processed, you should call UpdateLargestPossibleRegion()
> instead of calling Update().
>
> I have modified the documentation for ProcessObject to amplify this distinction. But I am not happy
> with Update() having different behaviors when it is called the first time verses subsequent calls.
> The difficulty is that you really don't know whether the user is calling Update() or the pipeline is
> calling Update() internally.
>
> Jim
>
>
> -----Original Message-----
> From: Joshua Cates [mailto:cates@cs.utah.edu]
> Sent: Thursday, August 23, 2001 12:21 PM
> To: Insight-Developers
> Subject: [Insight-developers] propagating region size changes through
> the pipeline
>
>
> Hi,
>
> I am having pipeline troubles. I cannot get the pipeline to propagate
> changes to the size of output regions on updates.
>
> Consider the pipeline:
>
> myFileReader -> myFilter -> myFileWriter
>
> And the code
>
> for (i = 1 to 10)
> myFileReader->SetFileName(myInputData.i)
> myFileWriter->SetFileName(myOutputData.i)
> myFileWriter->Update()
>
>
> The trouble is that not every data set myInputData.i is the same size.
> When myFileReader reads a new file, it defines the region sizes in
> GenerateOutputRequestedRegion (also in UpdateOutputInformation(), though I
> don't know if this is necessary?).
>
> When I print myFilter->GetInput()->GetRequestedRegion(), this region is
> correct. myFilter->GetOutputRegion()->GetRequestedRegion(), however, is
> still the same as in the previous execution of the pipeline.
>
> What am I missing?
>
> Thanks,
>
> Josh.
>
>
> ______________________________
> Josh Cates
> School of Computer Science
> University of Utah
> Email: cates@cs.utah.edu
> Phone: (801) 587-7697
> URL: www.cs.utk.edu/~cates
>
>
>
> _______________________________________________
> Insight-developers mailing list
> Insight-developers@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-developers
>