Dear All,<br><br>I have coded the following template functions to read a MINC1 image file and convert it ITK.  The program compiles and runs <br>without any problem. However I am not sure if this would be the proper manner to do this. I am also not so sure if I have created any memory leaks.<br>
<br>Could anybody please tell me if this okay?<br><br>Thank you,<br>RIcardo<br><br><br><br><br><br>/// ************************************************************************************************************<br>
/// Main program<br>
/// ************************************************************************************************************<br><br>/// Pixel type definition<br>typedef signed short                              PixelType;<br><br>/// Define type of the input and output images<br>
typedef itk::Image&lt; PixelType, 3 &gt;         ImageType;<br><br><br>
int main( int argc, char **argv )<br>{<br>    string inputFileName = &quot;ImageDataMINC1.mnc&quot;;<br><br>    ImageType::Pointer itkImage = ReadMinc1Image&lt; ImageType &gt;( inputFileName );<br><br>    return 0;<br>}<br>
<br>/// ************************************************************************************************************<br>/// Convert ITK to VTK<br>/// ************************************************************************************************************<br>
template&lt; typename TImageType &gt;<br>vtkImageData *ConvertItkToVtk( typename TImageType::Pointer input )<br>{<br>    typedef itk::ImageToVTKImageFilter&lt; TImageType &gt; ImageToVTKImageFilterType;<br>    typename ImageToVTKImageFilterType::Pointer connector = ImageToVTKImageFilterType::New();<br>
    connector-&gt;SetInput( input );<br>    connector-&gt;Register();<br><br>    return connector-&gt;GetOutput();<br>}<br><br>/// ************************************************************************************************************<br>
/// Convert VTK to ITK image format<br>/// ************************************************************************************************************<br>template&lt; typename TImageType &gt;<br>typename TImageType::Pointer ConvertVtkToItk( vtkImageData *img )<br>
{<br>    typedef itk::VTKImageToImageFilter&lt; TImageType &gt; VTKImageToImageFilterType;<br>    typename VTKImageToImageFilterType::Pointer connector = VTKImageToImageFilterType::New();<br>    connector-&gt;SetInput( img );<br>
    connector-&gt;GetImporter()-&gt;Update();<br><br>    return connector-&gt;GetImporter()-&gt;GetOutput();<br>}<br><br>/// ************************************************************************************************************<br>
/// Read a MINC1 image file<br>/// ************************************************************************************************************<br>template&lt; typename TImageType &gt;<br>typename TImageType::Pointer ReadMinc1Image( const std::string fileName )<br>
{<br>    vtkMINCImageReader *reader = vtkMINCImageReader::New();<br>    reader-&gt;SetFileName( fileName.c_str() );<br><br>    try<br>    {<br>        reader-&gt;Update();<br>    }<br>    catch ( itk::ExceptionObject &amp; err )<br>
    {<br>        std::cout &lt;&lt; &quot;Caught an exception: &quot; &lt;&lt; std::endl;<br>        std::cout &lt;&lt; err &lt;&lt; &quot; &quot; &lt;&lt; __FILE__ &lt;&lt; &quot; &quot; &lt;&lt; __LINE__ &lt;&lt; std::endl;<br>
        throw err;<br>    }<br>    catch (... )<br>    {<br>        std::cout &lt;&lt; &quot;Error while reading in image&quot; &lt;&lt; fileName &lt;&lt; std::endl;<br>        throw;<br>    }<br><br>    return ConvertVtkToItk&lt; TImageType &gt;( reader-&gt;GetOutput() );<br>
}<br><br>