[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