PlusLib

Getting Started

  • Overview
    • Architecture
      • PlusCommon
      • PlusDataCollection
      • PlusCalibration
      • PlusImageProcessing
      • PlusOpenIGTLink
      • PlusVolumeReconstruction
      • PlusRendering
      • PlusWidgets
    • Supported Platforms
    • Dependencies
    • Design Principles
    • Use Cases
  • Build Instructions
    • Prerequisites
      • Windows
      • Linux (Ubuntu/Debian)
      • macOS
    • Building PlusLib
      • Step 1: Clone PlusBuild
      • Step 2: Create Build Directory
      • Step 3: Configure with CMake
      • Step 4: Build
    • Build Options
      • Application Options
      • Device Support
      • Advanced Options
    • Building PlusLib Standalone
    • Running Tests
    • Build Output
    • Troubleshooting
      • Build Fails with “Cannot find VTK”
      • Long Build Times
      • CMake Version Too Old
      • Git SSL Certificate Errors
      • Windows: MSBuild Not Found
    • Next Steps
  • Quick Start
    • Basic Usage Example
    • Configuration File Example
    • Reading Data from a Device
    • Using Calibration Algorithms
      • Probe Calibration Example
    • Using Transform Repository
    • Logging
    • CMake Integration
    • Next Steps
  • Supported platforms
    • Windows 32 bits
    • Windows 64 bits
    • Windows XP embedded 32 bits
    • macOS
    • Linux

Devices

  • Supported Devices
    • Quick Jump
    • Tracking Devices
      • Optical Tracking
      • Electromagnetic Tracking
      • Other Tracking
    • Ultrasound Devices
    • Video Capture
    • Cameras
    • Sensors
    • Other Devices
    • Virtual Devices
    • Device Configuration
    • Device Development
    • Device Categories Summary

Tracking Devices

  • NDI Vega, Polaris and Aurora pose trackers
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
    • Example configuration file Vega PlusDeviceSet_Server_NDIVega.xml
    • Example configuration file Polaris PlusDeviceSet_Server_NDIAurora_NDIPolaris.xml
    • Example configuration file Aurora PlusDeviceSet_Server_NDIAurora_NDIPolaris.xml
  • NDI Optotrak Certus optical pose tracker
    • Supported hardware devices
    • Supported platforms
    • Installation
      • Install common software
      • Communicating Certus tracker by PCI card
      • Communicating Certus tracker by via ethernet
        • How to set up your PC
        • How to set up the System Control Unit (SCU)
      • Coordinate systems
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_NDICertus.xml
  • Ascension electromagnetic tracking devices (and Ultrasonix SonixGPS)
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
    • Quality values
    • Example configuration file PlusDeviceSet_Server_Ascension3DG.xml
  • Claron MicronTracker optical pose tracker
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_MicronTracker.xml
  • Atracsys
    • Supported hardware devices
    • Supported platforms
    • Atracsys SDK Versions
    • Updating camera firmware
    • Building the Atracsys PLUS support
    • Creating a passive marker geometry
    • Using Atracsys active markers
    • Common Issues
    • Device configuration settings
    • Config File
  • OptiTrack
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Important sections of OptiTrack Motive Documentation
    • Motive File Types
    • Setting up Tracking
    • Device configuration settings
    • Simple Configuration
      • Example configuration file with all rigid bodies saved in the Motive profile xml file (PlusDeviceSet_Server_OptiTrack_Profile.xml)
    • Flexible Configuration
      • Example configuration file with rigid bodies supplied as .TRA files (PlusDeviceSet_Server_OptiTrack_AddMarkersUsingTRA.xml)
  • Any OpenIGTLink compatible tracker
    • Supported hardware devices
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_NDICertus.xml PlusDeviceSet_OpenIGTLinkTracker_TDATA.xml
  • Optical Marker Tracker
    • Supported hardware devices
    • Supported platforms
    • Installation
      • Calibration
      • Creating printable marker images
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_OpticalMarkerTracker_Mmf.xml
  • Fake tracking system as a simulator
    • Device configuration settings
    • Example configuration file PlusDeviceSet_FakeTracker_ToolState.xml
  • Generic Sensor tracker
    • Supported sensors
    • Supported platforms
    • Installation
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_GenericSensor.xml
  • Medtronic Stealth Station
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
    • Use cases
      • Usage from PlusServerRemoteControl
      • Usage in 3D Slicer
    • Example configuration file PlusDeviceSet_Server_StealthLinkTracker.xml
  • WitMotion BWT901CL: Nine axis Bluetooth attitude angle sensor
    • Supported hardware devices
    • Supported platforms
    • BlueTooth Installation
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_WitMotionTracker.xml

