[Insight-users] VTK - ITK - VTK Pipeline problems
Karthik Krishnan
Karthik.Krishnan at kitware.com
Mon Oct 31 13:53:48 EST 2005
Jesse C Cronce wrote:
>If you do a DisconnectPipeline, that will also disconnect memory
>management of the image from the ITK libraries as well, right ?
>
Not if you use smart pointers. (Memory management should be taken care
of) For instance, this is ok if you had
filter->Update();
ImageType::Pointer x = filter->GetOutput();
x->DisconnectPipeline();
this is not ok.
filter->Update();
ImageType* x = filter->GetOutput();
x->DisconnectPipeline();
The reference count is needed to prevent x from getting destroyed.
>(meaning
>that the memory will have to be deleted/freed when no longer in use)
>Also, if you call a GetOutput() on the filter that has been disconnected
>from the pipeline, it looks like the result should be a NULL pointer
>(from the code itkDataObject.cxx -
>
> m_Source->SetNthOutput(m_SourceOutputIndex, 0);
>
>) is this also correct ?
>
>
>
yes
>Thanks!
>JCC
>
>On Mon, 2005-10-31 at 10:53 -0500, Karthik Krishnan wrote:
>
>
>>Did you try to disconnect the objects from teh pipeline ?
>>
>>In ITK:
>>
>>filter->Update();
>>itkImage = filter->GetOutput();
>>itkImage->DisconnectPipeline();
>>
>>In VTK:
>>
>>use UnRegisterAllOutputs() to disconnect the pipeline
>>or use ShallowCopy
>>
>>
>>
>>Istvan Matis wrote:
>>
>>
>>
>>>Hello ITK users,
>>>
>>>I am using a complex pipeline to convert vtkImageData to itk Image,
>>>apply some filters on it (each time a different filter) like
>>>smoohting, segmentation, then convert back to VTK in order to
>>>visualize it.
>>>My problem is that I receive various errors, "unhandled exceptions"
>>>sometimes in the itk sources sometimes in system dlls, usually when I
>>>want to apply the itk filters for the 2nd time.
>>>
>>>I am using the same pipeline several times on several (different)
>>>images read into VTK.
>>>As I understood, if one element (object) in the VTK->ITK->VTK pipeline
>>>is destroyed the whole pipeline will crash. In order to prevent this I
>>>use vtkImageCast to "Clone" the final vtk output in order to separate
>>>the output vtkImageData from the whole pipeline.
>>>
>>>Here is the sketch of the pipeline:
>>>
>>>vtkImageData Input ->
>>>-> vtkImageCast ->
>>>-> vtkImageData Input 2 ->
>>>-> itk::VTKImageToImageFilter ->
>>>-> itk::Image ->
>>>-> " different itk filter each time: ex:
>>>itk::ConnectedThresholdImageFilter or itk::CurvatureFlowImageFilter " ->
>>>-> itk::Image Output ->
>>>-> itk::ImageToVTKImageFilter ->
>>>-> vtkImageData Output ->
>>>-> vtkImageCast ->
>>>-> vtkImageData Output 2
>>>
>>>I use ->Update() at every step!
>>>
>>>By the way I am using itk 2-0-0, vtk 4-4, VC++6 with SP6, WinXP Pro.
>>>
>>>Is a solution to recreate (Delete() and New()) all the itk and vtk
>>>filters in the pipeline each time they need to be used? I observed
>>>that if I destroy even one of these filters the whole thing crashes,
>>>and not immediately, but sooner or later, somewhere when vtk needs the
>>>data.
>>>
>>>My question is:
>>>How can I separate the resulting vtkImage from the whole vtk-itk-vtk
>>>pipeline once it was processed?
>>>Or more generally:
>>>How can I reuse the whole pipeline on different images with different
>>>sizes and attributes?
>>>
>>>Any hints will be gratefully apreciated.
>>>
>>>Sincerelly,
>>>Istvan
>>>
>>>
>>>
>>>------------------------------------------------------------------------
>>>
>>>_______________________________________________
>>>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
>>
>>
>
>
>
>
More information about the Insight-users
mailing list