[Insight-users] DeformableRegistration6 error
Luis Ibanez
luis.ibanez at kitware.com
Wed Nov 10 09:35:40 EST 2004
Hi Kingaza,
The purpose of providing bounds (lower and upper) in this optimizer
is to constraint the size of the region to be explored in the
parametric space.
For example, if you are doing 2D Rigid Registration and you know that
for the particular images that you have, the rotation of the image must
be smaller than 10 degrees, then you can provide that information to the
optimizer in the form of
angle lower bound = -10.0
angle upper bound = +10.0
assuming that the angle is set explicitly as one of the array elements
in the parameters array of the Transform.
This is generally known as "constrained optimization".
Note that in addition to the upper/lower bound values, there is an
array passed to this optimizer that specifies whether a parameter is
bounded or not.
Please let us konw if you have further questions
Thanks
Luis
-------------------------
kingaza at gmail.com wrote:
> hi luis,
>
> thank you very much!
>
> and i also find that i must resolve another problem to run my program.
> In high resolution, a new boundselect is a must, because its size will
> be various with the BSpline grid size.
>
> but there is something strange that the values of boundselect,
> lowerbound and upperbound are zeros, even after registration.
>
> then my further puzzel is: what is the role of boundselect in this
> registration procedure?
>
> regards
>
> kingaza
>
>
> On Mon, 08 Nov 2004 20:10:30 -0500, Luis Ibanez <luis.ibanez at kitware.com> wrote:
>
>>Hi Kingaza,
>>
>>As we explained in the previous email, the error condition
>>that you are encountering is the result of a premature
>>termination of the optimizer when it reaches its convergence
>>criteria.
>>
>>You want to work in fine tunning the values of the method
>>
>> SetProjectedGradientTolerance()
>>
>>The LBFGSBOptimizer will stop when the actual gradient is
>>smaller than the value that you set. Therefore, if the
>>optimizer is stopping prematurely that means that your
>>gradient criteria was too relaxed, e.g. the value was too
>>large. You probably want to reduce this settinng to values
>>in the range 1e-6 to 1e-10.
>>
>>Note that this is closely related to the Image Metric that
>>you are using, since after all, the derivatives of the metric
>>are proportional to the magnitude of the metric.
>>
>>You may also want to fine tune the value of the method
>>
>> SetCostFunctionConvergenceFactor()
>>
>>because the optimizer will stop whenever the reduction
>>in the cost function is less than (factor * machine precision).
>>The values recommended in the documentation are
>>
>>1e+12 for low accuracy (may result in early terminatino)
>>1e+7 for moderate accuracy
>>1e+1 for high accuracy
>>
>>Note again that this is proportional to the magnitudes
>>of the Image Metric that you are using.
>>
>>It is quite different if you are using Mutual Information
>>or MeanSquares or NormalizedCrossCorrelation.
>>
>>Something that may help you at this point is to work with
>>a very small crooped version of your image. That will
>>help you run multiple experiments rapidly until you
>>figure out the parameters that may be appropriate for your
>>type of image and type of ImageMetric.
>>
>>
>>
>>
>> Regards,
>>
>> Luis
>>
>
>
>
More information about the Insight-users
mailing list