[Insight-users] How to re-use an itk ImageFileReader?

Hua-Mei Chen huameichen0523 at gmail.com
Wed Oct 1 12:02:38 EDT 2008


Luis,
   Thank you so much. I knew I should not call Delete( ) in ITK, but I could 
not think of any other way to do it and did not get any help sooner, so I 
gave it a try. :)
   May I know where is the DisconnectPipeline( ) method introduced in the 
software guide? It is exactly what I need.
   By the way, why is it o.k. to call Delete( ) in many VTK classes like 
vtkRenderer, vtkActor, ... Are the design principles different?

Regards,

Hua-mei



----- Original Message ----- 
From: "Luis Ibanez" <luis.ibanez at kitware.com>
To: "Hua-Mei Chen" <huameichen0523 at gmail.com>
Cc: "ITK Users" <insight-users at itk.org>
Sent: Wednesday, October 01, 2008 8:46 AM
Subject: Re: [Insight-users] How to re-use an itk ImageFileReader?


>
> Hi Hua-Mei,
>
>   You should *never* call "Delete()" in an ITK class   :-)
>
> SmartPointers take care of the destruction of objects in ITK.
>
> If what you want to do is to reuse the ImageFileReader, you simply
> need to disconnect the first output image before you read a new one.
>
> For example
>
>
>     reader->SetFileName("image1.mhd");
>     reader->Update();
>     ImageType::ConstPointer image1 = reader->GetOutput();
>     image1->DisconnectPipeline();
>
>     reader->SetFileName("image2.mhd");
>     reader->Update();
>     ImageType::ConstPointer image2 = reader->GetOutput();
>     image2->DisconnectPipeline();
>
>
> Then you can use "image1" and "image2".
>
>
>   Regards,
>
>
>       Luis
>
> ------------------
> Hua-Mei Chen wrote:
>> Hi,
>>
>>  I used the following code to read image data. However, my program had an 
>> error message "Access violation reading location 0xfeeefefe." the second 
>> time m_ImageFileReader->Delete( ) was invoked. Can anyone tell what goes 
>> wrong in my code? Thank you.
>>
>> while (continue){
>>
>> if (m_ImageFileReader != (void*) 0) m_ImageFileReader->Delete( );
>> m_ImageFileReader = ImageFileReaderType::New();
>> m_ImageFileReader->SetFileName( m_InputFileName);
>> m_InputImage = m_imageFileReader->GetOutput();
>> m_ImageFileReader->Update();
>> ...
>> ...
>> }
>>
>> Chen
>>
>>
>> ----- Original Message ----- From: "Hua-Mei Chen" 
>> <huameichen0523 at gmail.com>
>> To: "ITK Users" <insight-users at itk.org>
>> Sent: Tuesday, September 30, 2008 10:14 AM
>> Subject: How to re-use an itk ImageFileReader?
>>
>>
>>> Hi,
>>>
>>>   I am trying to re-use an itk ImageFileReader to read the same type of 
>>> images. However, it crashes the second time the Update( ) method is 
>>> involked. Do I need to New an itkImageFileReader each time I need one? 
>>> Is it possible to manually delete an existing itkImageFileReader before 
>>> I New another one? Please help. Thank you.
>>>
>>> Chen
>>
>>
>> _______________________________________________
>> 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