Sampling strategy in ImageRegistrationMethodv4



I see user can set sampling rate for image registration by the function “SetMetricSamplingPercentage”
If I understand correctly, after setting the sample rate, ITK will randomly choose a set of points and evaluate metric on those points. The set of points is fixed during iteration.

My question is, is there a way to use different sample for every iteration?
Or am I wrong that it is resampled every iteration?

Computation time does not scale with SetMetricSamplingPercentage setting in ITK V4
(Bradley Lowekamp) #2

There are 3 sampling strategies implemented: None, Regular, and Random I have always wanted to try a “poisson distributed sampling”, but I doubt it’d make a difference.

The ITKv3 registration created a new sample set each iterations.

This is not an option for ITKv4. Having a fix sample set enables coherent results for the values and the derivatives of the metric which adheres better to the assumptions of many optimizers and convergence criteria.


Thanks @blowekamp!
Is there a way to create new sample at every iteration in ITKv4?
I would rather give it a try.

The images I like to registrate contains detailed structure that I think only sampling part of the points might be biased from ground truth. But I would like to speed up by sampling, or in other words, I would like to try stochastic gradient descent.
I hope I can use techniques like momentum to stabilize the optimization.


Well, I worked out a way to update the sample through observer.
The result isn’t better neither worse in my case.
Thanks for help!