Ultrasound Devices

  • BK ultrasound systems
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
      • OEM interface
      • RF acquisition through the CameraLink interface
    • Example BK ini file IniFile.ini
    • Example configuration file PlusDeviceSet_fCal_BkProFocus_OpenIGTLinkTracker.xml
  • Clarius ultrasound systems (CAST API)
    • Clarius Device vs. ClariusOEM Device
    • Supported hardware devices
    • Supported platforms
    • Connection
    • Device configuration settings
    • Example configuration file for Clarius B-mode image acquisition
    • Example configuration file for Clarius B-mode image acquisition with IMU data
    • Example configuration file for Clarius B-mode image and RF data acquisition
  • Clarius ultrasound systems (OEM API)
    • ClariusOEM Device vs. Clarius Device
    • Supported hardware devices
    • Supported platforms
    • Updating Clarius probe
    • How to setup your probe with ClariusOEM
    • Download Clarius certificate
    • Connect to Clarius Wi-Fi
    • Enable Windows Developer Mode
    • Connect to Clarius Bluetooth LE
    • Edit ClariusOEM config file
    • Physically correct US frame size and handling changing depths
    • Method 1: Transform hierarchy with the ImageToTransd transform
    • Method 2: Embed the transform directly in the image
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_ClariusOEMVideoCapture.xml
  • Interson USB ultrasound systems (old SDK)
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_IntersonVideoCapture_WithParameters.xml
  • Interson USB ultrasound systems (new SDK)
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
    • Example configuration file for B-mode image acquisition PlusDeviceSet_Server_IntersonSDKCxx_GP3.5.xml
  • Philips ultrasound systems
    • Supported hardware devices
    • Supported platforms
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_Philips_ie33.xml
  • Ultrasonix ultrasound systems
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
      • Common attributes:
      • Ulterius interface specific Device attributes:
      • Porta interface specific Device attributes:
    • Example config file
    • Example configuration file for tracked ultrasound acquisition using calibration matrix provided by Ultrasonix for C5-2/60 GPS probe
    • Example configuration file for B-mode acquisition using Ulterius interface
    • Example configuration file for 3D B-mode acquisition by a motorized probe using Porta interface
    • Example configuration file for dual B-mode and RF-mode acquisition using Ulterius interface
    • Using calibration matrices provided by Ultrasonix
    • Depth switching (experimental)
    • Example configuration file for tracked ultrasound acquisition using calibration matrix provided by Ultrasonix for L14-5/38 GPS probe
  • Telemed USB ultrasound systems
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_TelemedVideoCapture.xml
  • Capistrano Labs USB ultrasound systems
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
    • Example configuration file PlusDeviceSet_CapistranoVideoSourceTest.xml
  • Ultrasound simulator
    • Overview
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_SimulatedUltrasound_3DSlicer.xml

Video Capture

  • Epiphan frame grabber
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_EpiphanVideoCapture.xml
    • Epiphan Color Video Capture Example configuration file PlusDeviceSet_Server_EpiphanColorVideoCapture.xml
  • Imaging controls analog USB frame grabber
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_ImagingControlsVideoCapture.xml
  • Microsoft Media Foundation compatible imaging device
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_MmfColorVideoCapture.xml
  • Any OpenCV compatible capture device
    • Supported hardware devices
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_OpenCVVideoSource.xml
  • Video for Windows compatible imaging device
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_VfwVideoCapture.xml
  • Spinnaker Video Source
    • Copmatible Devices
    • Supported platforms
    • Spinnaker SDK Tested Versions
    • Building the SpinnakerVideo PLUS support
    • Device configuration settings
    • Minimal config File
  • BlackMagic DeckLink
    • Supported hardware devices
    • Supported platforms
    • BlackMagic DeckLink SDK Versions
    • Building the BlackMagic DeckLink PLUS support
    • Device configuration settings
    • Config File
  • grabber for CameraLink camera
    • This device allow you to use a DAQ USB-FRM13-B grabber to capture and send images from a CameraLink camera.
    • You can found the license in:
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_DAQVideoSource.xml

