# Seek for quick registration method

**URL:** <https://discourse.slicer.org/t/seek-for-quick-registration-method/24943>\
**Category:** Support\
**Tags:** registration\
**Created:** [August 27, 2022, 7:59am UTC](https://discourse.slicer.org/t/seek-for-quick-registration-method/24943 "2022-08-27T07:59:46Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![whu](https://avatars.discourse-cdn.com/v4/letter/w/7ab992/32.png) [@whu](https://discourse.slicer.org/u/whu)\
**Post date:** [August 27, 2022, 7:59am UTC](https://discourse.slicer.org/t/seek-for-quick-registration-method/24943/1 "2022-08-27T07:59:46Z")

</div>

Dear All,

Here I got the EM tracker, a STL format Geometric model and corresponding physical object.

I want to get three points, both with the EM positon and the Slicer posiontion information.

As to the tutorial in IGT, we can compute a Rigid Transform.

Can this kind of methond used to registration the model and the physical object ?

 ![image](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/7/c/7c512944791179ad9f535bd63f0368358ad87ebc.jpeg)

The IGT landmark registration [Microsoft OneDrive - Access files anywhere. Create docs with free Office Online.](https://1drv.ms/p/s!AhiABcbe1DBygcAwmU7_GDzj4iGxWg) may not be operated easily.

Thanks…

---

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [August 27, 2022, 10:41pm UTC](https://discourse.slicer.org/t/seek-for-quick-registration-method/24943/2 "2022-08-27T22:41:25Z")

</div>

The landmark registration tutorial that you have linked is good. We have completed it with dozens of students in our bootcamps over the years without any issues. If you have any specific questions or unclear steps then let us know.

---

<div class="post-metadata">

**Author:** ![whu](https://avatars.discourse-cdn.com/v4/letter/w/7ab992/32.png) [@whu](https://discourse.slicer.org/u/whu)\
**Post date:** [August 29, 2022, 2:21pm UTC](https://discourse.slicer.org/t/seek-for-quick-registration-method/24943/3 "2022-08-29T14:21:00Z")

</div>

Thank you very much.  
As to the real application, I just want to make the EM tracker（on the physical model） registrated to the virtual Needle( on the CG model in Slicer)， like other IGT example below.  
 ![image](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/f/1/f16c2767c8157e44a8527ed3d661e4b952e6ae3f.jpeg)

The linked steps seem perfect, but how to load the video ?  
 ![image](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/0/1/01979ff6838f05e6b61f0303679bef45c4cd5be5.jpeg)

Maybe I just to compute the transform and change them like this ?  
 ![image](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/f/4/f43fbb6f88b472a961be54656d514c762dbaca1b.png)

fused…

🙏

---

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [August 29, 2022, 4:06pm UTC](https://discourse.slicer.org/t/seek-for-quick-registration-method/24943/4 "2022-08-29T16:06:34Z")

</div>

> [@whu](#):
>
> The linked steps seem perfect, but how to load the video ?

You would normally not record a video if you just want to register a model’s coordinate system to the attached tracking marker’s coordinate system. The video is just added to the tutorial so that you can complete a registration workflow without having access to real hardware. If you load the mrb file that comes with the tutorial then you should will see the video (you can show the “Sequence browser” toolbar to see play/pause button for replaying the sequence).

---

<div class="post-metadata">

**Author:** ![whu](https://avatars.discourse-cdn.com/v4/letter/w/7ab992/32.png) [@whu](https://discourse.slicer.org/u/whu)\
**Post date:** [August 30, 2022, 1:19am UTC](https://discourse.slicer.org/t/seek-for-quick-registration-method/24943/5 "2022-08-30T01:19:19Z")

</div>

I just want to get a simple and easy UI for registration, maybe a result transform is ok.  
Let uers choose three markup points pair, one from the em tracker position（physical）, and one from the cg model（slicer）, after this we may compute the transform.  
Using the transform above（maybe more then one transform, we just need the result）, the real time em position to the cg model will be ok.  
Is this right ?

---

<div class="post-metadata">

**Author:** ![jay1987](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/jay1987/32/16183_2.png) [@jay1987](https://discourse.slicer.org/u/jay1987)\
**Post date:** [August 30, 2022, 2:23am UTC](https://discourse.slicer.org/t/seek-for-quick-registration-method/24943/6 "2022-08-30T02:23:47Z")

</div>

in my opinion , it needed to fix 3 position in em tracker(physical),after that , we only need to position 3 point in the cg model(slicer), then we can use landmark to perform a registration.

---

<div class="post-metadata">

**Author:** ![whu](https://avatars.discourse-cdn.com/v4/letter/w/7ab992/32.png) [@whu](https://discourse.slicer.org/u/whu)\
**Post date:** [August 30, 2022, 2:26am UTC](https://discourse.slicer.org/t/seek-for-quick-registration-method/24943/7 "2022-08-30T02:26:09Z")

</div>

yes，maybe we need a simple operation for this.

---

<div class="post-metadata">

**Author:** ![whu](https://avatars.discourse-cdn.com/v4/letter/w/7ab992/32.png) [@whu](https://discourse.slicer.org/u/whu)\
**Post date:** [September 2, 2022, 2:20am UTC](https://discourse.slicer.org/t/seek-for-quick-registration-method/24943/8 "2022-09-02T02:20:47Z")

</div>

> [@lassoan](#):
>
> You would normally not record a video if you just want to register a model’s coordinate system to the attached tracking marker’s coordinate system.

How to finish this kind of work without a video, I get the tracker connected.  
“from” where ? from what ?  
"to " can be reagarded as the markup points.  
thanks.

---

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [September 3, 2022, 3:12pm UTC](https://discourse.slicer.org/t/seek-for-quick-registration-method/24943/9 "2022-09-03T15:12:27Z")

</div>

> [@whu](#):
>
> I just want to get a simple and easy UI for registration, maybe a result transform is ok.  
> Let uers choose three markup points pair, one from the em tracker position（physical）, and one from the cg model（slicer）, after this we may compute the transform.  
> Using the transform above（maybe more then one transform, we just need the result）, the real time em position to the cg model will be ok.

Yes, exactly it is as simple as that.

Of course in reality there are small things like you first need to calibrate your stylus (so that you collect points at the tip of the stylus and not at the center of the marker), but that has to be done only once. You only need to think a bit when you set up your transform tree (what transform is applied to what node), but again that’s something that you need to understand only once and can be done by a couple of clicks in the GUI (and then you can save it in the scene). Once you have your complete workflow, you can further automate everything using Python scripting, so users only need the minimum number of clicks. This last layer of automation is not done in Slicer core or general-purpose extensions, such as SlicerIGT, because each workflow is slightly different (how many tools you have, how you attach trackers on them, what coordinate system you choose as the renderer’s world coordinate system, if you use imaging, surface scanning, etc.).

> [@whu](#):
>
> Let uers choose three markup points pair, one from the em tracker position（physical）, and one from the cg model（slicer）, after this we may compute the transform.

Things are not quite as simple as this. Even in the simplest scenario you have at least these coordinate systems:

- Tracker (tracker’s world coordinate system)
- Reference (coordinate system of the sensor that is attached to the patient)
- Stylus (coordinate system of the sensor that is attached to the stylus)
- StylusTip (coordinate system aligned to the tip of the pointer)
- Model (coordinate system where points of the “cg” model are specified)

Your goal is to compute ModelToReference, so you need to compute the transform from “Model” to “Reference”, therefore the “From” point coordinates must be specified in the Model coordinate system (you can get them by simply placing markup points on the model) and the “To” point coordinates must be specified in the Reference coordinate system (you can get them by sampling the StylusTipToReference transform).

I would recommend to make a drawing of all coordinate systems and transforms that you compute between them. [SlicerIGT](http://www.slicerigt.org/wp/user-tutorial/) and [PerkLab bootcamp](https://github.com/PerkLab/PerkLabBootcamp/tree/master/Doc) tutorials should help you to understand the process.

---

<div class="post-metadata">

**Author:** ![whu](https://avatars.discourse-cdn.com/v4/letter/w/7ab992/32.png) [@whu](https://discourse.slicer.org/u/whu)\
**Post date:** [September 4, 2022, 11:46am UTC](https://discourse.slicer.org/t/seek-for-quick-registration-method/24943/10 "2022-09-04T11:46:35Z")

</div>

> [@lassoan](#):
>
> and the “To” point coordinates must be specified in the Reference coordinate system

Here I don’t know how to get the coordinate positions through the gui, though the transform can be seen from the Transform module, but there is no “record the current” transform button(that is just imagination).  
so, just one step left…

---

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [September 4, 2022, 12:26pm UTC](https://discourse.slicer.org/t/seek-for-quick-registration-method/24943/11 "2022-09-04T12:26:13Z")

</div>

You can record the current stylus tip position in “Fiducial registration wizard” module’s “Place fiducials using transforms” section.

---

<div class="post-metadata">

**Author:** ![whu](https://avatars.discourse-cdn.com/v4/letter/w/7ab992/32.png) [@whu](https://discourse.slicer.org/u/whu)\
**Post date:** [September 8, 2022, 4:27am UTC](https://discourse.slicer.org/t/seek-for-quick-registration-method/24943/13 "2022-09-08T04:27:58Z")

</div>

I tried it, and seemed that it worked, but still need some help.  
In the slicer scene, a model loaded, EM tracker loaded, as below:

 ![result2](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/6/e/6e6379a032f31a0cf28275b43ec73384e6aa6321.png)  
In the left view, LV simulator is the model;Locator\_probetotracker is the “needle” model that can move freely ; the LinearTransform is added mannuly intened to receive the registration transform.  
After using the Fiducial registration wizard module, “From” is the markup in the LV simulator; “To” using the transform as [quote=“lassoan, post:11, topic:24943”]“Place fiducials using transforms” section[/quote]  
The result as below:  
 ![result1](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/0/4/043617e3ba9dadfd4cb1cb09aad695ea40e0be6a.png)  
Here I meet some questions：  
1）RMS Error maybe too high ? though for three point-pair …  
2) How to change the

> [@lassoan](#):
>
> transform tree

as in the firt image, in order to fill with the expection as

> [@whu](#):
>
> As to the real application, I just want to make the EM tracker（on the physical model） registrated to the virtual Needle( on the CG model in Slicer)， like other IGT example below.

Let the needle follows the EM tracker.

Thanks for any advices.
