[Insight-users] Visual studio error ... cannot convert parameter 1 from 'itk::SmartPointer<TObjectType>' to 'itk::PDEDeformableRegistrationFilter

Luis Ibanez luis.ibanez at kitware.com
Tue Feb 9 13:40:14 EST 2010


Hi Neil,

Thanks for posting the additional code.

Three observations:


A) You seem to be mixing 2D images with 3D images.


B)  Does the class  RegistrationBasedInterpolatorFilter
      derives from:

typedef typename itk::PDEDeformableRegistrationFilter <
SliceInputImageType, SliceInputImageType, DemonsDeformationFieldType>
BaseRegistrationFilterType;

       ??

 It should, if you want to do:

         typename BaseRegistrationFilterType::Pointer filter_2to1;

and then

       multires_2to1->SetRegistrationFilter( filter_2to1 );



C)  Does the class

             RegistrationBasedInterpolatorFilter

       has an itkNewMacro() in its header file ?




     Luis




-----------------------------------------------------------------------------------
On Sun, Feb 7, 2010 at 11:11 PM,  <Neil.Burdett at csiro.au> wrote:
> Hi Luis,
>
>
> A)  SetRegistrationFilter() is not declared in itkRegistrationBasedInterpolatorFilter.h.
>        RegistrationPointer        m_RegistrationFilter is declared in itkMultiResolutionPDEDeformableRegistration2.h which uses the macro:
>         itkSetObjectMacro( RegistrationFilter, RegistrationType ); in the same file this declares the SetRegistrationFilter method (copied directly from eclipse) to be;
>
> virtual void SetRegistrationFilter(RegistrationType* _arg)
>  {
>    { if (this->GetDebug() && ::itk::Object::GetGlobalWarningDisplay())
>    { ::itk::OStringStream itkmsg;
>      itkmsg << "Debug: In " "/home/bur448/Dev/milx-view/lib/include/itk-aux/demons/itkMultiResolutionPDEDeformableRegistration2.h" ", line " << 162 << "\n"
>             << this->GetNameOfClass() << " (" << this << "): " "setting " << "RegistrationFilter" " to " << _arg
>             << "\n\n";
>      ::itk::OutputWindowDisplayDebugText(itkmsg.str().c_str());}
> };
>    if (this->m_RegistrationFilter!= _arg)
>      {
>      this->m_RegistrationFilter= _arg;
>      this->Modified();
>      }
>  }
>
> B)      The default constructor fot itkRegistrationBasedInterpolatorFilter is;
>
> /**
>  * Default Constructor
>  */
> template <class TInputImage, class TOutputImage>
> RegistrationBasedInterpolatorFilter<TInputImage, TOutputImage>
> ::RegistrationBasedInterpolatorFilter(){
>
>  direction = 0;
>  m_InterpolationType = LINEAR_LINEAR;
>  m_Interslice = 0;
>  m_Verbose = true;
>  m_Finalise = true;
>
> }//end of constructor
>
> Where
>        typedef itk::Image<float, 3> InputImageType;
>        typedef itk::Image<float, 3> OutputImageType;
>
>
> C)        typedef typename itk::PDEDeformableRegistrationFilter < SliceInputImageType, SliceInputImageType, DemonsDeformationFieldType> BaseRegistrationFilterType;
>
> Where
>    typedef typename TInputImage::PixelType InputPixelType;
>    typedef itk::Image<InputPixelType, 2> SliceInputImageType;
>
>    typedef itk::Vector< float, 2 >    VectorPixelType;
>    typedef itk::Image<  VectorPixelType, 2 > DemonsDeformationFieldType;
>
>
> D)      windows is 32 bits
>
> E)      Works fine under both 32bit and 64 bit Ubuntu
>
> Thanks for looking into this
>
> Neil
>
> -----Original Message-----
> From: Luis Ibanez [mailto:luis.ibanez at kitware.com]
> Sent: Saturday, 6 February 2010 4:45 AM
> To: Burdett, Neil (ICT Centre, Herston - RBWH)
> Cc: mike.jackson at bluequartz.net; insight-users at itk.org
> Subject: Re: [Insight-users] Visual studio error ... cannot convert parameter 1 from 'itk::SmartPointer<TObjectType>' to 'itk::PDEDeformableRegistrationFilter
>
> Hi Neil,
>
> We need to know:
>
> A) The *exact* declaration of the method
>
>             SetRegistrationFilter()
>
>     from the file:
>
>        itkRegistrationBasedInterpolatorFilter.h
>
>
> and
>
> B) The Template parameters that you used
>     in order to instantiate the
>
>        tkRegistrationBasedInterpolatorFilter
>
>
> and
>
> C)  The exact template parameters that you
>      used for instantiating:
>
>            BaseRegistrationFilterType
>
>
> D)  Is your Windows build, a 64 bits one ?
>
> E)  Is your Ubuntu build, a 64bits one ?
>
>
>
> ----
>
>
> FYI: Smart Pointers will not do polymorphism.
>
>
>
>
> ---------------------------------------------------------------------
> On Tue, Feb 2, 2010 at 8:11 PM,  <Neil.Burdett at csiro.au> wrote:
>> Visual studio 2008 but the same error also occurs on visual studio 2005, but is okay using gcc under linux
>>
>> Neil
>>
>> -----Original Message-----
>> From: Mike Jackson [mailto:mike.jackson at bluequartz.net]
>> Sent: Tuesday, 2 February 2010 11:20 PM
>> To: Burdett, Neil (ICT Centre, Herston - RBWH)
>> Cc: insight-users at itk.org
>> Subject: Re: [Insight-users] Visual studio error ... cannot convert parameter 1 from 'itk::SmartPointer<TObjectType>' to 'itk::PDEDeformableRegistrationFilter
>>
>> It seems that you are passing in a smart pointer when the argument
>> wants an actual pointer. You may also need to dynamic_cast<> to get it
>> to work with Visual Studio. Also, what version of Visual Studio is
>> this?
>> _________________________________________________________
>> Mike Jackson                  mike.jackson at bluequartz.net
>>
>> On Mon, Feb 1, 2010 at 10:41 PM,  <Neil.Burdett at csiro.au> wrote:
>>> Hi,
>>>
>>>      The following code compiles on Ubuntu but  on Visual Studio the
>>> highlighted line fails with;
>>>
>>>
>>>
>>> 2>c:\milx-view\lib\include\itk-ext\modules\basicfilters\itkRegistrationBasedInterpolatorFilter.txx(336)
>>> : error C2664:
>>> 'itk::MultiResolutionPDEDeformableRegistration2<TFixedImage,TMovingImage,TDeformationField,TRealType>::SetRegistrationFilter'
>>> : cannot convert parameter 1 from 'itk::SmartPointer<TObjectType>' to
>>> 'itk::PDEDeformableRegistrationFilter<TFixedImage,TMovingImage,TDeformationField>
>>> *'
>>>
>>>
>>>
>>>
>>>
>>>         typename BaseRegistrationFilterType::Pointer filter_2to1;
>>>
>>>     typename ActualRegistrationFilterType::Pointer actualfilter_2to1;
>>>
>>>
>>>
>>>         ....
>>>
>>>
>>>
>>>
>>>
>>>     // Perform registration of slice N-1 onto slice N
>>>
>>>
>>>
>>>     actualfilter_2to1 = ActualRegistrationFilterType::New();
>>>
>>>     actualfilter_2to1->SetMaximumUpdateStepLength( 2.0 );
>>>
>>>     actualfilter_2to1->SetUseGradientType( static_cast<GradientType>(0) );
>>>
>>>     filter_2to1 = actualfilter_2to1;
>>>
>>>     filter_2to1->SmoothDeformationFieldOn();
>>>
>>>     filter_2to1->SetStandardDeviations( 3.0 );
>>>
>>>     filter_2to1->SmoothUpdateFieldOff();
>>>
>>>
>>>
>>>     multires_2to1 = MultiResRegistrationFilterType::New();
>>>
>>>     multires_2to1->SetRegistrationFilter( filter_2to1 );                  //
>>> This line fails with the above error...
>>>
>>>     multires_2to1->SetNumberOfLevels( numLevels );
>>>
>>>     multires_2to1->SetNumberOfIterations( &numIterations[0] );
>>>
>>>     // We register Slice N onto slice N, so we can robustly work out
>>> correpondances between these 2 slices,
>>>
>>>     // whe we start from slice N-1
>>>
>>>     multires_2to1->SetFixedImage( filter1->GetOutput() );
>>>
>>>     multires_2to1->SetMovingImage( filter2->GetOutput() );
>>>
>>>
>>>
>>>
>>>
>>> The code looks okay to me and works fine under Ubuntu.
>>>
>>>
>>>
>>> Any help will be much appreciated...
>>>
>>>
>>>
>>>
>>>
>>> Thanks
>>>
>>>
>>>
>>> Neil
>>>
>>> _____________________________________
>>> 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
>>>
>>>
>> _____________________________________
>> 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
>>
>


More information about the Insight-users mailing list