Technical Information
Contents
Technical information of 4D Ultrasound
You have to understand the following steps to use 4DUltrasound
- Fullfill the requirements
- Check out code and build
- Prepare for use
- Understand how to use 4DUltrasound Tutorial
Requirement
In this section you will find requirements to run the software
Software
- Compiled version of Slicer 3 (You must compile Slicer on your own. Follow the build instructions here )
- Compiled version of VTK (Provided by Slicer 3 in the "
Slicer-lib/VTK-build
" directory) - Source Code of OpenIGTLink (Provided by Slicer 3 in the "
Slicer-lib/OpenIGTLink
" directory) - Compiled version of OpenIGTLink (Provided by Slicer 3 in "
Slicer-lib/OpenIGTLink-build
" directory)
Modifications
- OpenIGTLink Slicer Module:
- Open the file vtkIGTLToMRMLImage.cxx in the source directory of the OpenIGTLinkIF module
- Search for "crc" in this file -> You hit find the following lines
// If you want to skip CRC check, call Unpack() without argument.
int c = imgMsg->Unpack(1);
- Change the last line to:
int c = imgMsg->Unpack();
- Recompile the OpenIGTLink Module
- Change to the
Slicer-build
directory and type$make
- Change to the
- OpenIGTLink:
- Open the file
igtlMessageBase.cxx
in the "Source" directory of OpenIGTLink - Search for "crc" -> You will hit the following line
igtl_uint64 crc = crc64(0, 0, 0LL); // initial crc
- Comment out this line ->
// igtl_uint64 crc = crc64(0, 0, 0LL); // initial crc
- Search for the next "crc" -> You will hit this line:
h->crc = crc64((unsigned char*)m_Body, GetBodyPackSize(), crc);
- Comment out this line ->
// h->crc = crc64((unsigned char*)m_Body, GetBodyPackSize(), crc);
- Recompile OpenIGTLink
- Change to the OpenIGTLink-build directory and type
$make
- Change to the OpenIGTLink-build directory and type
Hardware
a) Conventional computer with GPGPU graphics card and video capture board b) S-Video connection from US machine to Computer to transfer video information c) US machine d) Tracked US (2D US transducer with attached tracking sensor) e) Tracked surgical instrument f) Magnetic field generator of the tracking system g) EM tracker base station to control and to connect each tracking component h) Serial connection between EM tracker and computer to transfer position and orientation information.
- NDI Aurora Tracker [1]
- 2 * 6 DOF Sensors
- 1 Sensor attached to the ultrasound probe
- 1 Sensor can be used to simulate a tracked surgical instrument
- 2 * 6 DOF Sensors
- Ultrasound machine with Analog video output
- Frame Grabber Card
The System has successfully been test with the following 2 frame grabber cards:
- Hauppauge Impact VCB Model 558 [2]
- Kuroutoshikou KRDM-CX23883
- Optional: nVidia Cuda compatible graphics card
Hardware Setup
Tracker attached to ultrasound transducer
Build Instructions
It is highly recommended to have a compiled version of Slicer and to have good knowledge about cmake.
A video of the build process can be found here
- Check out 4D Ultrasound from http://svn.na-mic.org/NAMICSandBox/trunk/4DUltrasound
- Configure via ccmake (version > 2.6) in your build directory
You need a compiled version of VTK + OpenIGTLink as well as the source code of OpentIGTLink
If you know how to do this, skip the next steps and procede with Compile
- Make a new directory in with the name "Build" in the 4DUltrasound dir:
.../4DUltrasound$ mkdir Build
- Change into the Build directory
.../4DUltrasound$ cd Build
- Execute ccmake in this directory with the parent directory as parameter
.../4DUltrasound/Build$ ccmake ../
If ccmake (version > 2.6) is not installed in your system: the executable can as well be found in: .../Slicer3-lib/CMAKE-build/bin/ccmake
- Type "c" to start the configuration -> You will receive an error message that VTK was not found -> Type "e" to exit the help message
- Change the cursor to the variable with the name "VTK_DIR" and hit ENTER
- Fill in your VTK-Build directory and hit ENTER (if you have a compiled version of Slicer you can use: .../Slicer3-lib/VTK-build )
(In Ubuntu you must provide the absolute path no relative path will work)
- Hit "c" to start the configuration
-> If you receive a warning, ignore it an hit "e" -> hit "c" again -> hit "e" to ignore the next warning -> Fill in the VTK-Build directory again -> hit "c" again -> Ignore the Integer-Type Error hit "e" again
- Hit "c"
- Enter the path to the directory of the compiled version of OpenIGTLink at the OpenIGTLink variable
- Enter the path to the directory of the OpenIGTLink source code at the OPENIGTLINKSOURCE variable
- Hit "c"
- Set "BUILD_SHARED_LIBS" to OFF
- Hit "g" to generate the Make files
- Make a new directory in with the name "Build" in the 4DUltrasound dir:
- Compile 4D Ultrasound: Type $ make in your build directory
.../4DUltrasound/Build$ make
Preparation to use 4D Ultrasound
Tutorials how to prepare 4D Ultrasound for use can be found here: 4DUltrasound_Preparation_to_use
Running 4D Ultrasound
Here you can see a video tutorial on how to use the software: [3]
You need a working version of Slicer with OpenIGTLink and you must
- Copy "CalibrationFile.txt" from
YOUR_SOURCE_DIR
toYOUR_BUILD_DIR/bin
- Run Slicer
- Add an "activer Server Connector" in the OpenIGTLink module which is waiting for data at port 18944
- Run 4DUltrasound on the same machine you run Slicer
$YOUR_BUILD_DIR/bin/4DUltrasound -c CalibrationFile.txt -gf -tu
Commandline Options
Command | Alternative | Description |
---|---|---|
--calibration-file xxx | -c xxx | Specify the calibration file (mandatory) |
--grab-ultrasound-frames | -gf | Grab ultrasound frames from the capture board |
--track-ultrasound | -tu | Enable ultrasound tracking |
--track-instrument | -ti | Enable instrument tracking |
--simulate-instrument | -si | Simulate instrument |
--get-calibration-data | -gcd | Get calibration data |
--grab-one-frame XXX | -gof XXX | Grab one frame and store as the specified bitmap file |
--verbose | -v | Print more information |
TO DO
Priority | MUST |
---|---|
Priority | SHOULD |
Clean up Code and Make files (Remove unnecessary Koeniginen parts) | |
Automatically copy Calibration file into binary directory | |
Fix compiler checking in cmake | |
Enable differnet video modes and channels in vtkVideo4Linux2 | |
DONE | Outsource OpenIGTLink library |
Priority | COULD |
DONE | Replace SonixGrabber with Ultrasound in source code |
OpenIGTLink test feature | |
Tracker test feature | |
Ultrasound test feature |
Ultrasound device
The ultrasound images are received via a video capture card. Linux uses V4L2 to support the card.
Capture Card - Hauppauge WIN-TV PCI Board ImpactVCB Model 558
- Hauppauge Homepage
- Incoming images are digitized using high quality 4:2:2 (Y:U:V) video sampling
Linux (Ubuntu 8.10 , Fedora 5)
- The card is automatically correct detected. No further configuration needed.
- Linux Driver: Video4Linux2 bt878
- "bt" stands for Brooktree the original Manufacturer. Now bought by Conexant
- The Linux driver (bttv) for the WinTV card is now part of the Linux kernel (version 2.6.xxx and newer).
- Hauppage Linux Information
- Linux installation hints [4]
- Modprobe option # for specific drivers: http://tldp.org/HOWTO/BTTV/cards.html
- The Impact VCB has # 10
- enable kernel module via: "$ modprobe bttv card=10" or add to /etc/modprobe.conf the following line "options bttv card=10 "
- to switch to another card first remove the module via: "$ modprobe -r bttv"
- The card uses NTSC video interlacing per default
Hardware Information
- Channel 3 delivers the s-video signal
- To set the channel add the following at the end of void vtkV4L2VideoSource::InitDevice(void):
int channel = 3;
if (-1 == xioctl (fd,VIDIOC_S_INPUT , &channel))
errno_exit ("VIDIOC_S_INPUT");
- Specific Hardware information: [5] !!be carefull huge page, takes a long time to load!!
Video4Linux2
Video4Linux is part of the Linux kernel since version 2.6.xx
- V4L2 wiki [6]
- API Specificattion: [7]
- xawtv software for video preview from the guy who wrote the bt8xx driver
Old links may soon be dead
- V4L Old wiki
- Link collection for V4L: [8]
- Homepage of the original developer of the bttv driver: [9] Is not up to date anymore
- Old Informaton they might not be be up to date anymore
Contacts
- Christoph Ruetz
Tracking device
We are using a NDI Aurora tracker. Synchrograb includes an NDI tracker class which works out of the box with the Aurora NDI tracker.
Contacts
- Haiying Liu
Calibration
Description: To get the correct information from the ultrasound device it has to be calibrated
Contacts
- Raul San Jose
Information:
- I have serval links and information from Raul on which I have to go through
Slicer
I am using the Slicer development version, i.e. Slicer trunk.
Python Synchrograb Module
I implemented a Pyhton module for Slicer to start Synchrograb. The module can be found in this svn repository. Basically it starts a new shell and calls the Synchrograb binary within this shell. All Synchrograb commandline options are available in the module. So fare it is not part of the Slicer repository.
Volume Rendering
Module VolumeRenderingCuda was used in Slicer for volume rendering. This module has been moved out of Slicer3 trunk and saved in NAMICSandBox/CUDAForVolumeRendering, and is not actively being developed. Now, we should use VolumeRendering module. Updated by Haiying Liu on Oct 30, 2009.
Links
- Sandbox page [10]
- SPL Intraweb web for incoming staff
Infos on loadable Modules
Infos about Executable Modules inSlicer
Subscribe to different meetings
- Journal Club
- 1st Monday Seminar
- Office OPRC
- Radiology Grand Rounds
- Cimit Forum