Cameras

  • Azure Kinect camera
    • Supported hardware devices
    • Supported platforms
    • SDK Tested Versions
    • License
    • Installation
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_AzureKinect.xml
  • IntelRealSense camera
    • Supported hardware devices
    • Supported platforms
    • License
    • Installation
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_IntelRealSenseVideo.xml
  • OvrvisionPro stereo camera
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_OvrvisionProVideoCapture.xml
  • Revopoint 3D cameras
    • Supported hardware devices
    • Supported platforms
    • SDK Tested Versions
    • Installation
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_Revopoint3DCamera.xml
  • Thermal Infrared Seek Pro camera
    • This device allow you to use a Infrared Seek Pro Camera to capture and send infrared thermal images.
    • To use the camera in a linux system, you have to grant privileges to write to it. We have made a small
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_InfraredSeekCamera.xml
  • Infrared Thermal Expert EV2 camera
    • This device allow you to use a Infrared Thermal Expert EV2 Camera to capture and send infrared thermal images.
    • You can found the license in:
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_InfraredTEEV2Camera.xml
  • Infrared Thermal Expert Q1 camera
    • This device allow you to use a Infrared TEQ1 Pro Camera to capture and send infrared thermal images.
    • You can found the license in:
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_InfraredTEQ1Camera.xml
  • PCO Ultraviolet camera
    • This device allow you to use a PCO Ultraviolet Camera to capture and send ultraviolet images.
    • You can found the license in:
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_UltravioletPCOUVCamera.xml

Sensors

  • Phidgets Spatial 3/3/3 magnetic, angular rate, and gravity (MARG) sensor
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_PhidgetSpatial.xml
  • CHRobotics CHR-UM6 magnetic, angular rate, and gravity (MARG) sensor
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_ChRobotics.xml
  • Microchip MM7150 magnetic, angular rate, and gravity (MARG) sensor
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_Microchip.xml
  • LeapMotion hand tracker
    • Supported hardware devices
    • Supported platforms
    • Device configuration settings
    • Data source ID transform names
    • Example configuration file PlusDeviceSet_Server_LeapMotionTracker.xml
  • 3dConnexion 3D mouse devices
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
    • Use cases
      • Usage in 3D Slicer
    • Example configuration file PlusDeviceSet_Server_3dConnexion.xml
  • Optimet ConoProbe single-point measuring sensor
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_OptimetConoProbe.xml
  • ThorLabs compact spectrometer
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Output
    • Device configuration settings
    • Example for clipping the acquired spectrum
    • Example configuration file PlusDeviceSet_Server_ThorLabsVideoCapture.xml
  • Oscilloscope interface
    • Supported hardware devices
    • Supported platforms
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_Agilent.xml

Other Devices

  • Prostate brachytherapy steppers
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
  • Generic serial device
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_GenericSerial.xml
    • Example script for sending command from 3D Slicer
  • OpenHaptics Device
    • Supported hardware devices
    • Supported platforms
    • Installation
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_OpenHaptics_WithForces.xml
    • Example configuration file PlusDeviceSet_Server_OpenHaptics.xml
  • Any OpenIGTLink compatible imaging device
    • Supported hardware devices
    • Device configuration settings
    • Example configuration file PlusDeviceSet_OpenIGTLinkVideoSource.xml
    • Example configuration file for data acquisition and sending (it acquires data from a file and forwards it through OpenIGTLink TRACKEDFRAME message to the processing server):
    • Example configuration file for data receiving and processing (it acquires data from the acquisition server and allows recording, volume reconstruction, and broadcasting of IMAGE and TRANSFORM messages):
  • Replay recorded data from file
    • Supported hardware devices
    • Device configuration settings
    • Example configuration file for simple replay of all image and transform data - PlusDeviceSet_Server_Sim_NwirePhantom.xml

