Vurtigo screenshot Vurtigo is a four-dimensional (3D + time) real-time visualization software for guiding cardiovascular interventions. It is designed to be part of a pipeline that can connect it to a magnetic resonance imaging (MRI) scanner, actively tracked catheters, and navigational devices.


We thank Graham A. Wright, the senior scientist who has guided this project from its inception. We would also like to thank all previous contributors to Vurtigo, in particular Stefan Pintilie who designed version 1.0, Roey Flor who subsequently led development through version 3.0, and Perry Radau, who provided technical guidance through the development of Vurtigo to the release of version 3.1.

Vurtigo has been made possible through the financial support of the Strategic Innovation Fund, the Canadian Foundation for Innovation, the Ontario Research Fund, and the Canadian Institutes of Health Research. Thanks also to Percept Imaging, for their assistance in preparing the latest release.

The Vurtigo Team

Bonny Biswas

Sebastian Ferguson


If you use Vurtigo in your academic research, please cite Vurtigo as described here.

A docker image is currently available for Vurtigo 3.2 from dockerhub.

Release Notes 3.2.0

This has only been tested on Linux systems with an X server

Install instructions can be found here. Warranty information is found here.

Artificial EP dataset with electrophysiology points, left ventricle mesh, and preclinical short- and long-axis cine MRIs (DICOM format) that can be loaded into Vurtigo


Vurtigo Features include:

Extensible Plugin Architecture The Vurtigo core provides support for rendering and controlling objects. Plugins provide the main features, input/output, etc. Plugins can be licensed separately (SDK to be released soon)

3D/4D Roadmaps Load and navigate multiple DICOM datasets; supports cine datasets

Multiple Modality Datasets MR, CT (DICOM images with geometry information), JPEG/PNG

DICOM Database Storage of DICOM images. Query and retrieve images from remote DICOM nodes

Volume Rendering Configurable rendering modes and properties, GPU acceleration

Surface Rendering Can be used to display segmented datasets

Mesh Painting Paint a surface using data from points

Configurable Visualization Layout 3D Only, 2D + 3D views, 2D only, multiple 3D windows

3D Points Create, manipulate and filter (based on configurable properties) 3D point clouds

Scanner Communication Can connect to real-time scan information via the Geometry Server (included) or OpenIGTLink. The Geometry Server can work with compatible scanner console software such as’s RTHawk Research (not included)

Real-time Imaging Display and control multiple interactive real-time imaging planes within the 3D view

Catheter Visualization Display multiple actively tracked catheters in 3D view

Catheter Following Update real-time imaging planes or static roadmap planes based on catheter position

Capturing Results Save screenshots and image streams

Interactive Landmark Registration Rigid, Affine, Similarity, and Thin Plate Spline landmark-based registration

Extensible Object Framework Define new types of objects for Vurtigo to render

2D Plots Framework for creating and displaying interactive 2D graphs

ROI Contours Draw contours on images or surfaces

Mesh tool Create a surface from contours

Mask tool Create a masked volume from contours

Import tool Import images, meshes, and volumes from external formats


Install instructions

The current version of Vurtigo is available as docker image for Linux systems with an X server.

  • Install docker via the repository method
  • Add your account to a docker group so you don’t need to run docker with sudo as described here
  • If you are using the nvidia proprietary drivers, install and set up the nvidia container toolkit to work with docker
    • We recommend using graphics drivers that are maintained by your system (rather than downloading them directly from the vendor)
    • On Ubuntu, for example, you would do this by launching “Software & Updates” and selecting a graphics driver from the “Additional Drivers” tab
  • Make sure to restart the docker daemon after configuration changes sudo systemctl restart docker

Install x11docker:

git clone
cd x11docker
sudo ./x11docker --install

This tool simplifies display sharing for containerized applications and manages a home directory so Vurtigo settings and storage persist across sessions.

docker pull labonny/vurtigo:v320
  • Run it with x11docker (remove the “–runtime=nvidia” if you are not using the nvidia runtime drivers): x11docker -m --gpu --runtime=nvidia --network --xauth=trusted -- -p 1777:1777 -p 18946:18946 -- labonny/vurtigo:v320
  • To allow vurtigo to access folders in your host machine, you can share them using the “–share” option, for example: x11docker -m --gpu --share /home/myname/Data --runtime=nvidia --network --xauth=trusted -- -p 1777:1777 -p 18946:18946 -- labonny/vurtigo:v320


Vurtigo is currently available under the Modified BSD License. Older versions of Vurtigo may continue to be used under the GNU Lesser General Public License v2.1.

There is no warranty for Vurtigo.

  1. The program and associated files are provided “as is” with no express or implied warranty. You agree to hold Sunnybrook Research Institute and its employees and students, as well as all involved in the development of the system, not liable in the event of damages resulting from the use of this product.

  2. You understand that Sunnybrook Research Institute cannot provide support for this product. While we may release future, updated versions of the software and fix reported bugs, we are not obligated to do so. You are welcome to contact us with questions and bug reports, which we will address as we have time.

By the installation and/or use of Vurtigo, you agree to the following:

Vurtigo has been designed for research purposes only and has not been reviewed or approved
by the Food and Drug Administration or by any other agency. YOU ACKNOWLEDGE AND AGREE THAT
Software in compliance with all applicable governmental laws, regulations and orders, including
without limitation those relating to export and import control.

