[Insight-users] Registration3D

Luis Ibanez luis . ibanez at kitware . com
Tue, 22 Jul 2003 14:29:32 -0400


Hi Ravi,

Your code for centering the images looks fine.

You can always double check if the new origin
is correct by printing out the image information
with something like

fixedcenterer->GetIOutput()->Print( std::cout );
movingenterer->GetIOutput()->Print( std::cout );

---

What values are you using for the  translationScaling ?

Keep in mind that the Euler3D transform represents
rotations as three angles in radians, so their dynamic
range is much lower than the translations dynamic range.

A new balance between the learningRate and the
translationScaling may help to make the optimization
more stable.

You may also break the process in two stages:
a first one in which you do only translations at
big steps. (using translation transform), followed
by a second registration in which you use a rigid
transform with small steps, for fine tunning the
translation and correct for rotation.
This approach may make sense if the image miss-registration
is composed by a small rotation and a large translation.


Regards,


    Luis




--------------------
ravi sharma wrote:
> Well I have a strange problem with my 3D multimodality
> registration program.My program is able to correct
> translations but after correcting translations it
> starts to misregister...the rotations just go
> haywire(optimizer goes to a minimum value and
> translations are corrected but at this point the
> rotations start to occur and optimizer wrongly moves
> to maximize cost function).It doesnot correct any
> rotations and even if I take the same image as fixed
> and moving it starts to rotate the moving image.I am
> using Euler3D transform and
> MattesMutualInformation.After running the program with
> various test cases I think it is a problem with the
> way I set the centers of the images perhaps.
>   I read the fixed and moving images then Using
> ChangeInformationImageFilter I do the following
> 
> 
> 
>   FixedCentererType::Pointer fixedcenterer =
> FixedCentererType::New();
>   MovingCentererType::Pointer movingcenterer =
> MovingCentererType::New();
>   fixedcenterer->CenterImageOn();
>   movingcenterer->CenterImageOn();
>  
> fixedcenterer->SetInput(fixedImageReader->GetOutput());
>  
> movingcenterer->SetInput(movingImageReader->GetOutput());
> 
> After this I cast the outputs of thes to float and set
> those images as registration images.After this I use
> simply the Transform and dont do anything with the
> centers.What could be the problem.
> 
> __________________________________
> Do you Yahoo!?
> Yahoo! SiteBuilder - Free, easy-to-use web site design software
> http://sitebuilder . yahoo . com
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk . org
> http://www . itk . org/mailman/listinfo/insight-users
>