# 3D Ultrasound Reconstruction with openIGTL (Verasonics & Polhemus)

**URL:** <https://discourse.slicer.org/t/3d-ultrasound-reconstruction-with-openigtl-verasonics-polhemus/32240>\
**Category:** Support\
**Tags:** ultrasound, volume, visualization, 3d-model, volume-rendering\
**Created:** [October 16, 2023, 7:57am UTC](https://discourse.slicer.org/t/3d-ultrasound-reconstruction-with-openigtl-verasonics-polhemus/32240 "2023-10-16T07:57:17Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![ehdrmfdl3648](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/ehdrmfdl3648/32/67040_2.png) [@ehdrmfdl3648](https://discourse.slicer.org/u/ehdrmfdl3648)\
**Post date:** [October 16, 2023, 7:57am UTC](https://discourse.slicer.org/t/3d-ultrasound-reconstruction-with-openigtl-verasonics-polhemus/32240/1 "2023-10-16T07:57:17Z")

</div>

US img: Verasonics 64 LE  
Position Sensor: Polhemus EMT Sensor

Here’s what’s going on

1. made Verasonics’ images available for import in Python.

2. the values of the EMT sensor were imported into Python and a transform matrix was created.

3. successfully sent a random image and transform matrix to 3d slicer (using openIGTL).

4. We can now visualize the random image in real-time at the location. (Volume Rendering)

Here are the results so far

 ![dassafa](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/7/7/771c4b6a90bbb2b74227fd95a5b11f59e89a2343.png)

The result above is a random image I created for a simple experiment, floating in a random space.

By keeping the image the same and varying the transform matrix at 1s intervals, I was able to see the slices move in 3D space.

However, what I want is for the updated slices to continue to stack.

Currently, when a second slice is entered, the first one disappears.

That is, the update is made.

I want the slices to continue to accumulate.

* * *

PLUS is difficult to use because it does not support verasonics devices (I think).

* * *

I Googled a lot of different combinations of words, but never found a clear answer.

However, I’ve seen a few people struggle with loading data from verasonics and polhemus.

If this is you, I can help.  
Contact me at [gu\_hong3648@naver.com](mailto:gu_hong3648@naver.com) and I’ll help you out.

---

<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:** [October 16, 2023, 6:15pm UTC](https://discourse.slicer.org/t/3d-ultrasound-reconstruction-with-openigtl-verasonics-polhemus/32240/2 "2023-10-16T18:15:44Z")

</div>

I would recommend to use the [“Show slice in 3D views” button (eye icon)](https://slicer.readthedocs.io/en/latest/user_guide/getting_started.html#view-data) to display the image slice in 3D instead of using volume rendering for a single slice. Volume rendering is much more expensive and more difficult to display an opaque image.

You can use volume reconstruction module of SlicerIGT extension to “stack” (it is much more complex than that, as images may be oriented arbitrarily) the images into a 3D volume. See step-by-step instructions in [SlicerIGT Tutorial](http://www.slicerigt.org/wp/user-tutorial/) U-34.

Note that the diagonal line (and the gray area at the bottom of the image) indicates that you have not set a correct image width in the OpenIGTLink image header.

---

<div class="post-metadata">

**Author:** ![ehdrmfdl3648](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/ehdrmfdl3648/32/67040_2.png) [@ehdrmfdl3648](https://discourse.slicer.org/u/ehdrmfdl3648)\
**Post date:** [October 17, 2023, 2:46am UTC](https://discourse.slicer.org/t/3d-ultrasound-reconstruction-with-openigtl-verasonics-polhemus/32240/3 "2023-10-17T02:46:24Z")

</div>

i got it!  
i love you

 ![sadsdadsa.PNG](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/4/a/4a8b643039b1d224964c0447ce7ea4626a4f258c.jpeg)

---

<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:** [October 17, 2023, 3:42am UTC](https://discourse.slicer.org/t/3d-ultrasound-reconstruction-with-openigtl-verasonics-polhemus/32240/4 "2023-10-17T03:42:25Z")

</div>

Great! You may consider writing a [“Success story”](https://discourse.slicer.org/c/community/success-stories/29) topic about this (just a few sentences and the image that you included above).

---

<div class="post-metadata">

**Author:** ![jslalu](https://avatars.discourse-cdn.com/v4/letter/j/9fc348/32.png) [@jslalu](https://discourse.slicer.org/u/jslalu)\
**Post date:** [February 20, 2024, 8:23am UTC](https://discourse.slicer.org/t/3d-ultrasound-reconstruction-with-openigtl-verasonics-polhemus/32240/5 "2024-02-20T08:23:44Z")

</div>

Hi, can I use Polhemus EM trackers in SlicerIGT?

---

<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:** [February 20, 2024, 9:06pm UTC](https://discourse.slicer.org/t/3d-ultrasound-reconstruction-with-openigtl-verasonics-polhemus/32240/6 "2024-02-20T21:06:34Z")

</div>

As far as I know, the situation is still the same as described here:

> [@Track images using Polhemus Fastrak electromagnetic tracker](https://discourse.slicer.org/t/track-images-using-polhemus-fastrak-electromagnetic-tracker/7056/6):
>
> I’m not aware of an OpenIGTLink interface for Polhemus. Since cost of development, testing, optimization, maintenance, and support of a new interface would be higher than the cost of an already supported electromagnetic tracker (such as NDI Aurora or Ascension), probably most people end up buying an already supported tracker instead. Surgical navigation users may also end up choosing NDI instead of Polhemus, because NDI appears to be used in many more clinical products. If somebody already has …

---

<div class="post-metadata">

**Author:** ![jslalu](https://avatars.discourse-cdn.com/v4/letter/j/9fc348/32.png) [@jslalu](https://discourse.slicer.org/u/jslalu)\
**Post date:** [February 21, 2024, 1:49am UTC](https://discourse.slicer.org/t/3d-ultrasound-reconstruction-with-openigtl-verasonics-polhemus/32240/7 "2024-02-21T01:49:47Z")

</div>

Thanks for the reply. But I wonder, since we already have a Polhemus tracker, is it possible to implement an OpenIGTLink interface for Polhemus ourselves? Is there a guide for doing this?

---

<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:** [February 21, 2024, 7:49pm UTC](https://discourse.slicer.org/t/3d-ultrasound-reconstruction-with-openigtl-verasonics-polhemus/32240/8 "2024-02-21T19:49:27Z")

</div>

A quick&dirty bridge can be put together in Python, which converts Polhemus VRPN messages (received by some VRPN Python package) to OpenIGTLink messages (sent by [pyigtl](https://github.com/lassoan/pyigtl)).

---

<div class="post-metadata">

**Author:** ![jslalu](https://avatars.discourse-cdn.com/v4/letter/j/9fc348/32.png) [@jslalu](https://discourse.slicer.org/u/jslalu)\
**Post date:** [February 22, 2024, 12:59am UTC](https://discourse.slicer.org/t/3d-ultrasound-reconstruction-with-openigtl-verasonics-polhemus/32240/9 "2024-02-22T00:59:34Z")

</div>

Thanks. Is there any documentation on the definition of the sequence metafile, or any API for programmatically constructing a sequence metafile? We want to write ultrasound images and their corresponding tracker data into a single sequence metafile so that we can VolumeReconstructor command in Plus to reconstruct a 3D image.
