Can SlicerIGT Fiducial Registration Wizard use global coordinates instead of RAS?

Hi everyone!

I am working with a tracked knee model using an NDI camera. I am trying to find the transform between two sets of moving point lists using the fiducial registration wizard. If I move a point in the local/RAS system, the auto-update function works, however, my points move because they are nested under transforms streamed by the NDI camera. I’d like to use the point list’s global coordinate system so that I can auto-update the transform.

Is this possible? Any help is appreciated!

Thanks!

The coordinates are actually always recorded relative to the world coordinate system. You can freely choose what coordinate system you use as “World”, but most often it is the Reference or Tracker. After you compute the transform you can change this.

You can configure Plus Server to send transforms between any two coordinate systems and you can compute derived transforms using Combine transforms module, but often you still have to reorganize the transform tree as you switch between workflow steps. In early phases of a project, when you are still figuring out your workflow, you can do this using the GUI of existing modules. Once you know exactly what you want to do, it makes sense to fully automate your workflow in a custom Python scripted module.

So I have the point lists HexPoints and PortalPoints nested under HexToRef and TibiaToRef transforms which are streamed by the NDI camera. Then I set up the fiducial registration wizard to be the transformation between those point lists. When the HexToRef and TibiaToRef transforms change, it does not trigger the auto-update in the fiducial registration wizard. Any ideas of how to fix this? Here of some pictures of my set up in case that helps.

If you don’t mind writing a few lines of python code, you could add an observer function to any of the transform nodes that you need to trigger the registration update. That function could update the fiducial registration either by calling this module or even using vtkLandmarkTransform directly. This module was not really planned for the use case you are describing. It only updates automatically if the points change.