6.3. Point-Based Registration

6.3.1. Examples

../_images/Matt_CT_Points.png
../_images/Matt-World-Points.png

Fig. 6.1 Figure 1: (top) At least 3 points are selected in pre-operative data such as MR/CT. (bottom) The same 3 points are measured in physical space, using a coordinate measuring device, such as a tracker.

Here’s an example of how markers are used for point-based registration in neurosurgery, from the Mayfield Brain & Spine YouTube channel:

and another example from CASCination in abdominal surgery, on the ECALS 2014 channel <https://youtu.be/i8akai5SCZk>:

The CASCination system uses a long pointer, picking 4 points on the liver - see supplementary material in [Conrad2016], namely left/middle hepatic vein drainage, main portcal vein drainage, insertion of fulsiform ligament, insertion of gallbladder dome. Also see [Prevost2019].

6.3.2. Papers

The point-based alignment algorithm, often called the Orthogonal Procrustes Algorithm, can be solved in a variety of manners. In the research literature, most people reference:

and [Eggert1998] suggests there is not much difference between them.

The above papers all assume isotropic, independent fiducial localisation error. There is a body of work looking at error propagation in cased where this is not valid, e.g. [Batchelor2000], [Wiles2008], [Moghari2009], [Danilchenko2010], [Thompson2013].

6.3.3. Algorithm

Please see the above papers for the maths. The method from [Arun1987] can best seen in code in SciKit-Surgery.

6.3.4. Fiducial marker types

Accuracy is determined by the fiducial marker type, and the ability to accurately measure fiducial location in the OR.

6.3.5. Typical Performance

Pros:

  • Easy to implement for rigid

  • Robust. Need 3+ points. Algorithm won’t randomly “fail” as such

  • Easy to validate, on a phantom, and get approved, as the method transfers well from phantom to clinical cases

  • With a clear protocol, less user dependent than manual registration

Cons:

  • Not suitable for non-rigid alignment

  • Need rigid landmarks, so most suitable for neurosurgery or orthopedics

  • Surgery is often draped, might be difficult to use markers in practice

  • Needs case by case analysis of registration errors, as errors are very shape dependent

Accuracy:

  • Neurosurgery: 0.5-1mm on Fiducials, 0.5-4mm on Targets, e.g. [Edwards2000].

  • Neurosurgery: Similar range of errors, and a good explanation of FLE, FRE, TRE etc. [Shamir2009].

  • Liver surgery: Time was median 8:50 min. Accuracy (FRE), 14.0mm to 9.2mm, mean 12.8mm [Prevost2019].

6.3.6. Notebooks

Have a play with the provided Jupyter Notebooks.

6.3.7. Python Implementation

SciKit-Surgery provides the main algorithms:

# Note that the scikit-surgery libraries provide point-based registration using Arun's method and matrix utilities.
import sksurgerycore.algorithms.procrustes as pbr
import sksurgerycore.transforms.matrix as mu

so Arun’s algorithm is here

and can be installed with:

pip install scikit-surgerycore