<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
--></style>
</head>
<body class='hmmessage'>
&nbsp;<BR>
Hi Luis,<BR>
&nbsp;<BR>
Thank you for answering me.<BR>
&nbsp;<BR>
1) As you said, my images are from Microscopy and the spacing is about 2.85 micrometres/pixel. The images are in a raw format and I used the following .mhd file&nbsp;for reading it:<BR>
&nbsp;<BR>
&nbsp;<BR><SPAN lang=ES-MODERN>
&nbsp;&nbsp;&nbsp; NDims = 2<BR>
&nbsp;&nbsp;&nbsp; DimSize = 2000 2000<BR>
&nbsp;&nbsp;&nbsp; ElementType = MET_UCHAR<BR>
&nbsp;&nbsp;&nbsp; ElementSpacing = 1.0 1.0<BR>
&nbsp;&nbsp;&nbsp; Offset = 0.0 0.0<BR>
&nbsp;&nbsp;&nbsp; ElementByteOrderMSB = False<BR>
&nbsp;&nbsp;&nbsp; ElementDataFile = fixed.raw<BR>
&nbsp;<BR>
I also tried to as ElementSpacing 2.83 and 0.00283 (just in case...) but the results weren´t good either.<BR>
&nbsp;<BR>
2) I also try to put a relaxation factor of 0.9&nbsp;as you said and I couldn´t see any improvement.<BR>
&nbsp;<BR>
3)&nbsp; I´m attaching three .txt files with some results obtained. <BR>
The results1.txt file shows the output of the program as you can find it on ITK/Examples/Registration/. <BR>
The results2.txt file&nbsp;shows the output of the program with a predifined center in the position 1000x1000. The results3.txt file&nbsp;shows the output of the program with a predifined center in the position 1000x1000, a predefined angle of 0.9 radians and a predefined traslation of -340 in the X axis and 800 in the Y axis (that are the values for an optimal registration).<BR>
&nbsp;<BR>
&nbsp;<BR>
I hope you can help me to fix my problem with that information... an be free to ask anything else :P.<BR>
&nbsp;<BR>
Thank you really much.<BR>
&nbsp;<BR>
Manuel.<BR>
</SPAN><BR>&nbsp;<BR>&gt; Date: Wed, 21 Oct 2009 17:29:08 -0400<BR>&gt; Subject: Re: [Insight-users] Problem with 2D Registration (local minima)<BR>&gt; From: luis.ibanez@kitware.com<BR>&gt; To: manueldavid.tabas@hotmail.es<BR>&gt; CC: insight-users@itk.org<BR>&gt; <BR>&gt; Hi Manuel,<BR>&gt; <BR>&gt; Thanks for the detailed description of your problem.<BR>&gt; <BR>&gt; A couple of questions:<BR>&gt; <BR>&gt; <BR>&gt; 1) What is the pixel spacing of your image ?<BR>&gt; <BR>&gt; The typical proportion of :<BR>&gt; <BR>&gt; &gt; const double translationScale = 1.0 / 1000.0;<BR>&gt; <BR>&gt; is set up for images whose physical extent in<BR>&gt; the units used by the spacing is in the range<BR>&gt; of hundreds.<BR>&gt; <BR>&gt; For example, a typical CT scan will have 512x512<BR>&gt; pixels with a spacing close to 1mm / pixel.<BR>&gt; <BR>&gt; Your images are probably from Microscopy or<BR>&gt; from a Satellite, so I'm wondering about the units<BR>&gt; that you use (microns or kilometers) and the<BR>&gt; exact numeric values of the spacing.<BR>&gt; <BR>&gt; <BR>&gt; 2) Could you post to the list the output of the<BR>&gt; command observer that tracks the values of<BR>&gt; the metric and the transform at every iteration ?<BR>&gt; <BR>&gt; <BR>&gt; Something that happens often when using the<BR>&gt; RegularStepGradientDescentOptimizer is that,<BR>&gt; if the registration process have a couple of<BR>&gt; bounces of direction in the parametric space,<BR>&gt; the step length may be reduced too fast, and<BR>&gt; not give the optimizer the oportunity to walk<BR>&gt; far enough to get to the solution.<BR>&gt; <BR>&gt; <BR>&gt; You may want to try using the method:<BR>&gt; <BR>&gt; optimizer-&gt;SetRelaxationFactor( 0.9 );<BR>&gt; <BR>&gt; <BR>&gt; This method defines the factor by which the<BR>&gt; step length is reduced at every time that the<BR>&gt; parametric space step changes direction.<BR>&gt; This may prevent the premature shrinkage<BR>&gt; of the step length (assuming that this is the<BR>&gt; real problem).<BR>&gt; <BR>&gt; <BR>&gt; Anothe typical issue: It may simply be that you<BR>&gt; need a better initialization for your images.<BR>&gt; <BR>&gt; <BR>&gt; Note that the Transform initializer in the example:<BR>&gt; <BR>&gt; ImageRegistration6.cxx<BR>&gt; <BR>&gt; is using the methods MomentsOn().<BR>&gt; <BR>&gt; This may or may not be the right method to use,<BR>&gt; depending on the content of your images.<BR>&gt; <BR>&gt; For example: If the two images have different<BR>&gt; modalities, or if the main features of one image<BR>&gt; may not overlap to the one in the other image.<BR>&gt; <BR>&gt; If you could post a screenshot of both images<BR>&gt; we could avoid all this speculation... :-)<BR>&gt; <BR>&gt; Or...<BR>&gt; If you can share your images in a public web<BR>&gt; site, that will be even better.<BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; Thanks<BR>&gt; <BR>&gt; <BR>&gt; Luis<BR>&gt; <BR>&gt; <BR>&gt; ----------------------------------------------------------------<BR>&gt; On Wed, Oct 21, 2009 at 11:56 AM, Manuel David Tabas Calle<BR>&gt; &lt;manueldavid.tabas@hotmail.es&gt; wrote:<BR>&gt; &gt; Hello ITK,<BR>&gt; &gt;<BR>&gt; &gt; I´m working with ITK to do registration of 2D images and I think I reach a<BR>&gt; &gt; local minima that makes a poor registration.<BR>&gt; &gt;<BR>&gt; &gt; I´m using 2D images 2000x2000 pixels in what the moving image needs a<BR>&gt; &gt; rotation and a translation. So I reproduced the ImageRegistration6.cxx to do<BR>&gt; &gt; that. But the result I got is not good enough so I think that the<BR>&gt; &gt; MeanSquares metric reaches a local minima. The value of the metric is about<BR>&gt; &gt; 4000 (aprox.), and I run a test using as input parameters the optimal ones<BR>&gt; &gt; (that is, the result I think i should obtain)&nbsp;and the metric returns a value<BR>&gt; &gt; of 2500 (aprox.).<BR>&gt; &gt;<BR>&gt; &gt; The framework I use is:<BR>&gt; &gt;<BR>&gt; &gt; &nbsp;&nbsp; itkImageRegistrationMethod<BR>&gt; &gt; &nbsp;&nbsp; itkMeanSquaresImageToImageMetric<BR>&gt; &gt; &nbsp;&nbsp; itkLinearInterpolateImageFunction<BR>&gt; &gt; &nbsp;&nbsp; itkRegularStepGradientDescentOptimizer<BR>&gt; &gt; &nbsp;&nbsp; itkCenteredRigid2DTransform<BR>&gt; &gt;<BR>&gt; &gt; And the parameters of my registration are:<BR>&gt; &gt;<BR>&gt; &gt; const double translationScale = 1.0 / 1000.0;<BR>&gt; &gt; optimizerScales[0] = 1.0;<BR>&gt; &gt; optimizerScales[1] = translationScale;<BR>&gt; &gt; optimizerScales[2] = translationScale;<BR>&gt; &gt; optimizerScales[3] = translationScale;<BR>&gt; &gt; optimizerScales[4] = translationScale;<BR>&gt; &gt;<BR>&gt; &gt; optimizer-&gt;SetMaximumStepLength( 0.1 );<BR>&gt; &gt; optimizer-&gt;SetMinimumStepLength( 0.001 );<BR>&gt; &gt; optimizer-&gt;SetNumberOfIterations( 200 );<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; &gt; The scales are well defined and I tried to vary the parameters of the<BR>&gt; &gt; optimizer but the results were similar, so I don´t know what to do next. Any<BR>&gt; &gt; idea??<BR>&gt; &gt;<BR>&gt; &gt; Thank you in advance, I hope you can have more ideas to try.<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; &gt; Manuel.<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; &gt; _____________________________________<BR>&gt; &gt; Powered by www.kitware.com<BR>&gt; &gt;<BR>&gt; &gt; Visit other Kitware open-source projects at<BR>&gt; &gt; http://www.kitware.com/opensource/opensource.html<BR>&gt; &gt;<BR>&gt; &gt; Please keep messages on-topic and check the ITK FAQ at:<BR>&gt; &gt; http://www.itk.org/Wiki/ITK_FAQ<BR>&gt; &gt;<BR>&gt; &gt; Follow this link to subscribe/unsubscribe:<BR>&gt; &gt; http://www.itk.org/mailman/listinfo/insight-users<BR>&gt; &gt;<BR>&gt; &gt;<BR>                                               <br /><hr />Vive toda la experiencia de Messenger con Orange desde tu Blackberry  <a href='http://serviciosmoviles.es.msn.com/messenger/blackberry.aspx ' target='_new'>¡Descúbrelo!</a></body>
</html>