Virtual Devices

  • Virtual Capture
    • Device configuration settings
  • Virtual Mixer
    • Device configuration settings
    • Example configuration file PlusDeviceSet_fCal_Ultrasonix_L14-5_Ascension3DG_2.0.xml
  • Virtual Switcher
    • Device configuration settings
  • Virtual Text Recognizer
    • Device configuration settings
    • Example configuration file PlusDeviceSet_PlusServer_tesseract.xml
  • Virtual Volume Reconstructor
    • Device configuration settings
    • Example configuration files
  • Enhance US sequence (EnhanceUsTrpSequence)
    • Device configuration settings
    • Example configuration file PlusDeviceSet_Server_Ultrasonix_C5-2_TransverseProcessEnhancer_2Processing.xml

Algorithms

  • Probe calibration algorithm
    • Configuration settings
    • Phantom definition
    • Example configuration file PlusDeviceSet_fCal_Ultrasonix_L14-5_Ascension3DG_2.0.xml
  • Phantom registration algorithm
    • Phantom registration using landmarks
      • Configuration settings
    • Phantom registration using linear object features
      • Configuration settings
    • Example configuration file PlusDeviceSet_fCal_Ultrasonix_L14-5_Ascension3DG_2.0.xml
  • Pivot calibration algorithm
    • Configuration settings
    • Example configuration file PlusDeviceSet_fCal_Ultrasonix_L14-5_Ascension3DG_2.0.xml
  • Temporal calibration
  • Time offset estimation
  • Timestamp jitter filtering
    • Configuration settings
    • Example configuration file
  • Volume reconstruction algorithm
    • Troubleshooting volume reconstruction
    • Configuration settings
      • Clipping
      • Compounding mode
    • Examples
      • Example configuration file PlusDeviceSet_Server_Sim_NwirePhantom.xml
      • Example configuration file PlusDeviceSet_VolumeReconstructionOnly_SonixRP_TRUS_D70mm_NN_LATE.xml
      • Example configuration file PlusDeviceSet_VolumeReconstructionOnly_SpinePhantom_NN_MAXI.xml
      • Example configuration file for Acquisition server (PlusDeviceSet_Server_Sim_NwirePhantomTrackedFrameAcquisition.xml)
      • Example configuration file for Processing server (PlusDeviceSet_Server_Sim_NwirePhantomTrackedFrameProcessing.xml)
  • RF processing algorithm
    • Configuration settings

Applications

  • Ultrasound probe calibration (ProbeCalibration)
    • Examples
    • Command-line parameters reference
  • Temporal calibration application (TemporalCalibration)
    • Examples
    • Command-line parameters reference
  • Volume reconstructor application (VolumeReconstructor)
    • Examples
    • Command-line parameters reference
  • Tracking device test (TrackingTest)
    • Examples
    • Command-line parameters reference
  • Sequence file viewer (ViewSequenceFile)
    • Examples
    • Command-line parameters reference
  • Sequence metafile editor (EditSequenceFile)
    • Examples
    • Generate sequence metafile that contains ImageToReference transforms
    • Compress a sequence metafile
    • Uncompress a sequence metafile
    • Trim a long sequence
    • Use fill image rectangle for anonymization
    • Remove image data from meta file, keep only the transforms
    • Add a constant transform to each frame
    • Mix multiple sequence files into one
    • Command-line parameters reference
  • RF data processor (RfProcessor)
    • Examples
    • Command-line parameters reference
  • Scan conversion (ScanConvert)
    • Examples
    • Command-line parameters reference
  • Extract scan lines (ExtractScanLines)
    • Examples
    • Command-line parameters reference
  • Draw scanlines (DrawScanLines)
    • Examples
    • Command-line parameters reference
  • Draw clip region (DrawClipRegion)
    • Examples
    • Command-line parameters reference
  • Create slice models (CreateSliceModels)
    • Examples
    • Command-line parameters reference
  • Enhance US sequence mha file (EnhanceUsTrpSequence)
    • Examples
    • Command-line parameters reference
  • Version information (PlusVersion)
    • Example output
    • Command-line parameters reference

