[Insight-users] Fwd: Can not reproduce metric value

Bill Lorensen bill.lorensen at gmail.com
Sat Oct 3 09:06:59 EDT 2009


What value did you get?

On Sat, Oct 3, 2009 at 4:55 AM, Quy Pham Sy <phamsyquybk at gmail.com> wrote:
> Hi,
> I tried with radian,
> --------------------------------------------
> .....
> transform->SetScale(1.08438);
> transform->SetAngle(0.154531);
> TransformType::TranslationType translation;
> translation[0] = -26.6822;
> translation[1] = -93.6822;
> .....
> --------------------------------------------
> I got new value but still not  '4551.86' (the value from example).
> I read from "ITK software guide ver 2.4" textbook, page 366. they explained
> (as i understand) that the output transform params from registration process
> are actually applied to FixeImage, in order to get the minimum metric
> value.
> It is still not clear that, the transform params pass directly to metric
> object are interpreted same way as in registration process (i mean they also
> applied to Fixed image instead of Moving Image). I guess the reason may come
> from this unobvious understanding.  Do you have any idea about this?
>
> Thanks,
> Quyps
>
> 2009/10/3 Bill Lorensen <bill.lorensen at gmail.com>
>>
>>  /** Set/Get the angle of rotation in radians */
>>                                                        ----------
>>  void SetAngle(TScalarType angle);
>>  itkGetConstReferenceMacro( Angle, TScalarType );
>>
>> Try:
>> transform->SetAngle(0.154531);
>>
>> On Fri, Oct 2, 2009 at 4:09 PM, Quy Pham Sy <phamsyquybk at gmail.com> wrote:
>> > hi,
>> > I run ImageRegistration7 example in ITK.
>> > and the output like following
>> > -------------------------------------
>> >  Scale         = 1.08438
>> >  Angle (radians) 0.154531
>> >  Angle (degrees) 8.85397
>> >  Center X      = 170.327
>> >  Center Y      = 148.556
>> >  Translation X = -26.6822
>> >  Translation Y = -93.4428
>> >  Iterations    = 500
>> >  Metric value  = 4551.86
>> > ---------------------------------------
>> > I made a program in which i use a same metric, transformation,
>> > interpolate
>> > object type as above example, with same two input image file. I set
>> > above
>> > value to calculate metric value directly from metric object, but the
>> > result
>> > is not same as what the example made..
>> > here is the code, did i miss something?
>> > I'm running out of time! really appreciate any help!
>> >
>> > -------------------------------------------------------------------------
>> > int main( int argc, char * argv[] )
>> > {
>> > const     unsigned int   Dimension = 2;
>> > typedef   unsigned char  PixelType;
>> > typedef itk::Image< PixelType, Dimension >   ImageType;
>> > typedef itk::ImageFileReader< ImageType >  ReaderType;
>> > ReaderType::Pointer fixedReader  = ReaderType::New();
>> > ReaderType::Pointer movingReader = ReaderType::New();
>> > fixedReader->SetFileName(  "fixed.bmp" );
>> > movingReader->SetFileName( "moving.bmp" );
>> > try
>> > {
>> > fixedReader->Update();
>> > movingReader->Update();
>> > }
>> > catch( itk::ExceptionObject & excep )
>> > {
>> > std::cerr << "Exception catched !" << std::endl;
>> > std::cerr << excep << std::endl;
>> > }
>> > typedef itk::MeanSquaresImageToImageMetric< ImageType, ImageType >
>> >  MetricType;
>> > MetricType::Pointer metric = MetricType::New();
>> > typedef itk::CenteredSimilarity2DTransform < double >  TransformType;
>> > TransformType::Pointer transform = TransformType::New();
>> > typedef itk::LinearInterpolateImageFunction< ImageType, double >
>> >  InterpolatorType;
>> > InterpolatorType::Pointer interpolator = InterpolatorType::New();
>> > ImageType::Pointer fixedImage  = fixedReader->GetOutput();
>> > ImageType::Pointer movingImage = movingReader->GetOutput();
>> > typedef itk::CenteredTransformInitializer< TransformType, ImageType,
>> > ImageType >  TransformInitializerType;
>> > TransformInitializerType::Pointer initializer =
>> > TransformInitializerType::New();
>> > initializer->SetTransform(   transform );
>> > initializer->SetFixedImage(  fixedImage );
>> > initializer->SetMovingImage( movingImage );
>> > initializer->MomentsOn();
>> > initializer->InitializeTransform();
>> > metric->SetTransform( transform );
>> > metric->SetInterpolator( interpolator );
>> > metric->SetFixedImage(  fixedImage  );
>> > metric->SetMovingImage( movingImage );
>> > metric->SetFixedImageRegion(  fixedImage->GetBufferedRegion()  );
>> > try
>> > {
>> > metric->Initialize();
>> > }
>> > catch( itk::ExceptionObject & excep )
>> > {
>> > std::cerr << "Exception catched !" << std::endl;
>> > std::cerr << excep << std::endl;
>> > return EXIT_FAILURE;
>> > }
>> > transform->SetScale(1.08438);
>> > transform->SetAngle(0.154531);
>> > TransformType::TranslationType translation;
>> > translation[0] = -26.6822;
>> > translation[1] = -93.6822;
>> > MetricType::TransformParametersType transformParams =
>> > transform->GetParameters();
>> > double metricval = metric->GetValue(transformParams);
>> > return EXIT_SUCCESS;
>> > }
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > _____________________________________
>> > Powered by www.kitware.com
>> >
>> > Visit other Kitware open-source projects at
>> > http://www.kitware.com/opensource/opensource.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
>> >
>> >
>
>
>
> --
> Pham Sy Quy
> HCI Lab, Advanced Fusion Technology Department,
> Room 1211, New Millennium Building
> Konkuk University, Seoul, Korea
> Mobile: +82-10-9800-8104
>
>
>
> --
> Pham Sy Quy
> HCI Lab, Advanced Fusion Technology Department,
> Room 1211, New Millennium Building
> Konkuk University, Seoul, Korea
> Mobile: +82-10-9800-8104
>
> _____________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.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