[Insight-users] runtime warnings when hooking up hessian filter toeigenanalysis2d filter.

Luis Ibanez luis.ibanez at kitware.com
Sun Apr 15 10:43:47 EDT 2007


Hi Andreas,


Please look at the applications page:

    http://www.itk.org/HTML/Curve2DExtraction.htm


You will find the source code of this application in


           InsightApplications/
                   Curves2DExtractor


The 2D Hessian of the input image is computed by
using a cascade of recursive Gaussian filters.




   Regards,


      Luis


-------------------
Andreas Keil wrote:
> Dear Jorik (and others),
> 
> did you already solve your problem? I would also like to construct a 2D
> vessel filter by combining HessianRecursiveGaussian and EigenAnalysis2D...
> 
> Any help would be really appreciated since I cannot find a better way to
> to curvature-based image analysis in 2D.
> 
> Thank you,
> Andreas.
> 
> 
> -----Original Message-----
> 
> Hi Max,
> 
> ImageAdaptors are somehow incompatible with dynamic_cast test.
> 
> In general, using dynamic_casts is a violation of the basic principles of
>  Generic Programming. However, we have been forced to use it in several
> places, for example, when managing itkEventObject.
> 
> In the case that you are confronting, the use of ImageAdaptors happens
> to be incompatible with the dynamic_casts that the ITK code is attempting.
> 
> In order to get rid of the warnings, you may have to use a real ITK Filter
> instead of an ImageAdaptor. In that way, the input image to the
> EigenAnalysis2DImageFilter will actually correspond to the type that
> your are setting in its template parameters.
> 
> Another option is for you to modify the code of the
> EigenAnalysis2DImageFilte
> to accept a Hessian image, instead of expecting the three components of
> the
> Hessian to be passed as independent images. For an example on how to do
> this, you may want to look at the code of the
> 
> Hessian3DToVesselnessMeasureImageFilter
> 
> http://public.kitware.com/Insight/Doxygen/html/classitk_1_1Hessian3DToVess
> elnessMeasureImageFilter.html
> 
>       Regards,
>            Luis
> 
> 
> 
> -----Original Message-----
> Sent: Thursday, March 15, 2007 11:52
> To: insight-users at itk.org
> Subject: [Insight-users] runtime warnings when hooking up hessian filter
> toeigenanalysis2d filter.
> 
> Hello,
> 
> In my image processing pipeline, I have to generate the eigenvalues of the
> hessian.  I'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.  I'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. 
> 
> Everything compiles and runs well now, except for a few pesky warnings at
> runtime:
> 
> WARNING: In
> /usr/local/include/InsightToolkit/BasicFilters/itkEigenAnalysis2DImageFilt
> er.txx, line 133
> ImageToImageFilter (0x689390):
> EigenAnalysis2DImageFilter::GetMaxEigenVector(): dynamic_cast has failed.
> A reinterpret_cast is being attempted. 
> Type name is: N3itk5ImageINS_6VectorIfLj2EEELj2EEE
> 
> Running this trough demangle with a _Z prepended showed that this was of
> type
> itk::Image<itk::Vector<float, 2u>, 2u>
> 
> 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. 
> 
> 
> My current processing pipeline is as follows:
> 
> 
> typedef float FloatPixelType; 
> 
> typedef itk::Image<FloatPixelType, Dimension> FloatImageType;
> 
> typedef itk::HessianRecursiveGaussianImageFilter< 
> FloatImageType> HessianFilter;
> 
> typedef itk::Image<
> itk::Vector< FloatPixelType, 2 >, 
> Dimension > FloatVectorImageType;
> 
> typedef itk::EigenAnalysis2DImageFilter< 
> FloatImageType, 
> FloatImageType, 
> FloatVectorImageType> EigenAnalysis2DImageFilterType;
> 
> // to make the output of the hessian filter readable by the
> // eigenanalysis filter, we need to adapt the image 
> typedef itk::NthElementPixelAccessor< 
> FloatPixelType,
> HessianFilter::OutputPixelType > OutputImageAdaptorType;
> 
> typedef itk::AdaptImageFilter< 
> HessianFilter::OutputImageType, 
> FloatImageType, 
> OutputImageAdaptorType > AdaptType;
> 
> 
> // the hessian filter is hooked up to the original input filter
> HessianFilter::Pointer hesFilter = HessianFilter::New();
> hesFilter->SetInput( readCast->GetOutput() ); 
> 
> EigenAnalysis2DImageFilterType::Pointer eigFilter =
> EigenAnalysis2DImageFilterType::New();
> 
> // make the three components of the hessian to the eigFilter
> AdaptType::Pointer adapterE0 = AdaptType::New(); 
> adapterE0->SetInput( hesFilter->GetOutput() );
> adapterE0->GetAccessor().SetElementNumber( 0 );
> 
> AdaptType::Pointer adapterE1 = AdaptType::New();
> adapterE1->SetInput( hesFilter->GetOutput() ); 
> adapterE1->GetAccessor().SetElementNumber( 1 );
> 
> AdaptType::Pointer adapterE2 = AdaptType::New();
> adapterE2->SetInput( hesFilter->GetOutput() );
> adapterE2->GetAccessor().SetElementNumber( 2 ); 
> 
> // and hook up the adapted images to the eigen analysis filter.
> eigFilter->SetInput1( adapterE0->GetOutput() );
> eigFilter->SetInput2( adapterE1->GetOutput() );
> eigFilter->SetInput3( adapterE2->GetOutput() ); 
> 
> 
> And then the eigFilter's getOutput(0) and getOutput(1) are used in further
> processing.
> 
> I hope someone can help to shed some light on these warnings.
> 
> Thanks,
> Jorik
> 
> _______________________________________________
> 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