I am looking if 3D Slicer is capable of exporting Deformable Registration Objects as DICOM. Of course my first priority was to search your forum and see if anyone else had a similar request. Indeed I found a couple related issues (links below)
Following your suggestions on these threads I have downloaded the latest nightly build at that moment 4.11.0-2020-09-21 r29383 / c299952. Though I cannot find the proper way of using the DICOM Spatial Registration Object Import Export plugin. I have tried SAVE scene option and selected only the Deformation Grid but in the File format combo box I can’t see any DICOM option. Also some options are giving me error on saving (like MHA. MHD) while saving as h5 or txt works.
Also tried right click on scene → Dicom Export but again there when REG object is selected there are no Dicom Tags visible.
Am I doing something completely wrong here or the functionality is still not implemented?
Thank you for your patience, excellent work and assistance.
It sounds like you don’t have your registration transform under a patient and study. You either need to drag&drop it under an existing study (if your input came from DICOM you have it), or you need to create a new one. You need to do both in the Data module. To create a new patient right-click the empty space and choose Create new subject, and then Create new study under the new patient. Then when the transform is under a study, right-click the study and choose Export to DICOM. Make sure the REG plugin is selected on the bottom left. You can set DICOM tags in this window.
For some reason also I cannot drag and drop in the data tree control. When I click and drag is starting selecting other nodes also. (something different from my initial problem but thought to report it).
the tree that you see above is how is loaded by slicer and by default as I can see the REG is under the study and not the series. But again I don’t get the option to export.
update: The drag and drop is now back and running. not sure what was wrong.
For some reason also I cannot drag and drop in the data tree control. When I click and drag is starting selecting other nodes also.
You can drag&drop in the Data module, and not in other views (@lassoan the same is happening in the DICOM module, and it’s quite annoying. We should do something with this, maybe just enable single selection, otherwise it seems like a bug that drag&drop is not enabled in those views. What do you think?)
Is there any error in your log? For example “Failed to find moving and/or fixed image for transform…”. Because the transform can only be exported to DICOM if it was created by one of Slicer’s registration modules and the proper references set.
Thanks for the tutorial, I will study it.
You are absolutely right on the reason of not exporting. I indeed have a “Failed to find moving…” error. And indeed also I am loading a DVF file from Varian Ethos manufacturer. So I assume that importing a DVF from another vendor means that I cannot export again? Is export only available for Slicer created fields?
We could probably automatically guess the two images from the scene (if there are multiple candidate image pairs then we could choose the first). Maybe we could also add the series instance uids of the fixed and moving image it to the list of editable DICOM fields in export dialog (just in case someone wants to select.a different one)? Or, could we add node reference selector in the DICOM export info window? @cpinter what do you think?
While reading the first part of your comment this was the idea that popped up in my head. Maybe we should allow series to define the necessary node references and expose them in the export dialog.
Another thing that many people miss is exporting from under a patient/study. There are many things to do in the DICOM export dialog. There may be a project in terms of which we can do some of these in a few months. I’ll ask.
For the specific issue of @iTheoch, what I’d suggest so that progress can be made is to set the node references manually. @lassoan there is a module exposing node references in one of the developer extensions right?
The two references that need to be set are
OK. I’ll try this and see if it works as expected or there are side effects that we haven’t thought about.
Sounds good. It would be nice to have node selectors and enumerated values. Maybe we could reuse parts of the CLI module widget factory.
Yes, “Node info” module in DebuggingTools extension can show node references (you cannot change them, but if the need to add/remove/modify node references comes up frequently enough then it should be easy to implement this).
Nothing specific, just test drag-and-drop in DICOM module widget (I don’t expect any issues, as its role is essentially the same as in Data module), DICOM export dialog (probably we want to disable drag&drop there), and run the automatic tests. Models and Markups module widgets already have drag&drop enabled, so we don’t need to test there.
Dense displacement fields are usually this big, it should not cause issues.
You can resample transform using Transforms module → Convert, by specifying a downsampled volume as reference.
However, if you need lower resolution displacement field then probably you can get much better results if you use bspline transform. Bspline transform is the same as grid transform except it uses bspline interpolation instead of trilinear interpolation, therefore a smooth displacement field can be described with several magnitudes less control points.