[Insight-users] Problem with CenteredTransformInitializer

Luis Ibanez luis.ibanez at kitware.com
Tue Nov 10 12:07:13 EST 2009


Well,
There are good reasons for not deriving the Translation transform
from the itkMatrixOffsetTransformBase.

A translation only requires N additions, (in an N-dimensional space).

If we were using the itkMatrixOffsetTransformBase for performing
a translation, we will be doing N^2 multiplications and N^2 additions
to get the equivalent result.

That said,
It is true that we could declare the OffsetType in the TranslationTransform.

I just trying doing so, and the next API changes required are:

+* SetCenter() method
+* SetTranslation() method

It seem to be a bit of a stretch to add a SetCenter method,
(which doesn't makes sense for a Translation Transform)
just for the sake of using the CenteredTransformInitializer.

A better solution seem to be to add a class:

       TranslationTransformInitializer

Please find that new class attached.


    Let us know if you find any problems with it.



        Thanks


             Luis



-------------------------------------------------------------------------------------
On Tue, Nov 10, 2009 at 2:44 AM, Karthik Krishnan
<karthik.krishnan at kitware.com> wrote:
> Yes, it appears to use some typedefs such as OffsetType specific to
> itk::MatrixOffsetTransformBase. Sadly, itk::TranslationTransform etc aren't
> derived from itk::MatrixOffsetTransformBase.
>
> Try to add the line
>
>   typedef OutputVectorType OffsetType;
>
> to itk::TranslationTransform and see if it works for you. If so, please send
> us the patch.
>
> thanks
>
> On Mon, Nov 9, 2009 at 1:23 PM, Lodron, Gerald <Gerald.Lodron at joanneum.at>
> wrote:
>>
>> I am not sure if i understand this CenteredTransformInitializer class, can
>> anyone explain me why itk::CenteredTransformInitializer does work for
>> itk::AffineTransform but not for itk::TranslationTransform or
>> itk::ScaleTransform?
>>
>> Maybe it is a bug?
>>
>> Best regards!
>>
>>
>>
>>
>>
>>
>> -----Ursprüngliche Nachricht-----
>> Von: Luis Ibanez [mailto:luis.ibanez at kitware.com]
>> Gesendet: Montag, 09. November 2009 01:25
>> An: Lodron, Gerald
>> Cc: Insight users (insight-users at itk.org)
>> Betreff: Re: [Insight-users] Problem with CenteredTransformInitializer
>>
>> Hi Gerald,
>>
>> Please post to the mailing list the compilation error that
>> you get with this code.
>>
>> It will make a lot easier for us to advise you if we can
>> see the error message.
>>
>>
>> Also,
>> please note that the following construction is incorrect:
>>
>>   RegistrationType * m_Registration = RegistrationType::New();
>>
>> It should be:
>>
>>   RegistrationType::Pointer  m_Registration = RegistrationType::New();
>>
>>
>>
>> along the same lines, the statement:
>>
>> TransformType* m_Transformation =
>>     itk::AffineTransform<double, VImageDimension>::New();
>>
>> should be
>>
>> TransformType::Pointer m_Transformation =
>>     itk::AffineTransform<double, VImageDimension>::New();
>>
>>
>> If you don't assign a newly created ITK object to a SmartPointer,
>> the object will be destroyed by the next line in the code.
>>
>> If you are getting run-time errors, this misuse of the New() method
>> may explain what is happening with your program at run-time.
>> Introducing a proper use of SmartPointers may fix the problem.
>>
>> ---
>>
>> For more information about the use of SmartPointers in ITK, please
>> read the introductory chapters of the ITK Software Guide:
>>
>>          http://www.itk.org/ItkSoftwareGuide.pdf
>>
>> and the Tutorials:
>>
>>           http://www.itk.org/ITK/help/tutorials.html
>>
>> in particular:
>> http://www.itk.org/CourseWare/Training/GettingStarted-I.pdf
>>
>>
>>
>>
>>    Regards,
>>
>>
>>           Luis
>>
>>
>> -----------------------------------------------------------
>> On Fri, Nov 6, 2009 at 6:09 AM, Lodron, Gerald
>> <Gerald.Lodron at joanneum.at> wrote:
>> >
>> > Hello
>> >
>> > I try to make a rigid 3 d registration of two singed short images, i
>> > always get a compiler error when i want to use the
>> > CenteredTransformInitializer, here is my code
>> >
>> >
>> > template <class TPixelSource=signed short,class TPixelTarget=signed
>> > short, unsigned int VImageDimension=3>
>> >
>> >        typedef itk::Image< TPixelTarget, VImageDimension >
>> >       TargetImageType;
>> >        typedef itk::Image< TPixelSource, VImageDimension >
>> >       SourceImageType;
>> >        typedef float
>> >               InternalPixelType;
>> >        typedef itk::Image< InternalPixelType, VImageDimension >
>> >        InternalImageType;
>> >
>> >        typedef
>> > itk::MultiResolutionImageRegistrationMethod<InternalImageType,
>> > InternalImageType >              RegistrationType;
>> >        typedef typename RegistrationType::TransformType
>> >        TransformType;
>> >        typedef itk::CenteredTransformInitializer<TransformType,
>> > TargetImageType, SourceImageType >             InitializerType;
>> >
>> >        RegistrationType*       m_Registration = RegistrationType::New();
>> >
>> >        TransformType* m_Transformation = itk::AffineTransform<double,
>> > VImageDimension>::New();
>> >
>> >        m_Registration->SetTransform(m_Transformation);
>> >
>> >        InitializerType* m_InitTransform = InitializerType::New();
>> >        m_InitTransform->SetTransform(   m_Transformation ); //exception
>> >
>> >
>> > Would be great if anyone could give me a hint,
>> >
>> > Best regards
>> > _____________________________________
>> > 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
>
>
> _________________________________
> Karthik Krishnan
> R&D Engineer,
> Kitware Inc.
> Ph: +1 5188814919, +91 9538477060
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: itkTranslationTransformInitializer.txx
Type: application/octet-stream
Size: 6046 bytes
Desc: not available
URL: <http://www.itk.org/pipermail/insight-users/attachments/20091110/77b98820/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: itkTranslationTransformInitializer.h
Type: text/x-chdr
Size: 6218 bytes
Desc: not available
URL: <http://www.itk.org/pipermail/insight-users/attachments/20091110/77b98820/attachment.h>


More information about the Insight-users mailing list