Hello,<br><br>In my image processing pipeline, I have to generate the eigenvalues of the hessian. &nbsp;I&#39;m not a long-time ITK user, but I figured the combination of Itk::HessianRecursiveGaussianFilter and an itk::EigenAnalysis2DImageFilter were the best components to use. &nbsp;I&#39;ve put an nth-component adapter inbetween to select the right parts of the hessian matrix to feed to the three inputs of the eigen analysis filter.
<br><br>Everything compiles and runs well now, except for a few pesky warnings at runtime:<br><br>WARNING: In /usr/local/include/InsightToolkit/BasicFilters/itkEigenAnalysis2DImageFilter.txx, line 133<br>ImageToImageFilter (0x689390): EigenAnalysis2DImageFilter::GetMaxEigenVector(): dynamic_cast has failed. A reinterpret_cast is being attempted.
<br>Type name is: N3itk5ImageINS_6VectorIfLj2EEELj2EEE<br><br>Running this trough demangle with a _Z prepended showed that this was of type<br>itk::Image&lt;itk::Vector&lt;float, 2u&gt;, 2u&gt;<br><br>I feel this has something to do with the floatvectorimage that the eigenvalue filter is outputting perhaps, but I cannot find   the cause of this warning.
<br><br><br>My current processing pipeline is as follows:<br><br><br>  typedef float    FloatPixelType; <br><br>  typedef itk::Image&lt;FloatPixelType, Dimension&gt;    FloatImageType;<br><br>  typedef itk::HessianRecursiveGaussianImageFilter&lt;
<br>    FloatImageType&gt;    HessianFilter;<br><br>  typedef itk::Image&lt;<br>    itk::Vector&lt; FloatPixelType, 2 &gt;, <br>    Dimension &gt; FloatVectorImageType;<br><br>  typedef itk::EigenAnalysis2DImageFilter&lt;
<br>    FloatImageType, <br>    FloatImageType, <br>    FloatVectorImageType&gt; EigenAnalysis2DImageFilterType;<br><br>  // to make the output of the hessian filter readable by the<br>  // eigenanalysis filter, we need to adapt the image
<br>  typedef itk::NthElementPixelAccessor&lt; <br>    FloatPixelType,<br>    HessianFilter::OutputPixelType &gt;  OutputImageAdaptorType;<br><br>  typedef itk::AdaptImageFilter&lt; <br>    HessianFilter::OutputImageType,
<br>    FloatImageType, <br>    OutputImageAdaptorType &gt;  AdaptType;<br><br><br>  // the hessian filter is hooked up to the original input filter<br>  HessianFilter::Pointer hesFilter = HessianFilter::New();<br>  hesFilter-&gt;SetInput( readCast-&gt;GetOutput() );
<br><br>  EigenAnalysis2DImageFilterType::Pointer eigFilter = EigenAnalysis2DImageFilterType::New();<br><br>  // make the three components of the hessian to the eigFilter<br>   AdaptType::Pointer adapterE0 = AdaptType::New();
<br>   adapterE0-&gt;SetInput( hesFilter-&gt;GetOutput() );<br>   adapterE0-&gt;GetAccessor().SetElementNumber( 0 );<br><br>   AdaptType::Pointer adapterE1 = AdaptType::New();<br>   adapterE1-&gt;SetInput( hesFilter-&gt;GetOutput() );
<br>   adapterE1-&gt;GetAccessor().SetElementNumber( 1 );<br><br>   AdaptType::Pointer adapterE2 = AdaptType::New();<br>   adapterE2-&gt;SetInput( hesFilter-&gt;GetOutput() );<br>   adapterE2-&gt;GetAccessor().SetElementNumber( 2 );
<br><br>   // and hook up the adapted images to the eigen analysis filter.<br>  eigFilter-&gt;SetInput1(  adapterE0-&gt;GetOutput() );<br>  eigFilter-&gt;SetInput2(  adapterE1-&gt;GetOutput() );<br>  eigFilter-&gt;SetInput3(  adapterE2-&gt;GetOutput() );
<br><br><br>And then the eigFilter&#39;s getOutput(0) and getOutput(1) are used in further processing.<br><br>I hope someone can help to shed some light on these warnings.<br><br>Thanks,<br>Jorik<br><br><br>