[Insight-users] Bug (?) in MultiResolutionImageRegistrationMethod (FixedImageRegion issue)
Luc Bracoud
lbracoud@theralys.com
Mon, 16 Sep 2002 11:14:36 +0200
Hi,
I've been using ITK for a few months in order to register various type
of data, through a pipeline inspired from MultiResMIRegistration example.
I've always been registering "full" images so far (the FixedImageRegion
being set to the BufferedRegion), and the results were great (after
"some" parameters tuning.... :-)).
But now that I try to register images over reduced regions, I notice
that there's no difference between results no matter which
FixedImageRegion I set.
Invoking metric->DebugOn(), i realized that my FixedImageRegion settings
were not taken into account (another call to SetFixedImageRegion was
made) .
After having a look at the code, I saw that the reason of this problem
is that I set the FixedImageRegion when an IterationEvent is generated
by MultiResolutionImageRegistrationMethod::StartRegistration level-loop,
but a further call to MultiResolutionImageRegistrationMethod::Initialize
forces FixedImageRegion back to its maximum size
(m_Metric->SetFixedImageRegion(m_FixedImagePyramid->GetOutput(m_CurrentLevel)->
GetBufferedRegion() );).
This means user settings concerning FixedImageRegion will never be taken
into account.
Furthermore, as it is necessary to adapt the FixedImageRegion to each
level (shrinking it according to the shrink factors of the current
level), I think the MultiResolutionPyramidImageFilter should somehow
have the ability to generate an ImageRegion according to an input
ImageRegion, the current level, and its shrink factors at this level.
And then the RegistrationMethod could take this into account when
setting the metric parameters.
Could you please tell me if I'm right and it's indeed an ITK bug, or if
I just missed something along the way?? (maybe are we meant to manually
set the BufferedRegion of each pyramid level)
(and if it's a bug, I'd of course be very grateful if anyone could fix
it :-))
Thanks for reading me.
Luc.