[Insight-users] Use of GradientRecursiveGaussianImageFilter in own CompositeFilter

robert tamburo robert.tamburo at gmail.com
Wed Jun 22 06:21:48 EDT 2011


Glad to hear you got it working!

FYI, putting typename before *GradientType::OutputImageType *would remedy
the error.

On Wed, Jun 22, 2011 at 4:11 AM, Melanie Uks <meluks2010 at googlemail.com>wrote:

> Hi Robert,
>
> thanks for your help. By following your instructions I received some
> errors:
>
> warning C4346:
> 'itk::GradientRecursiveGaussianImageFilter<TImageType>::OutputImageType' :
> dependent name is not a type
> 1>        prefix with 'typename' to indicate a type
> 1>        ...\myEdgeDetectionImageFilter.h(80) : see reference to class
> template instantiation 'itk::MelEdgeDetectionImageFilter<TImageType>' being
> compiled
> 1>...\myEdgeDetectionImageFilter.h(61) : error C2923:
> 'itk::GradientToMagnitudeImageFilter' :
> 'itk::GradientRecursiveGaussianImageFilter<TImageType>::OutputImageType' is
> not a valid template type argument for parameter 'TInputImage'
>
> therefore I was defining
>
>    * typedef typename
> itk::GradientRecursiveGaussianImageFilter<TImageType>::OutputImageType
> VectorImageType;
> *
> and replacing
>
>
>   *  typedef
> GradientToMagnitudeImageFilter< GradientType::OutputImageType, TImageType >
> MagnitudeType;*
>
> with
>
>      *typedef GradientToMagnitudeImageFilter< VectorImageType, TImageType
> > MagnitudeType;
> *
> Now it is working!
>
> Thanks a lot!
>
> melanie
>
>
>
>
> 2011/6/21 robert tamburo <robert.tamburo at gmail.com>
>
>> Hi Melanie,
>>
>> GradientRecursiveGaussianImageFilter  expects an output image type. You
>> are giving it an output pixel type. You can 'cheat' and use the default
>> template parameter by
>>
>> Replacing
>>
>>   typedef GradientRecursiveGaussianImageFilter< TImageType,
>> VectorPixelType >    GradientType;
>>   typedef GradientToMagnitudeImageFilter< VectorPixelType, TImageType >
>> MagnitudeType;
>>
>> by
>>
>>   typedef GradientRecursiveGaussianImageFilter< TImageType >
>> GradientType;
>>   typedef GradientToMagnitudeImageFilter< GradientType::OutputImageType,
>> TImageType > MagnitudeType;
>> *
>> *
>> and consequently removing ComponentType and VectorPixelType.
>>
>> *
>> *
>> On Tue, Jun 21, 2011 at 10:51 AM, Melanie Uks <meluks2010 at googlemail.com>wrote:
>>
>>> Hi all,
>>>
>>> I try to write my own filter starting with the CompositeFilterExample
>>> (Software Guide). I could run the example filter and then I wanted to modify
>>> the filter by removing the GaussianFilter and adding a
>>> GradientRecursiveGaussianImageFilter and a GradientToMagnitudeImageFilter. I
>>> was not able to run the code again. I guess I made a mistake with the
>>> component vector type. The errors (more than 50 :-( ) do not help to solve
>>> the problem.
>>> Maybe one of you finds the problem. I highlight the code I changed:
>>>
>>>
>>> ------------------------------------------------------------------------------
>>>
>>> #ifndef __myEdgeDetectionImageFilter_h
>>> #define __myEdgeDetectionImageFilter_h
>>>
>>> #include "itkImageToImageFilter.h"
>>> *#include "itkGradientRecursiveGaussianImageFilter.h"
>>> #include "itkGradientToMagnitudeImageFilter.h" *
>>> #include "itkThresholdImageFilter.h"
>>> #include "itkRescaleIntensityImageFilter.h"
>>>
>>> *#include "itkCovariantVector.h"*
>>> #include "itkNumericTraits.h"
>>>
>>>
>>> namespace itk {
>>>
>>> template <class TImageType>
>>> class ITK_EXPORT MelEdgeDetectionImageFilter :
>>>     public ImageToImageFilter<TImageType, TImageType>
>>> {
>>> public:
>>>
>>>   typedef MelEdgeDetectionImageFilter               Self;
>>>   typedef ImageToImageFilter<TImageType,TImageType> Superclass;
>>>   typedef SmartPointer<Self>                        Pointer;
>>>   typedef SmartPointer<const Self>                  ConstPointer;
>>>
>>>   /** Method for creation through object factory */
>>>   itkNewMacro(Self);
>>>
>>>   /** Run-time type information */
>>>   itkTypeMacro(MelEdgeDetectionImageFilter, ImageToImageFilter);
>>>
>>>   /** Display */
>>>   void PrintSelf( std::ostream& os, Indent indent ) const;
>>>
>>>   /** ImageDimension constant    */
>>>   itkStaticConstMacro(ImageDimension, unsigned int,
>>>                       TImageType::ImageDimension);
>>>
>>>     /** Define pixel types. */
>>>   typedef typename TImageType::PixelType PixelType;
>>>  * typedef typename float   ComponentType;
>>>   typedef typename itk::CovariantVector< ComponentType,
>>>                         ImageDimension  >      VectorPixelType;*
>>>
>>>
>>>   itkGetMacro( Threshold, PixelType);
>>>   itkSetMacro( Threshold, PixelType);
>>>
>>> *  itkGetMacro( Sigma, PixelType);
>>>   itkSetMacro( Sigma, PixelType);*
>>>
>>> protected:
>>>
>>>   MelEdgeDetectionImageFilter();
>>>
>>> protected:
>>>
>>>   typedef ThresholdImageFilter< TImageType >     ThresholdType;
>>>  * typedef GradientRecursiveGaussianImageFilter< TImageType,
>>> VectorPixelType >    GradientType;
>>>   typedef GradientToMagnitudeImageFilter< VectorPixelType, TImageType >
>>> MagnitudeType;*
>>>   typedef RescaleIntensityImageFilter< TImageType, TImageType >
>>> RescalerType;
>>>
>>>   void GenerateData();
>>>
>>> private:
>>>
>>>   MelEdgeDetectionImageFilter(Self&);   // intentionally not implemented
>>>   void operator=(const Self&);          // intentionally not implemented
>>>
>>>
>>> *  typename GradientType::Pointer     m_GradientFilter;
>>>   typename MagnitudeType::Pointer    m_MagnitudeFilter;*
>>>   typename ThresholdType::Pointer    m_ThresholdFilter;
>>>   typename RescalerType::Pointer     m_RescaleFilter;
>>>
>>>   PixelType m_Threshold;
>>>
>>>  * PixelType m_Sigma;*
>>> };
>>>
>>> } /* namespace itk */
>>>
>>> #ifndef ITK_MANUAL_INSTANTIATION
>>> #include "myEdgeDetectionImageFilter.txx"
>>> #endif
>>>
>>> #endif
>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>>
>>> #ifndef __myEdgeDetectionImageFilter_txx
>>> #define __myEdgeDetectionImageFilter_txx
>>>
>>> #include "myEdgeDetectionImageFilter.h"
>>>
>>> namespace itk
>>> {
>>>
>>> template <class TImageType>
>>> MelEdgeDetectionImageFilter<TImageType>
>>> ::MelEdgeDetectionImageFilter()
>>> {
>>>   *m_GradientFilter = GradientType::New();
>>>   m_MagnitudeFilter = MagnitudeType::New();*
>>>   m_ThresholdFilter = ThresholdType::New();
>>>   m_RescaleFilter = RescalerType::New();
>>>
>>>  * m_MagnitudeFilter->SetInput(m_GradientFilter->GetOutput() );
>>>   m_ThresholdFilter->SetInput( m_MagnitudeFilter->GetOutput() );*
>>>   m_RescaleFilter->SetInput( m_ThresholdFilter->GetOutput() );
>>>
>>>   m_Threshold = 1;
>>>  * m_Sigma = 1;*
>>>
>>>   m_RescaleFilter->SetOutputMinimum(*NumericTraits<PixelType>::Zero*);
>>>   m_RescaleFilter->SetOutputMaximum(NumericTraits<PixelType>::max());
>>> }
>>>
>>> template <class TImageType>
>>> void
>>> MelEdgeDetectionImageFilter<TImageType>::
>>> GenerateData()
>>> {
>>>  * m_GradientFilter->SetInput( this->GetInput() );*
>>>
>>>   m_ThresholdFilter->ThresholdBelow( this->m_Threshold );
>>>
>>>   m_RescaleFilter->GraftOutput( this->GetOutput() );
>>>   m_RescaleFilter->Update();
>>>   this->GraftOutput( m_RescaleFilter->GetOutput() );
>>> }
>>>
>>> template <class TImageType>
>>> void
>>> MelEdgeDetectionImageFilter<TImageType>::
>>> PrintSelf( std::ostream& os, Indent indent ) const
>>> {
>>>   Superclass::PrintSelf(os,indent);
>>>
>>>   os
>>>     << indent << "Threshold:" << this->m_Threshold
>>>     << std::endl;
>>> *  os
>>>     << indent << "Sigma:" << this->m_Sigma
>>>     << std::endl;*
>>> }
>>>
>>> } /* end namespace itk */
>>>
>>> #endif
>>>
>>>
>>> Thanks a lot for your help!
>>>
>>>
>>> _____________________________________
>>> Powered by www.kitware.com
>>>
>>> Visit other Kitware open-source projects at
>>> http://www.kitware.com/opensource/opensource.html
>>>
>>> Kitware offers ITK Training Courses, for more information visit:
>>> http://www.kitware.com/products/protraining.html
>>>
>>> Please keep messages on-topic and check the ITK FAQ at:
>>> http://www.itk.org/Wiki/ITK_FAQ
>>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://www.itk.org/mailman/listinfo/insight-users
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20110622/6fcbea4a/attachment.htm>


More information about the Insight-users mailing list