users > CMTK registration parameters (warp tool)
Showing 1-2 of 2 posts
Feb 2, 2011 06:02 PM | Torsten Rohlfing
CMTK registration parameters (warp tool)
Hi Dominik:
Sorry for the apparently endless (and fruitless) chain of documentation referrals.
Ideally, all parameters should be documented, at least briefly, directly in each tool, i.e., you should see at least something in both the Slicer UI and when you run the tool with "--help".
Regarding your particular parameters of interest, here's a bit more "meat":
- "sampling" is the finest resampled (!) image resolution in the multi-resolution pyramid. Say you have 1mm voxel size in your input data. By default, the first resampled resolution is 2x original, i.e., here 2mm. You can use "sampling" ton increase this value, say, to 4mm to make things faster. This is particularly effective when you also use the "omit-original-data" option, because otherwise the multi-res pyramid will still have the original resolution images in it (which is of course slow).
- "coarsest" bounds the resampling on the opposite end - it's the largest voxel size in the pyramid. By default this is determined based on the maximum optimizer step size, but that can be too large to still get useful pixels (that show sufficient image detail).
So using "sampling" to increase image voxel size on the fine end makes things faster, using "coarsest" to decrease size on the coarse and makes things slower but potentially gives better results.
- "grid-spacing" is the control point spacing, and it is indeed in mm. The caveat here is that the algorithm internally stretches the control point grid from this value until the image FOV is exactly covered by an integer number of control points. So if you say grid spacing = 40 but your FOV is 100mm you will end up with actual spacing = 50. This is per dimension, so you will typically have non-isotropic grids. The behaviour can be turned off with the "exact-spacing" option.
- "refine" is the number of control point grid refinements, so if you start with a 40 mm grid and choose refine = 3, the final control point grid will be 40/2^3 = 5mm (again, considering what I said before about internal adjustment of grid spacing). I typically use between 1 and 4 refinements, but what is best depends on your data, application, and accuracy requirements. In general, using larger numbers (more levels) makes things slower because finer grids take a bit more time (although time grows less than linear with control point count due to decreased number of affected pixels when the cells shrink).
So using larger values for "grid-spacing" makes things faster and allows you to capture larger deformations. Using larger values for "refine" makes things a bit slower but allows you to capture finer and finer deformations.
I hope this answers your questions at least partially. My apologies for the sometimes odd parameter names -- these have been evolving literally for over 10 years, and some choices have turned out quite suboptimal, but in the interest of backward compatibility, I am keeping them stable. I am trying to do a better job on the new "warpx" (and "registrationx") tools, but in turn their interfaces are still a bit "fluid".
One more thing - I will also post this on CMTK's NITRC user forum. It would be great if you could post further questions there, so we have a record of these things for other users. I usually reply to posts there just as quickly as to emails.
Best,
Torsten
On 02/02/2011 09:03 AM, Dominik Meier wrote:
> Hi Torsten
>
> Could you shed light on the meaning of some of the registration parameters found in the CMTK Extension Module BSpline registration package?
> Documentation refers to NITRC which refers to an insight journal manual which refers to a TMI article which does not list parameters.
> Any pointers to further documentation?
>
> In particular:
> Resolution tab has "sampling" and "coarsest" with defaults of -1. Which parameters do I change to speed things up?
> Transformation tab has "grid spacing", which is in mm ? "refine" step is multires levels in which direction?
> I assume in general a default of -1 means "off", but what's the valid range?
>
> Many thanks,
> Dominik
>
> ______________________________________________
> DOMINIK MEIER, PH.D.
> Assistant Professor of Radiology
> Brigham & Women's Hospital / Harvard Medical School
> Dept. of Radiology , 221 Longwood Ave., RF396
> Boston, MA 02115 ; Phone: 617 278-0800
>
>
>
--
Torsten Rohlfing, PhD SRI International, Neuroscience Program
Senior Research Scientist 333 Ravenswood Ave, Menlo Park, CA 94025
Phone: ++1 (650) 859-3379 Fax: ++1 (650) 859-2743
torsten@synapse.sri.com http://www.stanford.edu/~rohlfing/
"Though this be madness, yet there is a method in't"
Sorry for the apparently endless (and fruitless) chain of documentation referrals.
Ideally, all parameters should be documented, at least briefly, directly in each tool, i.e., you should see at least something in both the Slicer UI and when you run the tool with "--help".
Regarding your particular parameters of interest, here's a bit more "meat":
- "sampling" is the finest resampled (!) image resolution in the multi-resolution pyramid. Say you have 1mm voxel size in your input data. By default, the first resampled resolution is 2x original, i.e., here 2mm. You can use "sampling" ton increase this value, say, to 4mm to make things faster. This is particularly effective when you also use the "omit-original-data" option, because otherwise the multi-res pyramid will still have the original resolution images in it (which is of course slow).
- "coarsest" bounds the resampling on the opposite end - it's the largest voxel size in the pyramid. By default this is determined based on the maximum optimizer step size, but that can be too large to still get useful pixels (that show sufficient image detail).
So using "sampling" to increase image voxel size on the fine end makes things faster, using "coarsest" to decrease size on the coarse and makes things slower but potentially gives better results.
- "grid-spacing" is the control point spacing, and it is indeed in mm. The caveat here is that the algorithm internally stretches the control point grid from this value until the image FOV is exactly covered by an integer number of control points. So if you say grid spacing = 40 but your FOV is 100mm you will end up with actual spacing = 50. This is per dimension, so you will typically have non-isotropic grids. The behaviour can be turned off with the "exact-spacing" option.
- "refine" is the number of control point grid refinements, so if you start with a 40 mm grid and choose refine = 3, the final control point grid will be 40/2^3 = 5mm (again, considering what I said before about internal adjustment of grid spacing). I typically use between 1 and 4 refinements, but what is best depends on your data, application, and accuracy requirements. In general, using larger numbers (more levels) makes things slower because finer grids take a bit more time (although time grows less than linear with control point count due to decreased number of affected pixels when the cells shrink).
So using larger values for "grid-spacing" makes things faster and allows you to capture larger deformations. Using larger values for "refine" makes things a bit slower but allows you to capture finer and finer deformations.
I hope this answers your questions at least partially. My apologies for the sometimes odd parameter names -- these have been evolving literally for over 10 years, and some choices have turned out quite suboptimal, but in the interest of backward compatibility, I am keeping them stable. I am trying to do a better job on the new "warpx" (and "registrationx") tools, but in turn their interfaces are still a bit "fluid".
One more thing - I will also post this on CMTK's NITRC user forum. It would be great if you could post further questions there, so we have a record of these things for other users. I usually reply to posts there just as quickly as to emails.
Best,
Torsten
On 02/02/2011 09:03 AM, Dominik Meier wrote:
> Hi Torsten
>
> Could you shed light on the meaning of some of the registration parameters found in the CMTK Extension Module BSpline registration package?
> Documentation refers to NITRC which refers to an insight journal manual which refers to a TMI article which does not list parameters.
> Any pointers to further documentation?
>
> In particular:
> Resolution tab has "sampling" and "coarsest" with defaults of -1. Which parameters do I change to speed things up?
> Transformation tab has "grid spacing", which is in mm ? "refine" step is multires levels in which direction?
> I assume in general a default of -1 means "off", but what's the valid range?
>
> Many thanks,
> Dominik
>
> ______________________________________________
> DOMINIK MEIER, PH.D.
> Assistant Professor of Radiology
> Brigham & Women's Hospital / Harvard Medical School
> Dept. of Radiology , 221 Longwood Ave., RF396
> Boston, MA 02115 ; Phone: 617 278-0800
>
>
>
--
Torsten Rohlfing, PhD SRI International, Neuroscience Program
Senior Research Scientist 333 Ravenswood Ave, Menlo Park, CA 94025
Phone: ++1 (650) 859-3379 Fax: ++1 (650) 859-2743
torsten@synapse.sri.com http://www.stanford.edu/~rohlfing/
"Though this be madness, yet there is a method in't"
Feb 3, 2011 12:02 PM | Greg Jefferis
RE: CMTK registration parameters (warp tool)
Hello,
This post from Torsten is very helpful and I'm glad it's on the forum. We have some older notes here:
http://flybrain.mrc-lmb.cam.ac.uk/dokuwi...
which might possibly also help, although they are partially oriented to our registration wrapper script. Of course these are just user deductions not explanations from the author!
Greg.
This post from Torsten is very helpful and I'm glad it's on the forum. We have some older notes here:
http://flybrain.mrc-lmb.cam.ac.uk/dokuwi...
which might possibly also help, although they are partially oriented to our registration wrapper script. Of course these are just user deductions not explanations from the author!
Greg.