Slicer3:BrainlabModule
Contents
Aim
Brainlab (http://www.brainlab.com) offers a customized client/server architecture called VectorVision Link (VV Link) to enable the communication between the VectorVision Cranial (VVC) system and external IGT applications. The VV Link, open but not free, allows bi-directional real-time data transfer such as image data sets and tool positions. We propose to create a comprehensive workflow to interface 3D Slicer to Brainlab system and to use it for research. Specifically, we create simplified steps for neurosurgeons to use Slicer to perform some research in DTI visualization in OR while Brainlab is used as the primary navigation tool. Here is the scenario:
Brainlab system will run as a standalone application; we won't install any software and hardware on the Brainlab computer and won't affect its FDA status either. Slicer runs on a different computer. These two computers will be connected to each other using a network or router. During surgical procedures, the Brainlab sends real-time tracking data and/or images to Slicer. The tracking information may be used to seed dynamic DTI visualization in Slicer.
Research Plan
Our workflow will include the following steps:
- Load a scene into Slicer
- Set up connection between Brainlab and Slicer
- Navigate with DTI visualization in Slicer as the surgeon performs tracking with Brainlab
We will implement the workflow by developing a Slicer module called BrainlabModule. This interactive module uses OpenIGTLink (http://www.na-mic.org/Wiki/index.php/OpenIGTLink) for data communication between Brainlab and Slicer, and uses Fiducial, DTMRI and FiducialSeeding modules for DTI visualization. Also, it uses existing Slicer functions to load MRML scenes.
The development of BrainlabModule will be completed in two phases. In the first phase, a simulator will be created. That is, a sequence of synthetic tracking points (not from Brainlab system) will be streamed to Slicer where fiducial-driven DTI visualization will be performed. In the second phase, a real Brainlab system will be needed to test the entire workflow. Upon completion, both modes (Simulator and Brainlab) will co-exist in the module; the user may choose which mode to execute.
Both modes are accompanied by training materials and documentation to ensure usability.
Comprehensive Tasks Needed to Accomplish the Aim
- BrainlabModule on simulation
- Tutorial writing
- BrainlabModule with a real Brainlab system through VV Link
- Tutorial writing
- BrainlabModule with a real Brainlab system through OpenIGTLink
- Tutorial updating
Design of Module
- Version 1 of workflow (as of 04/02/2010)
- A working version of Connect Step (as of 04/09/2010)
- Version 2 of workflow (as of 04/16/2010)
- Version 3 of workflow (as of 04/30/2010)
- Version 4 of workflow (as of 05/14/2010)
Key Personnel
Haiying Liu
Noby Hata
Ron Kikinis
Progress
- Week of 05/31/2010
- Work DONE:
- The workflow of BrainlabModule is implemented based on widgets. Added auto switch from first page (loading) to second page (connection).
- Now the tracking simulation data points are loaded from a file. Added another option to make tracking simulation -- generate random or circular points from memory.
- Added a way to check the data streaimg status inside BrainlabModule rather to check in Transform module.
- Added a Frequency entry to let user specify how fast (frames per second) the tracking data should be streamed.
- When in the state of navigation, turn on cross hair (slice intersections) on 2D slice windows by default.
- When in the state of navigation, update slices of all three orthogonal orientations (Axial, Sagittal and Coronal).
- Fixed bugs in terms of multi-threading.
- Made the module visible in the nightly build.
- Made Four-up Layout as the default viewing layout.
- Updated the help text.
- To do list:
- Work on the feature requests.
- Work DONE:
- Week of 05/10/2010
- Work DONE:
- The module has been demo-ed at the IGT group (Noby's group) meeting.
- The module has been reviewed with Noby and the Feature Requests section has been updated.
- Source code of this module has been checked into the Slicer trunk.
- The Connect Step has been updated: 1) Added an option to generate random tracking data points in the memory; 2) Added Frequency entry which allows user to specify how fast the data streaming s/he wants to be; and 3) Added a status reporting for the network connection.
- To do list:
- Work on the feature requests.
- Work DONE:
- Week of 04/26/2010
- Work DONE:
- A new dataset for tracking simulation has been generated.
- Access to OpenIGTLink module is now through C++ code rather on interface.
- Re-design of Connect step. Major changes: 1. Moved Port and Server entries under Brainlab option; 2. Removed OpenIGTLinkIF button since it's no more needed.
- Re-implementation of Navigate step. Major changes: 1. Added Slice Control so that 2D Slice(s) can update automatically following the seeding fiducial; 2. Added Data Module button so that the user can jump to MRML tree to drag the seeding fiducial under the transform node of the tracking simulation.
- To do list:
- Demo the module at the IGT group (Noby's group) meeting to get comments from the team.
- Enhance the module following the team's comments.
- Work DONE:
- Week of 04/12/2010
- Work DONE:
- Since Brainlab changed its letter from BrainLab to Brainlab. Our module has been changed from BrainLabModule to BrainlabModule. This involved many changes in the module, including titles, file names, class names and function names. The new module compiles without any errors.
- The Load Step has been implemented.
- The Navigate Step has been implemented.
- Bug fixing with the thread, which handles the network communication between BrainlabModule and the tracking source. Now the thread can be started and stopped anytime we wanted.
- The steps inside the workflow of BrainlabModule may be re-ordered as follows: Load, Connect and Navigate.
- The workflow is now working with simulator.
- To do list:
- Access to OpenIGTLink module needs to be programmatically through C++ code.
- Dragging a fiducial list node into the child list of a transform node needs to be implemented in C++.
- A better version of data for tracking simulation needs to be generated to get better visualization of DTI tractography.
- Work DONE:
- Week of 04/05/2010
- Work DONE:
- The user interface (GUI) has been enhanced and implemented for the Connect Step where the network communication between BrainlabModule and a tracking source is going to be set up. Now we have a working version of Connect Step for tracking simulation. After few configurations, simulated tracking data will be streamed to OpenIGTLink module in Slicer once the Connect button is clicked. The data streaming process may be stopped by clicking the Close button.
- Since the connection between BrainlabModule and the tracking source is always on, it's a good idea to have a separate thread to handle the network communication. This will improve the Slicer response to the user interaction. The thread will be stopped by clicking the Close button in the interface.
- A stream of simulated tracking data points may be generated inside memory or read from a file. The file IO is chosen since in the future tracking data sets of real surgical cases, which are usually saved in a file, may be used for post-surgical re-examination or just demonstration only.
- To do list:
- OpenIGTLink module is now configured through its interface. This configuration will be required to be implemented programmatically in the C++ code of BrainlabModule.
- Implementation of Load Step and Navigate Step will be executed next week.
- Work DONE:
- Week of 03/29/2010
- Ron, Noby and Haiying met at Ron's office to discuss the specs of the module and time frame for implementation.
- Haiying completed the workflow.
Dependency
The following modules are required for Brainlab module to work properly:
Fiducial
OpenIGTLink
DTMRI
FiducialSeeding
Tutorials
Feature Requests
The following features will be explored or added after the dicussion between Noby and Haiying on May 3, 2010:
- The workflow of BrainlabModule is implemented based on widgets. Explore the possibility of auto switch from page to page (from left to right).
- Now the tracking simulation data points are loaded from a file. Add another option to make tracking simulation -- generate random or circular points from memory.
- Add an entry to let user specify how fast to stream tracking data out.
- Explore a way to check the data streaimg status inside BrainlabModule rather to check in Transform module.
- When in the state of navigation, turn on cross hair on 2D slice windows by default.
- When in the state of navigation, use the Four-up Layout as the default viewing layout.
- When in the state of navigation, we need slice update of all three orthogonal orientations (Axial, Sagittal and Coronal).
- Add virtual needle (e.g. locator).
- Add tip offset with trajectory.
- Add flythrough view along the virtual needle.
--Hata 17:37, 3 May 2010 (UTC)
- drive the orghogonal slices, with cross-hair marker. The cross-hair should indicate the locations of the slicer of the other two slices.
- Ability to draw foot print (will explain)
- Beep in the foot prints, or our any arbitary chosen area
- Ability to provide endoscopic view