[Insight-users] problem with ImageDuplicator

Miller, James V (Research) millerjv at crd.ge.com
Mon, 23 Feb 2004 11:58:28 -0500


Sergio, 

Calling DataObject::DisconnectPipeline() is the proper way to grab 
an output from a filter and disconnect it from the pipeline. It 
accomplishes two things: First, it sets up the data object so that
it does not have a source.  Second, it makes sure the filter is reset
so that it creates a new output object. (So if the filter is asked to run 
again, it will operate without error).

FilterType::OutputImagePointer image;
image = filter->GetOutput();
image->DisconnectPipeline();


-----Original Message-----
From: Sergio Andres [mailto:sergio at unizar.es]
Sent: Monday, February 23, 2004 11:30 AM
To: Miller, James V (Research); insight-users at itk.org
Subject: Re: [Insight-users] problem with ImageDuplicator



Now, I don't use ImageDuplicator any more.
I call to DataObject::DisconnectPipeline() to disconnect output images 
from the pipeline.

But I don't know if this is a good way to get output images disconnected...
So far I think it works right..

Thanks for your help... maybe I will try the new version of ImageDuplicator.

Sergio.


Miller, James V (Research) escribio:

>Sergio, 
>
>I checked in some changes to ImageDuplicator.  Can you try the new version?
>
>I am not happy with this class.  It gives the user the impression that is
in
>the pipeline but it is not a pipeline object. It requires the input be up
to
>date 
>prior to running the Duplicator.  Plus, everytime the Duplicator runs, it
>creates
>a NEW output object, so you need to call GetOutput() on the Duplicator
after
>each call to Update().
>
>
>I may remove it in favor of an actual filter or a DeepCopy method on Image.
>
>
>
>-----Original Message-----
>From: Miller, James V (Research) [mailto:millerjv at crd.ge.com]
>Sent: Monday, February 23, 2004 8:55 AM
>To: 'Sergio Andres'; insight-users at itk.org
>Subject: RE: [Insight-users] problem with ImageDuplicator
>
>
>Sergio, 
>
>The ImageDuplicator filter does not adhere to the pipeline mechanism and
>relies on the modified times of DataObjects to do what it needs to do.
>However, a DataObject's modified time is usually not altered when the bulk
>data is generated.
>So the duplicator is probably not executing the second time it is used.
>
>I am not sure where the Duplicator is being used, if you would like, I can
>try to fix it to adhere to the pipeline semantics.
>
>Jim
>
>
>
>-----Original Message-----
>From: Sergio Andres [mailto:sergio at unizar.es]
>Sent: Monday, February 23, 2004 8:09 AM
>To: insight-users at itk.org
>Subject: [Insight-users] problem with ImageDuplicator
>
>
>
>Hi all,
>
>I'm using several ITK filters such as :
>-RecursiveGaussianImageFilter,
>-AddImageFilter,
>-MultiplyImageFilter
>-and ImageDuplicator
>
>
>I got surprised when the results weren't as I expected..
>
>My code is like this:
>
>            // auxImage = LxLxLxx + LyLyLyy
>            addFilter->SetInput1(imageLxLxLxx);
>            addFilter->SetInput2(imageLyLyLyy);
>            addFilter->Update();
>
>            duplicatorFilter->SetInputImage(addFilter->GetOutput());
>            duplicatorFilter->Update();
>            auxImage = duplicatorFilter->GetOutput();
>
>            // outputImage = LxLxLxx + LyLyLyy + 2LxLxyLy
>            addFilter->SetInput1(auxImage);
>            addFilter->SetInput2(image2LxLyLxy);
>            addFilter->Update();
>
>            duplicatorFilter->SetInputImage(addFilter->GetOutput());
>            duplicatorFilter->Update();
>            outputImage = duplicatorFilter->GetOutput();
>
>           
>            diffFilter->SetValidInput(addFilter->GetOutput());
>            diffFilter->SetTestInput(outputImage);
>            diffFilter->Update();
>
>As you can see above, I use addFilter to calculate = LxLxLxx + LyLyLyy + 
>2LxLyLxy, and store it in outputImage.
>But then, when I compared the output from addFilter and outputImage ... 
>I see that there is an important difference
>between its values (mean difference about 68.00), when they should have 
>the same values...
>
>addFilter is an AddImageFilter object
>diffFilter is an DifferenceImageFilter object
>
>outputImage, auxImage, LxLxLxx and so .. are Image<double,2> objects
>
>
>I will appreciate your answer..
>
>Thanks!
>
>Sergio.
>
>_______________________________________________
>Insight-users mailing list
>Insight-users at itk.org
>http://www.itk.org/mailman/listinfo/insight-users
>_______________________________________________
>Insight-users mailing list
>Insight-users at itk.org
>http://www.itk.org/mailman/listinfo/insight-users
>
>  
>