[ITK] [ITK-users] ImageToImageMetric in Python

Matt McCormick matt.mccormick at kitware.com
Mon Apr 14 16:31:46 EDT 2014


Hi Sven,

Does calling Initialize() [1] help?

Thanks,
Matt

[1] http://www.itk.org/Doxygen/html/classitk_1_1ImageToImageMetric.html#a2bd5955a3bedf31e701aed3ee1d4e473


On Mon, Apr 14, 2014 at 12:25 PM, Prevrhal, Sven
<Sven.Prevrhal at philips.com> wrote:
> Thanks Matt and Jagjeet,
> It's better but still not working correctly. Here's what I have now:
>
>
>
>        metricType = itk.NormalizedCorrelationImageToImageMetric.IF3IF3
>         transformType = itk.TranslationTransform.D3
>         interpolatorType = itk.LinearInterpolateImageFunction.IF3D
>         fixedImage = files['T2']['itkImage'] # I checked, data are fine
>
>         metric = metricType.New()
>         tr = transformType.New()
>         ip = interpolatorType.New()
>
>         metric.SetTransform(tr)
>         tr.SetIdentity()
>         metric.SetInterpolator(ip)
>         metric.SetFixedImage(fixedImage)
>
>         # metric.GetFixedImageRegion() is [0,0,0], [0,0,0] without a line like:
>         #metric.SetFixedImageRegion( fixedImage.GetBufferedRegion() )
>         metric.SetFixedImageRegion(  itk.ImageRegion._3([0,0,0],[10,10,10]) )
>
>         zeroDisplacement = itk.OptimizerParameters.D(3)
>         for i,v in enumerate([0,0,0]): zeroDisplacement.SetElement(i,v)
>
>         movingImage = files[typ]['itkImage']   # data are fine and different from fixedImage
>         metric.SetMovingImage(movingImage)
>         v = metric.GetValue(zeroDisplacement)
>         print 'NCC T2 - %s: %f' % (typ, v)
>
>
>
> The code crashes without error message at the GetValue call. If I drop the SetFixedImageRegion, it does run but produces v=0.0 no matter what. Any more insight would be greatly appreciated.
>
> Kind regards,
> Sven
>
> -----Original Message-----
> From: Matt McCormick [mailto:matt.mccormick at kitware.com]
> Sent: Dienstag, 8. April 2014 20:10
> To: Prevrhal, Sven
> Cc: insight-users at itk.org
> Subject: Re: [ITK] [ITK-users] ImageToImageMetric in Python
>
> Hi Sven,
>
> To find the type of MetricType::TransformParametersType, look at the Doxygen documentation for NormalizedCorrelationImageToImageMetric [1].
>  Following the typedef trail [2], the type is OptimizerParameters [3], which can be created with
>
>   displacement = itk.OptimizerParameters.F( Dimension )
>
> Hope this helps,
> Matt
>
> [1] http://www.itk.org/Doxygen/html/classitk_1_1NormalizedCorrelationImageToImageMetric.html
>
> [2] http://www.itk.org/Doxygen/html/classitk_1_1TransformBaseTemplate.html
>
> [3] http://www.itk.org/Doxygen/html/classitk_1_1OptimizerParameters.html
>
> On Tue, Apr 8, 2014 at 1:34 PM, Prevrhal, Sven <Sven.Prevrhal at philips.com> wrote:
>> I am looking at the itk Software Guide to figure out how to implement
>> this in Python. I have:
>>
>>
>>
>>         nccMetric =
>> itk.NormalizedCorrelationImageToImageMetric.IF3IF3.New()
>>
>>         nccMetric.SetTransform(itk.IdentityTransform.D3.New())
>>
>>
>> nccMetric.SetInterpolator(itk.NearestNeighborInterpolateImageFunction.
>> IF3D.New())
>>
>>         nccMetric.SetFixedImage(fixedImage)
>>
>>         nccMetric.SetMovingImage(movingImage)
>>
>>
>>
>> which I believe works fine. I am getting stumped by the translation of
>> this to Python:
>>
>>
>>
>>   # ITK software guide page 390
>>
>>   # C++ code: MetricType::TransformParametersType displacement(
>> Dimension );
>>
>>         displacement = nccMetric.??
>>
>>
>>
>> After which
>>
>>
>>
>> value = nccMetric.GetValue( displacement )
>>
>>
>>
>> should work fine. Anybody knows this?
>>
>>
>>
>> Regards,
>>
>> Sven
>>
>>
>>
>> Sven Prevrhal
>>
>> Philips Research
>>
>>
>>
>>
>> ________________________________
>> The information contained in this message may be confidential and
>> legally protected under applicable law. The message is intended solely
>> for the addressee(s). If you are not the intended recipient, you are
>> hereby notified that any use, forwarding, dissemination, or
>> reproduction of this message is strictly prohibited and may be
>> unlawful. If you are not the intended recipient, please contact the
>> sender by return e-mail and destroy all copies of the original message.
>>
>> _____________________________________
>> 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.php
>>
>> 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
>>
>> _______________________________________________
>> Community mailing list
>> Community at itk.org
>> http://public.kitware.com/cgi-bin/mailman/listinfo/community
>>
>
> ________________________________
> The information contained in this message may be confidential and legally protected under applicable law. The message is intended solely for the addressee(s). If you are not the intended recipient, you are hereby notified that any use, forwarding, dissemination, or reproduction of this message is strictly prohibited and may be unlawful. If you are not the intended recipient, please contact the sender by return e-mail and destroy all copies of the original message.
>
_____________________________________
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.php

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 Community mailing list