Elastix is a very powerful registration toolbox with lots of advantages over stock ITK registration tools - it has many more metrics, transformation methods, constraints, optimizers, and it comes with a large registration parameter set database, which contains optimized settings for a wide range of registration tasks.
This toolbox is now available in Slicer, through the SlicerElastix extension, in the latest nightly builds.
Even the default settings work really well for simple (same patient, same modality) and difficult cases (different modality, different field of view, even different patient), as shown in this 1-minute demo video here: https://youtu.be/cU0pWhn0-3o
Limitations: Masking will be available in tomorrow’s nightly build. Multi-label, landmark, 4D volumes, and multi-metric inputs are not supported yet (can be added quite easily if the community needs it). Parameter set editing is manual (edit files in a directory).
This is great! The simplicity of the module makes it even more promising than BRAINS! Maybe this is the kind of news that would be worth adding to the Announcements category.
Looks great. Elastix is one of the best registration tools. I can not find it in the extension manager, do I miss something?
Quick question. did you integrate elastix within Slicer? or do you run elastix in the background? I think the first option is better as writing/reading the images from/to the hdd is time consuming.
best!
found it. I had to download the nightly build. I alsof found out that you use it in the background. It would be great if there is a cooperation between Slicer and elastix group to integrate it with-in Slicer in the future. I have some ideas to enhance the extension, I will try to contribute them soon.
Time for reading/writing uncompressed binary files is negligible (compared to registration or resampling time), even for very large files. Generating the resampled output and displacement field are time-consuming, so that deserves some attention.
I think the resampled output volume is generated twice (once by elastix, at the end of each registration phase; once by transformix at the end - these are redundant).
We could avoid id completely by changing Elastix to write ITK-compatible transforms or implement Elastix transform readers in SlicerElastix.
We build Elastix with default build options. If something is not enabled by default then probably there is a good reason for it (e.g., that algorithm does not perform well or its usage is discouraged for other reasons).
Probably simplex optimizer is not included by default because it is a very basic optimizer. It may be sufficient for very easy problems, but better quality optimizers are available (that can find more accurate results, faster). You can ask on the SimpleITK forum/mailing list to confirm and if you learn that there is good motivation to use simplex method then let us know and we’ll change the Elastix build options.
In the meantime, you can configure Elastix module in Slicer (in Advanced section) to use an elastix executable that you download from the Elastix website or you build yourself.