Configuration

  • Application configuration file
  • Sequence file
    • There are two variants of the file format:
      • Field format
      • Field definitions
      • Compression
    • NRRD file stores additional information in custom fields similar to those used in Sequence Metafile.
    • Reading/writing in Matlab
    • Reading/writing in 3D Slicer
  • Log file
    • Viewing log files
      • LogExpert Configuration
  • Coordinate systems definitions
    • Coordinate systems naming convention
    • Transformation matrix definition
    • - \subpage CommonCoordinateSystems
    • Configuration settings
  • Definition of commonly used coordinate systems
  • PlusServer commands
    • Remote control example
      • Server setup
      • Control the server using the example client in Plus
        • Example: simple test commands
        • Example: volume reconstruction in batch mode (acquiring all frames then reconstruct volume at once)
        • Example: live volume reconstruction with intermediate snapshots
        • Example: Acquiring exam image data from StealthStation
        • Control the server from 3D Slicer
    • OpenIGTLinkRemoteExec interface specification
      • Command
        • Example:
      • Command reply
        • Example:
      • Commands
      • Ultrasound imaging parameter commands
        • Commands
        • Command replies
      • OpenIGTLinkRemoteExec Slicer module API

User Guide

  • Ultrasound image orientation
    • Motivation
    • Transducer axes definition
    • Definition of ultrasound image orientation
    • Image orientation in Plus
    • Example
    • How to check that the UsImageOrientation attribute is set correctly:
    • Image orientation in the Ultrasonix software
  • Ultrasound imaging parameters
    • US imaging parameters
    • Supported devices
    • Device configuration settings

Developer Guide

  • Contributing to PlusLib
    • Issue Tracking
    • Development Workflow
      • 1. Fork and Clone
      • 2. Create Feature Branch
      • 3. Make Changes
      • 4. Test Your Changes
      • 5. Commit Changes
      • 6. Push and Create Pull Request
    • Code Review Process
    • Monitoring Build Status
    • What to Contribute
      • Bug Fixes
      • New Features
      • Documentation
      • Testing
    • Communication
    • Getting Help
    • License
  • Coding Conventions
    • General Guidelines
    • Naming Conventions
      • Classes
      • Files
      • Variables
      • Methods
    • Code Formatting
      • Curly Brackets
      • Spacing
    • Error Handling
      • Return Codes
      • No Exceptions
      • Logging Errors
    • Logging
    • Configuration Reading
    • Memory Management
      • VTK Smart Pointers
      • Reference Counting
      • String Handling
    • Image Handling
      • Image Coordinate Systems
      • Image I/O
    • Documentation
    • File Organization
    • Testing
      • Test Files
      • Test Structure
    • Examples
    • Configuration File Changes
  • Creating New Devices
    • Overview
    • Step 1: Create Device Class
      • File Structure
      • Header File Template
      • Implementation Template
    • Step 2: Update CMakeLists.txt
    • Step 3: Register Device Factory
    • Step 4: Configuration XML
    • Step 5: Create Tests
    • Best Practices
    • See Also
  • API Reference
    • Core Classes
      • Configuration Management
        • vtkPlusConfig
        • PlusXmlUtils
    • Data Collection
      • vtkPlusDataCollector
      • vtkPlusDevice
      • vtkPlusDataSource
      • vtkPlusBuffer
    • Calibration Algorithms
      • vtkPlusProbeCalibrationAlgo
      • vtkPlusPhantomLandmarkRegistrationAlgo
      • vtkPlusPhantomLinearObjectRegistrationAlgo
      • vtkPlusTemporalCalibrationAlgo
      • vtkPlusPivotCalibrationAlgo
      • vtkPlusSpacingCalibAlgo
    • Transform Management
      • igsioTransformRepository
    • Logging
      • vtkPlusLogger
    • Image Processing
      • PlusVideoFrame
    • Common Patterns
      • Reading Configuration
      • Device Initialization Pattern
      • Error Handling Pattern
    • Full API Documentation
    • Module-Specific Documentation

