<div dir="ltr">In the ITK Software Guide there is some general advice on how to approach adjusting the parameters of registration. The following is said regarding the Affine Transform:<div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<div><div>5) The MOST critical values of the registration process are the</div></div><div><div> scaling parameters that define the proportions between</div></div><div><div> the parameters of the transform. In your case, for an Affine</div>
</div><div><div> Transform in 2D, you have 6 parameters. The first four are</div></div><div><div> the ones of the Matrix, and the last two are the translation.</div></div><div><div><br></div></div><div><div> The rotation matrix value must be in the ranges of radians</div>
</div><div><div> which is typically [ -1 to 1 ], while the translation values are</div></div><div><div> in the ranges of millimeters (your image size units).</div></div><div><div><br></div></div><div><div>
You want to start by setting the scaling of the matrix</div></div><div><div> parameters to 1.0, and the scaling of the Translation</div></div><div><div> parameters to the holy esoteric values:</div></div>
<div><div><br></div></div><div><div> 1.0 / ( 10.0 * pixelspacing[0] * imagesize[0] )</div></div><div><div> 1.0 / ( 10.0 * pixelspacing[1] * imagesize[1] )</div></div><div><div><br>
</div></div><div><div> This is telling the optimizer that you consider that rotating</div></div><div><div> the image by 57 degrees is as "significant" as translating</div></div><div><div> the image by half its physical extent.</div>
</div><div><div><br></div></div><div><div> Note that esoteric value has included the arbitrary number</div></div><div><div> 10.0 in the denominator, for no other reason that we have</div></div><div><div> been lucky when using that factor. This of course is just a</div>
</div><div><div> supersticion, so you should feel free to experiment with</div></div><div><div> different values of this number.</div></div><div><div><br></div></div><div><div> Just keep in mind that what the optimizer will do is to</div>
</div><div><div> "jump" in a paramteric space of 6 dimension, and that the</div></div><div><div> component of the jump on every dimension will be proporitional</div></div><div><div> to 1/scaling factor * OptimizerStepLenght. Since you put</div>
</div><div><div> the optimizer Step Length to 0.1, then the optimizer will start</div></div><div><div> by exploring the rotations at jumps of about 5degrees, which</div></div><div><div> is a conservative rotation for most medical applications.</div>
</div><div><div><br></div></div><div><div> If you have reasons to think that your rotations are larger or</div></div><div><div> smaller, then you should modify the scaling factor of the matrix</div></div><div>
<div> parameters accordingly.</div></div><div><div><br></div></div><div><div> In the same way, if you thinkl that 1/10 of the image size is too</div></div><div><div> large as the first step for exploring the translations, then you</div>
</div><div><div> should modify the scaling of translation parameters accordingly.</div></div><div><br></div></blockquote>I would like to know if anyone has similar advice regarding the BSplineTransform. Any help is welcome!<div>
<br></div><div>Stephen Parsons</div><div>University of Kentucky</div></div>