I am looking at registration of whole-body CT image volumes, repeat scans of the same individual over several month span. My primary concern is efficiency, secondary concern is accuracy and so I am tuning carefully to makes sure the registration workflow is fast. Not surprisingly, I am having a really hard time tuning the registration (just rigid transformation) to consistently converge on a reasonable solution.
These images contain a lot of air outside of the body and I am concerned that the alignment of air regions creates a lot of local minima in the parameter space in which the optimizer is getting stuck.
I am curious about whether imposing limits of the point sample space to more closely align with the limits of the body contour will help constrain the optimization. Is there ITK API that supports setting limits on the sampling point set domain that is used to determine the similarity metric (Mattes MI) at each iteration? If not I suppose I could also trim the image volume prior to registration, but the former seems like a nicer option to me.
Any feedback/discussion would be much appreciated.
Thanks for your reply, it does seem like that would be useful.
Can you comment on the difference between the SetFixed(Moving)ImageRegion() and SetFixed(Moving)ImageMask()?
I am not sure yet about how the masks will be generated, but if they’re more simple volume constraints, say limits on x, y, and z. I’d like to make to use of the most simple option.
Region gives you the option of limits on IJK (which corresponds to XYZ in case of identity direction). Mask can be arbitrarily shaped, and are usually derived by segmenting out the air from CT images.
You can crop the fixed image, the moving image, and/or the virtual domain. Cropping the virtual domain ( which defaults to the fixed image) may be the most efficient as it is the domain used to generate the sample points.