Testing

  • Test Dashboards
    • Dashboard Overview
    • PlusLib Dashboard
      • Build Tracks
    • PlusApp Dashboard
    • Dashboard Information
      • Build Results
      • Viewing Build Details
      • Test Results
      • Coverage
      • Memory Checking
    • Submitting to Dashboard
      • Automatic Submission
      • Manual Submission
      • Build Name
    • Monitoring Dashboard
      • Email Notifications
      • RSS Feeds
    • Dashboard Best Practices
      • For Developers
      • For Reviewers
    • Platform-Specific Builds
      • Windows Builds
      • Linux Builds
      • macOS Builds
    • Troubleshooting Dashboard Issues
      • Build Not Appearing
      • Tests Timeout
      • Coverage Not Generated
    • Advanced Features
      • Custom Test Groups
      • Test Dependencies
      • Test Fixtures
    • Dashboard Metrics
      • Build Time
      • Test Execution Time
    • See Also
  • Running Tests
    • Overview
    • Building Tests
      • Enable Testing
      • Test Data
    • Running Tests
      • Run All Tests
      • Run Specific Tests
      • Verbose Output
      • Parallel Execution
    • Test Organization
      • Test Categories
      • Test Labels
    • Test Types
      • Unit Tests
      • Integration Tests
      • Comparison Tests
    • Writing Tests
      • Test Template
      • Adding Tests to CMake
      • Test Data
    • Test Results
      • Success Criteria
      • Understanding Failures
    • Debugging Tests
      • Debug Single Test
      • Memory Debugging
      • Enable More Logging
    • Continuous Testing
      • Local Continuous Testing
      • Pre-commit Testing
      • Dashboard Submission
    • Performance Testing
      • Timing Tests
      • Memory Usage
    • Best Practices
      • Test Design
      • Test Data
      • Test Maintenance
    • Common Test Patterns
      • Configuration Test
      • Device Test
      • Algorithm Test
    • See Also

About

  • License
    • How to Cite Plus
      • BibTeX
    • Plus License
      • Plus Contribution and Software License Agreement
        • PART A: CONTRIBUTION AGREEMENT
        • PART B: DOWNLOADING AGREEMENT
  • Citation
    • Primary Citation
    • BibTeX Entry
    • Abstract
    • Related Publications
      • Calibration
      • Volume Reconstruction
      • Applications
    • Acknowledgments
    • Laboratory
    • Contributing
    • See Also

3D Model Catalog

  • PlusModelCatalog Home
  • Tools
  • Tracking Fixtures
  • fCal Phantoms
  • Anatomy Models
  • Needle Tutor
PlusLib
  • Any OpenIGTLink compatible imaging device
  • Edit on GitHub

Any OpenIGTLink compatible imaging device

Supported hardware devices

Any compatible video device through OpenIGTLink interface. There are commercial systems that provide tracking video and image data through OpenIGTLink, such as BrainLab, Siemens MRI scanners

Device configuration settings

  • Type: OpenIGTLinkVideo

  • ServerAddress: Host name or IP address of the OpenIGTLink server that sends the data to this device.

  • ServerPort: Port of the OpenIGTLink server that sends the data to this device.

  • ImageMessageEmbeddedTransformName: If IMAGE message is received and this attribute is defined then the transform embedded in the message will be recorded as a transform, with the specified name (e.g., “ImageToReference”). If the attribute is not defined then the embedded transform is ignored. If the message type is not IMAGE then the attribute is ignored. (Optional)

  • MessageType: The device will request this message type from the remote server. If the MessageType is not specified then the default message type will be used

    • IMAGE Request sending only image data in IMAGE OpenIGTLink messages.

    • TRACKEDFRAME Request sending image+tracking data in TRACKEDFRAME OpenIGTLink messages.

  • IgtlMessageCrcCheckEnabled: Enable CRC check on the received OpenIGTLink messages

  • UseReceivedTimestamps: Use the timestamps that are stored in the OpenIGTLink messages.

    • TRUE Timestamp in the OpenIGTLink message header is used as acquisition time for the item. If the remote server is on a different computer then the clocks of the remote server computer and the computer that runs PlusServer must be accurately synchronized (e.g., using NTP).

    • FALSE Time of receiving the message is used as timestamp. Variable network delays may cause jitter in the timestamps.

  • ReconnectOnReceiveTimeout: If this option is enabled and the server becomes unresponsive then the device tries to reconnect repeatedly

  • ReceiveTimeoutSec: Time to allow for the device to receive a message, in seconds.

  • SendTimeoutSec: Time to allow for the device to send a message, in seconds.

  • AcquisitionRate: The device checks for new available messages on the remove server at this rate. (Optional, default: 30)

  • LocalTimeOffsetSec: (Optional, default: 0)

  • DataSources: Exactly one DataSource child element is required. (Required)

    • DataSource: (Required)

      • PortUsImageOrientation: (Required)

      • ImageType: (Optional, default: BRIGHTNESS)

      • BufferSize: (Optional, default: 150)

      • AveragedItemsForFiltering: (Optional, default: 20)

      • ClipRectangleOrigin: (Optional, default: 0 0 0)

      • ClipRectangleSize: (Optional, default: 0 0 0)

