[Insight-users] Registration: Optimizer Scales & Image Mutual Information STD

Anonymous User anonymous @ anonymous
Mon, 8 Sep 2003 11:13:09 +0200 (CEST)


Hello,

I have updated my ITK tree and seems to have somewhat of better, yet still
incorrect results for the registration process.  I just have two more
questions regarding the Optimizer Scales and one concerning the Image
Standard Deviation Parameter in the Mutual Information Metric that might
elucidate the problem.

First of all, the std for MI, is it calculated depending on the images'
std or do I chose it to be, for example, 0.4.  In my program, I am now
specifying it to be 0.4, as suggested in the online doc, and am using it
in my program as follows:

  //Get the Min and Max Values of Intensities
  typedef itk::MinimumMaximumImageCalculator< MovingImageType > MinMaxType;
  MinMaxType::Pointer minmax = MinMaxType::New();
  minmax->SetImage(fixedImageReader->GetOutput());
  minmax->Compute();

  //Calculate the Standard Deviation of the Non Normalized Image
  float fixedSd = 0.4 *	(minmax->GetMaximum() - minmax->GetMinimum())
				+ minmax->GetMinimum();
  metric->SetFixedImageStandardDeviation(fixedSd);

Is this correct or do I need to calculate the std for each image? Is there
a ITK function to do this?

Second, regarding the ITK Users Request of Aug 29th on the Optimizer
Scales.  I am using a Euler3D Transform with a Regular Step Gradient
Descent Optimizer on Images of [156,156,156] with a spacing of 0.474m per
pixel in each direction.  What would have to be my scales, I dont
understand what is meant by: "The scaling factors must be
proportional to the physical extent of the image. (...) I want to get rid
of this dependency, simply compute the translation part of the scale as a
multiple of the diagonal of your image measured in millimeters."

Right now, I am just trying random optimizer parameters and fine tune them
towards a better answer but it is not a very "scientific way" to get to
what I want, and surely it is only good for these specific test images and
not generic images which I will eventually use...

Where is this basic scale of [1,1,1,0.0001,0.0001,0.0001] taken from for
Images size [100,100,100]?
What would be my optimizer scales in my case, these:
[1,1,1,0.0001*1.56,0.0001*1.56,0.0001*1.56]?

How do I calculate "the translation part of the scale as a multiple of the
diagonal"?

Regards,
Anonymous User

--------------------------------------------------------------------
Date: Fri, 29 Aug 2003 19:32:24 -0400
From: Luis Ibanez <luis . ibanez at kitware . com>
To: Michael Kuhn <michakuhn at gmx . ch>
Cc: insight-users <insight-users at itk . org>
Subject: Re: [Insight-users] optimizer scales

Hi Michael,

Your assumption is correct,

The scaling factors must be proportional to the
physical extent of the image.

These factors are used by the optimizer in order
to compensate the difference in dynamic range
between the quaternion components and the translation
components.
I want to get rid of this dependency, simply compute
the translation part of the scale as a multiple of the
diagonal of your image measured in millimeters.

Regards,

   Luis
-----------------------------
Michael Kuhn wrote:
> Hi,
>
> I want to perform a registration between two images A and B for
> different resolutions. This means, I do a registration between images A1
> and B1 (which, for example, have a size of 100x100x100 pixels in unit
> spacing) and between images A2 and B2 (which contain the same image
> data, but are smaller (for example 70x70x70 pixels, unit spacing as well
> (i.e. their extent is smaller in pixel as well as in world
> coordinates)). I'm using a quaternion transform and a quaternion rigid
> transform gradient
descent optimizer.
>
> Is it correct, that in order to perform the same registration, I have to
> rescale the 'translation scales' passed to the optimizer? Thus, I think,
> if I register A1 and B1 and use a scale array of [1, 1, 1, 1, 0.0001,
> 0.0001, 0.0001] then I have to use a scale array of [1, 1, 1, 1,
> 0.000143, 0.000143, 0.000143] to register A2 and B2 (where 0.000143 =
> 0.0001 / 0.7). Is this assumption correct and does it hold for all
> possible factors (not only for 0.7)?
>
> Thanks,
>
> Michael