Vurtigo is not intended to replace the skill or judgment of a qualified medical practitioner
and should only be used by those who have been appropriately trained in its functions,
capabilities and limitations. You agree to hold harmless, indemnify and defend Sunnybrook
Research Institute from and against any losses, damages, fines and expenses (including
attorneys' fees and costs) arising out of or relating to your use of Vurtigo. THE ENTIRE

Vurtigo uses Qt, VTK, CTK, DCMTK, ITK, and OpenIGTLink under their respective open-source licenses, available under the installation directory.

Minor modifications were made to two libraries to allow them to build in the Vurtigo environment. These are available on github: VTK, CTK.


When citing Vurtigo in your papers or presentations, please refer to the first paper in this list.

Radau PE, Pintilie S, Flor R, Biswas L, Oduneye S, Ramanan V, Anderson KA, Wright GA. VURTIGO: Visualization platform for real-time, MRI-guided cardiac electroanatomic mapping, Proceedings of Statistical Atlases and Computational Models of the Heart workshop (MICCAI workshop), Toronto, Sept. 22, 2011, View PDF

Pintilie S, Biswas L, Oduneye S, Anderson KA, Wright GA, Radau PE. Visualization platform for real-time, MRI-guided cardiac interventions, Proceedings 19th Scientific Meeting, International Society for Magnetic Resonance in Medicine, Montreal, May 7-13, 2011, Abstract#6887.

Pintilie S, Biswas L, Anderson KA, Wright GA, Radau P. Visualization software for real-time image-guided therapeutics in cardiovascular interventions, Medical image computing and computer-assisted intervention (MICCAI): Cardiac Interventional Imaging and Biophysical Modeling Workshop, London, England, Sept.20, View abstract and PDF, 2009.


You can extend Vurtigo by building your own C++ plugins using the SDK docker image. This image includes Vurtigo, the Geometry Server, and the developer tools needed to build plugins. Installation requirements are the same as for the main image.

Download the image using: docker pull labonny/vurtigo-sdk:v320

The SDK contains a sample plugin, “Camera Motion”, in the home directory “/home/vdev/CameraMotion”. A separate “Hello World” plugin is available on github. Follow the provided README to build these.

See the Vurtigo Design paper for a high-level description of Vurtigo’s design and plugin architecture.

Release 3.2.0 Notes

  • Configurable catheter tip can now be defined by two tracked locations and a tip offset
  • Catheter xml movie recording
  • Isosurface generation from volumes
  • “Rotational Tracking” mode to follow a catheter with a plane along its tip
  • Optional depth-peeling setting
  • Import manager with support for vtk surfaces (.vtp/.vtk) and external volume formats (NIFTI, MetaImage, SLC, and NRRD)
  • MetaImage exporter for volumes
  • “Thresholded Tracking” mode to follow a catheter once it has moved a minimum distance
  • Plugin update rate now reported in frame rate label
  • Volume scrolling modifiers to allow different scroll step distances
  • A Matrix Object has been added to Vurtigo
  • An option has been added to invert a volume’s intensity values
  • Minimum intensity projection and additive blend modes have been added to the volume raycasting options
  • Contours can now be saved
  • Improved transparency handling for planes
  • Catheter data recordings can now include timestamps
  • Displaying user-friendly object type names
  • Most settings now consolidated into a single dialog
  • Improved point set editing performance
  • Catheter display properties can now be saved as a preference
  • Improved performance of catheter display and recording
  • Volume crop box now applies to planes and isosurfaces, and can be reset
  • Improved performance for in-procedure mesh painting
  • Expanded DICOM support for different modalities and vendors
  • Handling image volumes with negative intensity values
  • Improved volume raycasting of greyscale images loaded through the image stack loader
  • Image stack loader workflow improvements: warns user if volume does not contain enough slices, allows cancelling
  • Landmark registration now creates new point and slice objects instead of editing the source objects
  • Hang when editing piecewise function
  • Crash when attempting to volume-render a slice
  • Catheter History does not save physiology data
  • Crash when deleting a plane that is being tracked by the CathTracking plugin
  • Crashes and freezes when changing information in the GeomServer plugin while it is connected
  • Permanent objects deletable in object browser
  • Objects can be overwritten or fail to save into a scene
  • Match Triggers option crashes on some volumes
  • Segmentation fault when cancelling a Save Object operation
  • Frame rate inaccurate
  • Conflicts and duplicate handling of user interaction with camera and objects
  • Minimum plugin update interval is incorrect
  • Race condition in object manager can cause deadlock
  • Synchronized scrolling planes can cause a volume plane to disappear
  • Using the Mask or Mesh tool deselects all 3D windows
  • Registration fails when the source object is a polydata
  • Maximum window size in window/level dialog is off by one
  • Cancelling an EP mesh color change results in a black mesh
  • Color transfer function issues: attempting to use a newly created ctf results in garbage, duplicate signal-slot connections result when editing a ctf in use, values are not set correctly when using setColorFunction
  • Landmark registration does not work correctly for slice objects
  • Using the Camera interpolation plugin to “Wobble” the view while the geometry server is connected can cause a crash
  • Volume meta-information is not saved to the vurtigo object format
  • Not all DICOM files are supported
  • The transformation matrix for external volume formats, if one exists, is ignored
  • “Checkerboard” stereo rendering crashes on some systems
  • EP Mesh “Show EP Data” option does not work
  • 3D Point object table does not update automatically when the object changes


My current local time is .