Example configuration file PlusDeviceSet_OpenIGTLinkVideoSource.xml

<PlusConfiguration version="2.1">

  <DataCollection StartupDelaySec="1.0">
    <DeviceSet
      Name="TEST Data collection uses OpenIGTLink video source on localhost."
      Description="Test configuration file for vtkDataCollectorFileTest to use a tracked frame list. The SequenceMetafile names should be defined either from command line argument or from configuration file!" />
    <Device
        Id="OpenIGTLinkVideoSenderDevice"
        Type="OpenIGTLinkVideo"
        MessageType="TrackedFrame"
        ServerAddress="127.0.0.1"
        ServerPort="18944"
        IgtlMessageCrcCheckEnabled="false" >
        <DataSources>
          <DataSource Type="Video" Id="Video" PortUsImageOrientation="MF"  />
        </DataSources>
        <OutputChannels>
          <OutputChannel Id="TrackedVideoSenderStream" VideoDataSourceId="Video" />
        </OutputChannels>
      </Device>
  </DataCollection>

</PlusConfiguration>

This device can be used for transferring tracked video data to another computer for processing, recording, and broadcasting. This is useful in the following cases:

  • the computer where the data is acquired is not fast enough (for example, if frames are skipped during volume reconstruction: “Volume reconstruction cannot keep up with the acquisition. Skip … seconds of the data stream to catch up.”)

  • 32-bit devices are used or a 32-bit computer is used for data acquisition, but high-resolution volume reconstruction requires 64-bit memory space

Example configuration file for data acquisition and sending (it acquires data from a file and forwards it through OpenIGTLink TRACKEDFRAME message to the processing server):

<PlusConfiguration version="2.1">
  <DataCollection StartupDelaySec="1.0" >
    <DeviceSet
      Name="PlusServer: TRACKEDFRAME acquisition server. fCal phantom scan with Ultrasonix US (L14-5 probe) + Ascension3DG tracker (Probe, Reference, Stylus)"
      Description="Free-hand probe motion, imaging 3 NWires, after spatial calibration. OpenIGTLink broadcasting of TRACKEDFRAME message through PlusServer." />
    <Device
      Id="TrackedVideoDevice"
      Type="SavedDataSource"
      SequenceFile="fCal_Test_Calibration_3NWires.igs.mha"
      UseData="IMAGE_AND_TRANSFORM"
      UseOriginalTimestamps="TRUE"
      RepeatEnabled="TRUE" >
      <DataSources>
        <DataSource Type="Video" Id="Video" />
      </DataSources>
      <OutputChannels>
        <OutputChannel Id="TrackedVideoStream" VideoDataSourceId="Video" />
      </OutputChannels>
    </Device>
  </DataCollection>
  <PlusOpenIGTLinkServer
    MaxNumberOfIgtlMessagesToSend="1"
    MaxTimeSpentWithProcessingMs="50"
    ListeningPort="18000"
    SendValidTransformsOnly="true"
    OutputChannelId="TrackedVideoStream" >
    <DefaultClientInfo>
      <MessageTypes>
        <Message Type="TRACKEDFRAME" />
      </MessageTypes>
    </DefaultClientInfo>
  </PlusOpenIGTLinkServer>
</PlusConfiguration>

Example configuration file for data receiving and processing (it acquires data from the acquisition server and allows recording, volume reconstruction, and broadcasting of IMAGE and TRANSFORM messages):

