[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
>