[Insight-developers] multiple output filters
Antonin Perrot-Audet
antonin07130 at gmail.com
Thu Mar 31 12:12:48 EDT 2011
Hello,
I still have trouble understanding the function of
ProcessObject::MakeOutput
method.
I have a filter with multiple outputs, and I must admit that I have
trouble understanding the principle of the example provided in
itkEigenAnalysis2DImageFilter
MakeOutput seems to *return a RAW pointer instead of a SMART POINTER* ?
template< class TInputImage, class TEigenValueImage, class
TEigenVectorImage >
DataObject::Pointer
EigenAnalysis2DImageFilter< TInputImage, TEigenValueImage,
TEigenVectorImage >
::MakeOutput(unsigned int idx)
{
DataObject::Pointer output;
switch ( idx )
{
case 0:
output = ( EigenValueImageType::New() ).GetPointer();
break;
case 1:
output = ( EigenValueImageType::New() ).GetPointer();
break;
case 2:
output = ( EigenVectorImageType::New() ).GetPointer();
break;
}
return output.GetPointer();
}
then , in the function, to get a pointer to those images, there is
another function, with a dynamic cast... I must say that I don't really
understand the principle.
template< class TInputImage, class TEigenValueImage, class
TEigenVectorImage >
typename EigenAnalysis2DImageFilter< TInputImage, TEigenValueImage,
TEigenVectorImage >::EigenValueImageType *
EigenAnalysis2DImageFilter< TInputImage, TEigenValueImage,
TEigenVectorImage >
::GetMaxEigenValue(void)
{
return dynamic_cast< EigenValueImageType * >(
this->ProcessObject::GetOutput(0) );
}
Can anyone give me more insights ? I am trying to develop a filter with
multiple outputs, and find it more challenging than I though...
--
Antonin
More information about the Insight-developers
mailing list