<PlusConfiguration version="2.1">

  <DataCollection StartupDelaySec="1.0" >
    <DeviceSet
      Name="PlusServer: TRACKEDFRAME processing server"
      Description="To be used with TRACKEDFRAME acquisition server. Receives tracked frames through OpenIGTLink and it can record sequences, reconstruct volumes, and sends IMAGE and TRANSFORM messages through OpenIGTLink." />
    <Device
      Id="TrackedVideoDevice"
      Type="OpenIGTLinkVideo"
      MessageType="TRACKEDFRAME"
      ServerAddress="127.0.0.1"
      ServerPort="18000"
      IgtlMessageCrcCheckEnabled="false"
      LocalTimeOffsetSec="0" >
      <DataSources>
        <DataSource Type="Video" Id="Video" PortUsImageOrientation="MF"  />
      </DataSources>
      <OutputChannels>
        <OutputChannel Id="TrackedVideoStream" VideoDataSourceId="Video" />
      </OutputChannels>
    </Device>

    <Device
      Id="CaptureDevice"
      Type="VirtualCapture"
      BaseFilename="RecordingTest.igs.mha"
      EnableCapturingOnStart="FALSE" >
      <InputChannels>
        <InputChannel Id="TrackedVideoStream" />
      </InputChannels>
    </Device>

    <Device
      Id="VolumeReconstructorDevice"
      Type="VirtualVolumeReconstructor"
      OutputVolDeviceName="RecVol_Reference">
      <InputChannels>
        <InputChannel Id="TrackedVideoStream" />
      </InputChannels>
      <VolumeReconstruction
        ImageCoordinateFrame="Image" ReferenceCoordinateFrame="Reference"
        Interpolation="LINEAR" Optimization="NONE" CompoundingMode="MEAN" FillHoles="OFF" NumberOfThreads="2"
        ClipRectangleOrigin="0 0" ClipRectangleSize="820 616"
        OutputOrigin="-15 -15 30" OutputExtent="0 300 0 300 0 300" OutputSpacing="0.15 0.15 0.15" />
    </Device>
  </DataCollection>

  <PlusOpenIGTLinkServer
    MaxNumberOfIgtlMessagesToSend="1"
    MaxTimeSpentWithProcessingMs="50"
    ListeningPort="18944"
    SendValidTransformsOnly="true"
    OutputChannelId="TrackedVideoStream" >
    <DefaultClientInfo>
      <MessageTypes>
        <Message Type="IMAGE" />
        <Message Type="TRANSFORM" />
      </MessageTypes>
      <TransformNames>
        <Transform Name="ProbeToTracker" />
        <Transform Name="ReferenceToTracker" />
        <Transform Name="ProbeToReference" />
      </TransformNames>
      <ImageNames>
        <Image Name="Image" EmbeddedTransformToFrame="Reference" />
      </ImageNames>
    </DefaultClientInfo>
  </PlusOpenIGTLinkServer>

  <CoordinateDefinitions>
    <Transform From="Image" To="TransducerOriginPixel"
      Matrix="
        1 0 0 -410
        0 1 0 5
        0 0 1 0
        0 0 0 1"
      Date="2011.12.06 17:57:00" />
    <Transform From="Phantom" To="Reference"
      Matrix="
        0.00898765 -0.0136951 -0.999866 9.59137
        0.0246163 -0.9996 0.0139127 36.0012
        -0.999657 -0.024738 -0.00864693 87.8909
        0 0 0 1"
      Error="0.404711" Date="012712_152104" />
    <Transform From="StylusTip" To="Stylus"
      Matrix="
        1 0 0 203.772
        0 1 0 -12.283
        0 0 1 1.17469
        0 0 0 1"
      Error="0.582721" Date="012712_152030" />
    <Transform From="Image" To="Probe"
      Matrix="
        0     0.08    0     11
        -0.08 0       0     50
        0     0       0.08  0
        0     0       0     1"
      Error="0.582721" Date="012712_152030" />
  </CoordinateDefinitions>

</PlusConfiguration>
Previous Next

© Copyright 2024, PlusToolkit Team.

Built with Sphinx using a theme provided by Read the Docs.