I created a new extension for viewing registrations. It implements what is sometimes called “synchronised navigation” - simultaneous visualization of the same spatial location across multiple image series
The basic idea is that we load fixed and moving images, the corresponding registration, and when we move the cursor in one image, a markup follows in the second image (the position of the markup is calculated based on the registration).
Here is a sort video demo:
Some PACS providers, like Sectra, implement this feature (either via slices manually linked by the user or by a commercial registration algorithm).
I have already been using this with a few radiologists, and they seem to like it (when the registration is accurate).
Is this interesting to this community?
If yes:
- Should it have more features?
- Should it be a standalone extension, or does it make sense to integrate it somewhere?
This is in some way similar to this concept Views synchronization after registration, however, the main difference is that it shows the original moving image. As far as I understand, radiologists don’t always want to see a deformed moving image.
The code for anyone interested is available here:
How did I implement this (in short)?
- create 6 vtkMRMLMarkupsFiducialNode (one for each view)
- show the nodes in all views except for the one where the cursor is
- use
SetSliceOffset()
to set the offset of all views to the position of the corresponding Fiducial node (except for the one where the cursor is)- for the views from the second image, first transform the corresponding fiducial nodes with the transformation and then set the offsets)
One small feature that I included is that when the user double clicks on a view, e.g., the Red one, a compare view opens with the Red and Red+ views side by side.