[ITK-users] minimize skewing
Hammond, Emily M
emily-hammond at uiowa.edu
Mon Nov 24 13:41:08 EST 2014
Thank you for your suggestion. It has been helpful!
I have implemented the ScaleVersor3DTransform and have received results. However, every time the rotation is much larger causing terrible results. Here is an example of a final transform received.
scaleVersorTransform information:
Rotation: [ -0.606402, 0.792956, 0.0591457, 1.41421e-005 ]
Translation: [9.16674, -1.28393, -17.1493]
Scale: [4.08189, 1.52688, 2.35832]
I haven't had much experience with versors, but I went through the calculations from a previous mailing list email (http://public.kitware.com/pipermail/insight-users/2009-March/029584.html) and got a very very large rotation that is occurring (as is seen in the resulting image). Is there any reason that I may be getting such a large, unrealistic rotation?
Here is how I've set up my optimizer:
typedef itk::RegularStepGradientDescentOptimizer GDOptimizerType;
GDOptimizerType::Pointer gdOptimizer = GDOptimizerType::New();
// set up optimizer
gdOptimizer->SetNumberOfIterations( 200 );
gdOptimizer->SetRelaxationFactor( 0.9 );
gdOptimizer->SetMinimumStepLength( 0.001 );
gdOptimizer->SetMaximumStepLength( 5.0 );
gdOptimizer->SetGradientMagnitudeTolerance( 0.001 );
// initialize optimizer scales
typedef GDOptimizerType::ScalesType OptimizerScalesType;
OptimizerScalesType optimizerScales( scaleVersorTransform->GetNumberOfParameters() );
// rotation
const double rotationScale = 1.0/10000.0;
optimizerScales[0] = rotationScale;
optimizerScales[1] = rotationScale;
optimizerScales[2] = rotationScale;
// translation
const double translationScale = 1.0/1000.0;
optimizerScales[3] = translationScale;
optimizerScales[4] = translationScale;
optimizerScales[5] = translationScale;
// scaling
const double scalingScale = 1.0/100.0;
optimizerScales[6] = scalingScale;
optimizerScales[7] = scalingScale;
optimizerScales[8] = scalingScale;
// set scales
gdOptimizer->SetScales( optimizerScales );
Any advice would be great!
Thanks!
Emily Hammond
________________________________
From: Bradley Lowekamp [blowekamp at mail.nih.gov]
Sent: Wednesday, November 19, 2014 12:52 PM
To: Hammond, Emily M
Cc: insight users
Subject: Re: [ITK-users] minimize skewing
Hello,
For 3D you might want to look into the ScaleVersor3DTransform or the ScaleSkewVersor3DTransform. These may parameterize the transform as you wish.
Brad
On Nov 19, 2014, at 11:56 AM, Hammond, Emily M <emily-hammond at uiowa.edu<mailto:emily-hammond at uiowa.edu>> wrote:
Hello all,
I am looking perform registration allowing for translation, rotation and anisotropic scaling. Is there a way to use the affine transform but limit the skewing performed? Or is there an alternative method to do this.
Thanks!
Emily Hammond
_____________________________________
Powered by www.kitware.com<http://www.kitware.com/>
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php
Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/insight-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/insight-users/attachments/20141124/edb6a507/attachment.html>
More information about the Insight-users
mailing list