<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.na-mic.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Goerlitz</id>
	<title>NAMIC Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.na-mic.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Goerlitz"/>
	<link rel="alternate" type="text/html" href="https://www.na-mic.org/wiki/Special:Contributions/Goerlitz"/>
	<updated>2026-05-01T08:24:41Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=OpenIGTLink/Slicer2&amp;diff=33906</id>
		<title>OpenIGTLink/Slicer2</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=OpenIGTLink/Slicer2&amp;diff=33906"/>
		<updated>2008-12-20T01:41:14Z</updated>

		<summary type="html">&lt;p&gt;Goerlitz: /* Build OpenIGTLink Loadable Module */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[OpenIGTLink | &amp;amp;lt;&amp;amp;lt; OpenIGTLink]]&lt;br /&gt;
&lt;br /&gt;
=What's new in the new version of Slicer3 OpenIGTLInk module?=&lt;br /&gt;
&lt;br /&gt;
*Outgoing data support&lt;br /&gt;
**The new version can export image and linear transform data to other software through OpenIGTLink connection.&lt;br /&gt;
*Implemented using [[OpenIGTLink/Library| the OpenIGTLink Library]]&lt;br /&gt;
**Changes in the OpenIGTLink Library can quickly applied to the module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:OpenIGTLink_Slicer_Screenshot.png]]&lt;br /&gt;
&lt;br /&gt;
=Install the Software=&lt;br /&gt;
&lt;br /&gt;
==From binaries==&lt;br /&gt;
We don't provide binaries for this version.&lt;br /&gt;
&lt;br /&gt;
==Build from the source==&lt;br /&gt;
===Build 3D Slicer===&lt;br /&gt;
Please refer instruction in [http://www.slicer.org/slicerWiki/index.php/Slicer3:Build_Instructions].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Build the OpenIGTLink Library===&lt;br /&gt;
Please refer to the instruction on [[OpenIGTLink/Library]]&lt;br /&gt;
&lt;br /&gt;
===Build OpenIGTLink Loadable Module===&lt;br /&gt;
&lt;br /&gt;
Before building the module, please make sure that your CMake version is higher than 2.6.&lt;br /&gt;
You can find it in Slicer3-lib/CMake-build directory, which was created during building 3D Slicer.&lt;br /&gt;
&lt;br /&gt;
First, get the source code from the repository. For Linux and Mac:&lt;br /&gt;
  $ cd &amp;lt;working directory&amp;gt;&lt;br /&gt;
  $ svn co http://svn.na-mic.org/NAMICSandBox/trunk/IGTLoadableModules/OpenIGTLinkIF OpenIGTLinkIF&lt;br /&gt;
&lt;br /&gt;
Create build directory&lt;br /&gt;
  $ mkdir OpenIGTLinkIF-build&lt;br /&gt;
  $ cd OpenIGTLinkIF-build&lt;br /&gt;
&lt;br /&gt;
Then configure by using CMake&lt;br /&gt;
  $ cmake -DSlicer3_DIR=&amp;lt;Path to the Slicer-build directory&amp;gt; -DOpenIGTLink_DIR=&amp;lt;Path to the OpenIGTLink-build directory&amp;gt; ../OpenIGTLinkIF&lt;br /&gt;
 &lt;br /&gt;
If the previous command has completed without error, you can start compiling&lt;br /&gt;
  $ make&lt;br /&gt;
&lt;br /&gt;
After the compilation, you will find libOpenIGTLink.so (Linux) libOpenIGTLink.dylib (Mac) in OpenIGTLink-build dirctory.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;font color=red&amp;gt;!! Note: Building on Mac OS X 10.5 (Leopard) !!&amp;lt;/font&amp;gt;===&lt;br /&gt;
If you are working in the Mac OS X 10.5 (Leopard) environment, you may get a linker error: &lt;br /&gt;
&lt;br /&gt;
  ld: cycle in dylib re-exports with /usr/X11R6/lib/libGL.dylib&lt;br /&gt;
&lt;br /&gt;
This is caused by a known bug of the Open GL library in Mac OS X 10.5 (see [http://wiki.finkproject.org/index.php/Fink:Packaging:Preparing_for_10.5#OpenGL_Bug] for detail).&lt;br /&gt;
To avoid this error, specify following option when you run cmake.&lt;br /&gt;
&lt;br /&gt;
 $ cmake -DSlicer3_DIR=&amp;lt;Path to Slicer-build directory&amp;gt; -DCMAKE_SHARED_LINKER_FLAGS=-Wl,-dylib_file,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib ../OpenIGTLink&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Tracker Simulator for Testing Open IGT Link=&lt;br /&gt;
&lt;br /&gt;
To test the Open IGT Link module (or other Open-IGT-Link-complaint devices and software), tracking simulator software is provided. This software simply sends dummy coordinate data to the server with specified frame rate.&lt;br /&gt;
You can either obtain the software as a binary code or build from source.&lt;br /&gt;
&lt;br /&gt;
==From binaries==&lt;br /&gt;
Obtain a binary file for your environment. &lt;br /&gt;
* [[Media:TrackerSimulator_Linux_x86_32.tgz|For Linux (x86, 32-bit)]].&lt;br /&gt;
* [[Media:TrackerSimulator_Linux_x86_64.tgz|For Linux (x86, 64-bit)]].&lt;br /&gt;
* [[Media:TrackerSimulator_Win_x86_32.zip|For Windows (32-bit)]].&lt;br /&gt;
* [[Media:TrackerSimulator_Darwin_x86.tgz |For Mac OS X (x86)]].&lt;br /&gt;
* [[Media:TrackerSimulator_Darwin_ppc.tgz |For Mac OS X (PPC)]].&lt;br /&gt;
&lt;br /&gt;
==From Source==&lt;br /&gt;
&lt;br /&gt;
To get the source code, run following commands:&lt;br /&gt;
 $ mkdir &amp;lt;working directory&amp;gt;&lt;br /&gt;
 $ svn co http://svn.na-mic.org/NAMICSandBox/trunk/BRPTools/ScannerIO ScannerIO&lt;br /&gt;
&lt;br /&gt;
Then configure the source code&lt;br /&gt;
 $ cd ScannerIO&lt;br /&gt;
 $ ccmake .&lt;br /&gt;
&lt;br /&gt;
Usually, you don't need to change any setting. Just press 'c' key by 'g' key to generate Makefiles. Press 'q' to quit the ccmake interface. Now you are ready to build the program.&lt;br /&gt;
 $ make&lt;br /&gt;
&lt;br /&gt;
The executable file '''TrackerSim''' can be found in '''ScannerIO/bin''' directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Testing Open IGT Link Module -- Show Tracking Device in the 3D Space=&lt;br /&gt;
&lt;br /&gt;
==Set up Open IGT Link Module==&lt;br /&gt;
&lt;br /&gt;
# Select &amp;quot;OpenIGTLink&amp;quot; from &amp;quot;Modules:&amp;quot; menu&lt;br /&gt;
# Open &amp;quot;Connector Browser&amp;quot; frame, and press &amp;quot;Add&amp;quot; button below the &amp;quot;Connectors&amp;quot; list to add a new connector&lt;br /&gt;
# Configure and start the connector. Choose &amp;quot;Server&amp;quot; check box in the &amp;quot;Type&amp;quot; option, then clinck &amp;quot;Active&amp;quot; check box. Now the Slicer is ready to accept connections through Open IGT Link.&lt;br /&gt;
&lt;br /&gt;
==Run Tracker Simulator==&lt;br /&gt;
To send dummy coordinate data to the Slicer running on localhost with frame rate of 10 fps, run:&lt;br /&gt;
 $ ./TrackerSim  10  c  localhost 18944&lt;br /&gt;
&lt;br /&gt;
==Visualize Tracker Position==&lt;br /&gt;
To see the coordinate from the Tracker Simulator,&lt;br /&gt;
# Open &amp;quot;Visualization / Slice Control&amp;quot; frame in the OpenIGTLink module interface.&lt;br /&gt;
# Click the &amp;quot;Show Locator&amp;quot; check button. A locator model shows up on the 3D viewer.&lt;br /&gt;
# Open &amp;quot;Data&amp;quot; module. Choose &amp;quot;Data&amp;quot; from &amp;quot;Modules:&amp;quot; menu.&lt;br /&gt;
# Edit MRML tree. Put &amp;quot;IGTLocator&amp;quot; under the &amp;quot;Tracker&amp;quot; by dragging &amp;quot;IGTLocator&amp;quot; node.&lt;br /&gt;
# You should see the locator model moves in the 3D viewer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Testing Open IGT Link Module -- Reslice 3D image=&lt;br /&gt;
We can reslice 3D image according to the locator position with following steps:&lt;br /&gt;
# Load 3D volume from the &amp;quot;Volumes&amp;quot; module.&lt;br /&gt;
# Start Tracking as we did in the previous section.&lt;br /&gt;
# In the &amp;quot;Visualization / Slice Control&amp;quot; frame in the OpenIGTLink module interface, click Red menu and choose &amp;quot;Locator&amp;quot;.&lt;br /&gt;
# The image in the left 2D slice viewer (Red) should start to move. You can change the orientation by changing slice orientation menu in the 2D slice viewer.&lt;br /&gt;
# If you click the &amp;quot;Oblique&amp;quot; check button in the &amp;quot;Visualization / Slicer Control&amp;quot; frame, the slice orientation is set according to the locator orientation.&lt;br /&gt;
# You can use other 2D viewers (Yellow and Green) by choosing &amp;quot;Locator&amp;quot; from the Yellow and Green menu in the &amp;quot;Visualization / Slice Control&amp;quot; frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Loadmap=&lt;br /&gt;
The current version of the Open IGT Link module supports only incoming data. In future, the module will also support outgoing data, which is useful for&lt;br /&gt;
*exporting registration result to other software&lt;br /&gt;
*exporting result images of registration / segmentation&lt;br /&gt;
*sending control commands to devices and imagers&lt;br /&gt;
*synchronizing multiple navigation software&lt;br /&gt;
&lt;br /&gt;
The idea of outgoing data support is that the Open IGT Link module detects MRML update events (linear transforms and images) and put the new data into Open IGT Link data stream. This mechanism allows other Slicer3 modules to communicate with other OpenIGTLink-compatible software or devices through MRML.&lt;br /&gt;
&lt;br /&gt;
In the next version, the Open IGT Link module handles MRML events to detect updates in MRML nodes (linear transforms and images)&lt;br /&gt;
&lt;br /&gt;
Currently, the new version of Open IGT Link module is being developed. The code is available from SVN repository at:&lt;br /&gt;
 http://svn.na-mi.org/NAMICSandBox/trunk/IGTLodableModules/OpenIGTLinkPrototype&lt;br /&gt;
Please make sure not to load the current version of OpenIGTLink module and OpenIGTLinkPrototype module at the same time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Other Resources=&lt;br /&gt;
*[[OpenIGTLink/Simulators]]&lt;br /&gt;
&lt;br /&gt;
=People=&lt;br /&gt;
*[http://www.spl.harvard.edu/pages/People/tokuda  Junichi Tokuda]&lt;br /&gt;
*[http://www.spl.harvard.edu/pages/People/hliu Haiying Liu]&lt;/div&gt;</summary>
		<author><name>Goerlitz</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=OpenIGTLink/Slicer2&amp;diff=33905</id>
		<title>OpenIGTLink/Slicer2</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=OpenIGTLink/Slicer2&amp;diff=33905"/>
		<updated>2008-12-20T01:40:22Z</updated>

		<summary type="html">&lt;p&gt;Goerlitz: /* Build the OpenIGTLink Library */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[OpenIGTLink | &amp;amp;lt;&amp;amp;lt; OpenIGTLink]]&lt;br /&gt;
&lt;br /&gt;
=What's new in the new version of Slicer3 OpenIGTLInk module?=&lt;br /&gt;
&lt;br /&gt;
*Outgoing data support&lt;br /&gt;
**The new version can export image and linear transform data to other software through OpenIGTLink connection.&lt;br /&gt;
*Implemented using [[OpenIGTLink/Library| the OpenIGTLink Library]]&lt;br /&gt;
**Changes in the OpenIGTLink Library can quickly applied to the module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:OpenIGTLink_Slicer_Screenshot.png]]&lt;br /&gt;
&lt;br /&gt;
=Install the Software=&lt;br /&gt;
&lt;br /&gt;
==From binaries==&lt;br /&gt;
We don't provide binaries for this version.&lt;br /&gt;
&lt;br /&gt;
==Build from the source==&lt;br /&gt;
===Build 3D Slicer===&lt;br /&gt;
Please refer instruction in [http://www.slicer.org/slicerWiki/index.php/Slicer3:Build_Instructions].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Build the OpenIGTLink Library===&lt;br /&gt;
Please refer to the instruction on [[OpenIGTLink/Library]]&lt;br /&gt;
&lt;br /&gt;
===Build OpenIGTLink Loadable Module===&lt;br /&gt;
&lt;br /&gt;
Before build the module, please make sure that your CMake's version is higher than 2.6.&lt;br /&gt;
You can find it in Slicer3-lib/CMake-build directory, which was created during building 3D Slicer.&lt;br /&gt;
&lt;br /&gt;
First, get the source code from the repository. For Linux and Mac:&lt;br /&gt;
  $ cd &amp;lt;working directory&amp;gt;&lt;br /&gt;
  $ svn co http://svn.na-mic.org/NAMICSandBox/trunk/IGTLoadableModules/OpenIGTLinkIF OpenIGTLinkIF&lt;br /&gt;
&lt;br /&gt;
Create build direcotry&lt;br /&gt;
  $ mkdir OpenIGTLinkIF-build&lt;br /&gt;
  $ cd OpenIGTLinkIF-build&lt;br /&gt;
&lt;br /&gt;
Then configure by using CMake&lt;br /&gt;
  $ cmake -DSlicer3_DIR=&amp;lt;Path to the Slicer-build directory&amp;gt; -DOpenIGTLink_DIR=&amp;lt;Path to the OpenIGTLink-build directory&amp;gt; ../OpenIGTLinkIF&lt;br /&gt;
 &lt;br /&gt;
If the previous command has completed without error, you can start compiling&lt;br /&gt;
  $ make&lt;br /&gt;
&lt;br /&gt;
After the compilation, you will find libOpenIGTLink.so (Linux) libOpenIGTLink.dylib (Mac) in OpenIGTLink-build dirctory.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;font color=red&amp;gt;!! Note: Building on Mac OS X 10.5 (Leopard) !!&amp;lt;/font&amp;gt;===&lt;br /&gt;
If you are working in the Mac OS X 10.5 (Leopard) environment, you may get a linker error: &lt;br /&gt;
&lt;br /&gt;
  ld: cycle in dylib re-exports with /usr/X11R6/lib/libGL.dylib&lt;br /&gt;
&lt;br /&gt;
This is caused by a known bug of the Open GL library in Mac OS X 10.5 (see [http://wiki.finkproject.org/index.php/Fink:Packaging:Preparing_for_10.5#OpenGL_Bug] for detail).&lt;br /&gt;
To avoid this error, specify following option when you run cmake.&lt;br /&gt;
&lt;br /&gt;
 $ cmake -DSlicer3_DIR=&amp;lt;Path to Slicer-build directory&amp;gt; -DCMAKE_SHARED_LINKER_FLAGS=-Wl,-dylib_file,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib ../OpenIGTLink&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Tracker Simulator for Testing Open IGT Link=&lt;br /&gt;
&lt;br /&gt;
To test the Open IGT Link module (or other Open-IGT-Link-complaint devices and software), tracking simulator software is provided. This software simply sends dummy coordinate data to the server with specified frame rate.&lt;br /&gt;
You can either obtain the software as a binary code or build from source.&lt;br /&gt;
&lt;br /&gt;
==From binaries==&lt;br /&gt;
Obtain a binary file for your environment. &lt;br /&gt;
* [[Media:TrackerSimulator_Linux_x86_32.tgz|For Linux (x86, 32-bit)]].&lt;br /&gt;
* [[Media:TrackerSimulator_Linux_x86_64.tgz|For Linux (x86, 64-bit)]].&lt;br /&gt;
* [[Media:TrackerSimulator_Win_x86_32.zip|For Windows (32-bit)]].&lt;br /&gt;
* [[Media:TrackerSimulator_Darwin_x86.tgz |For Mac OS X (x86)]].&lt;br /&gt;
* [[Media:TrackerSimulator_Darwin_ppc.tgz |For Mac OS X (PPC)]].&lt;br /&gt;
&lt;br /&gt;
==From Source==&lt;br /&gt;
&lt;br /&gt;
To get the source code, run following commands:&lt;br /&gt;
 $ mkdir &amp;lt;working directory&amp;gt;&lt;br /&gt;
 $ svn co http://svn.na-mic.org/NAMICSandBox/trunk/BRPTools/ScannerIO ScannerIO&lt;br /&gt;
&lt;br /&gt;
Then configure the source code&lt;br /&gt;
 $ cd ScannerIO&lt;br /&gt;
 $ ccmake .&lt;br /&gt;
&lt;br /&gt;
Usually, you don't need to change any setting. Just press 'c' key by 'g' key to generate Makefiles. Press 'q' to quit the ccmake interface. Now you are ready to build the program.&lt;br /&gt;
 $ make&lt;br /&gt;
&lt;br /&gt;
The executable file '''TrackerSim''' can be found in '''ScannerIO/bin''' directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Testing Open IGT Link Module -- Show Tracking Device in the 3D Space=&lt;br /&gt;
&lt;br /&gt;
==Set up Open IGT Link Module==&lt;br /&gt;
&lt;br /&gt;
# Select &amp;quot;OpenIGTLink&amp;quot; from &amp;quot;Modules:&amp;quot; menu&lt;br /&gt;
# Open &amp;quot;Connector Browser&amp;quot; frame, and press &amp;quot;Add&amp;quot; button below the &amp;quot;Connectors&amp;quot; list to add a new connector&lt;br /&gt;
# Configure and start the connector. Choose &amp;quot;Server&amp;quot; check box in the &amp;quot;Type&amp;quot; option, then clinck &amp;quot;Active&amp;quot; check box. Now the Slicer is ready to accept connections through Open IGT Link.&lt;br /&gt;
&lt;br /&gt;
==Run Tracker Simulator==&lt;br /&gt;
To send dummy coordinate data to the Slicer running on localhost with frame rate of 10 fps, run:&lt;br /&gt;
 $ ./TrackerSim  10  c  localhost 18944&lt;br /&gt;
&lt;br /&gt;
==Visualize Tracker Position==&lt;br /&gt;
To see the coordinate from the Tracker Simulator,&lt;br /&gt;
# Open &amp;quot;Visualization / Slice Control&amp;quot; frame in the OpenIGTLink module interface.&lt;br /&gt;
# Click the &amp;quot;Show Locator&amp;quot; check button. A locator model shows up on the 3D viewer.&lt;br /&gt;
# Open &amp;quot;Data&amp;quot; module. Choose &amp;quot;Data&amp;quot; from &amp;quot;Modules:&amp;quot; menu.&lt;br /&gt;
# Edit MRML tree. Put &amp;quot;IGTLocator&amp;quot; under the &amp;quot;Tracker&amp;quot; by dragging &amp;quot;IGTLocator&amp;quot; node.&lt;br /&gt;
# You should see the locator model moves in the 3D viewer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Testing Open IGT Link Module -- Reslice 3D image=&lt;br /&gt;
We can reslice 3D image according to the locator position with following steps:&lt;br /&gt;
# Load 3D volume from the &amp;quot;Volumes&amp;quot; module.&lt;br /&gt;
# Start Tracking as we did in the previous section.&lt;br /&gt;
# In the &amp;quot;Visualization / Slice Control&amp;quot; frame in the OpenIGTLink module interface, click Red menu and choose &amp;quot;Locator&amp;quot;.&lt;br /&gt;
# The image in the left 2D slice viewer (Red) should start to move. You can change the orientation by changing slice orientation menu in the 2D slice viewer.&lt;br /&gt;
# If you click the &amp;quot;Oblique&amp;quot; check button in the &amp;quot;Visualization / Slicer Control&amp;quot; frame, the slice orientation is set according to the locator orientation.&lt;br /&gt;
# You can use other 2D viewers (Yellow and Green) by choosing &amp;quot;Locator&amp;quot; from the Yellow and Green menu in the &amp;quot;Visualization / Slice Control&amp;quot; frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Loadmap=&lt;br /&gt;
The current version of the Open IGT Link module supports only incoming data. In future, the module will also support outgoing data, which is useful for&lt;br /&gt;
*exporting registration result to other software&lt;br /&gt;
*exporting result images of registration / segmentation&lt;br /&gt;
*sending control commands to devices and imagers&lt;br /&gt;
*synchronizing multiple navigation software&lt;br /&gt;
&lt;br /&gt;
The idea of outgoing data support is that the Open IGT Link module detects MRML update events (linear transforms and images) and put the new data into Open IGT Link data stream. This mechanism allows other Slicer3 modules to communicate with other OpenIGTLink-compatible software or devices through MRML.&lt;br /&gt;
&lt;br /&gt;
In the next version, the Open IGT Link module handles MRML events to detect updates in MRML nodes (linear transforms and images)&lt;br /&gt;
&lt;br /&gt;
Currently, the new version of Open IGT Link module is being developed. The code is available from SVN repository at:&lt;br /&gt;
 http://svn.na-mi.org/NAMICSandBox/trunk/IGTLodableModules/OpenIGTLinkPrototype&lt;br /&gt;
Please make sure not to load the current version of OpenIGTLink module and OpenIGTLinkPrototype module at the same time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Other Resources=&lt;br /&gt;
*[[OpenIGTLink/Simulators]]&lt;br /&gt;
&lt;br /&gt;
=People=&lt;br /&gt;
*[http://www.spl.harvard.edu/pages/People/tokuda  Junichi Tokuda]&lt;br /&gt;
*[http://www.spl.harvard.edu/pages/People/hliu Haiying Liu]&lt;/div&gt;</summary>
		<author><name>Goerlitz</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=OpenIGTLink/Slicer2&amp;diff=33904</id>
		<title>OpenIGTLink/Slicer2</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=OpenIGTLink/Slicer2&amp;diff=33904"/>
		<updated>2008-12-20T01:39:57Z</updated>

		<summary type="html">&lt;p&gt;Goerlitz: /* What's new in the new version of Slicer3 OpenIGTLInk module? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[OpenIGTLink | &amp;amp;lt;&amp;amp;lt; OpenIGTLink]]&lt;br /&gt;
&lt;br /&gt;
=What's new in the new version of Slicer3 OpenIGTLInk module?=&lt;br /&gt;
&lt;br /&gt;
*Outgoing data support&lt;br /&gt;
**The new version can export image and linear transform data to other software through OpenIGTLink connection.&lt;br /&gt;
*Implemented using [[OpenIGTLink/Library| the OpenIGTLink Library]]&lt;br /&gt;
**Changes in the OpenIGTLink Library can quickly applied to the module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:OpenIGTLink_Slicer_Screenshot.png]]&lt;br /&gt;
&lt;br /&gt;
=Install the Software=&lt;br /&gt;
&lt;br /&gt;
==From binaries==&lt;br /&gt;
We don't provide binaries for this version.&lt;br /&gt;
&lt;br /&gt;
==Build from the source==&lt;br /&gt;
===Build 3D Slicer===&lt;br /&gt;
Please refer instruction in [http://www.slicer.org/slicerWiki/index.php/Slicer3:Build_Instructions].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Build the OpenIGTLink Library===&lt;br /&gt;
Please refer instruction in [[OpenIGTLink/Library]]&lt;br /&gt;
&lt;br /&gt;
===Build OpenIGTLink Loadable Module===&lt;br /&gt;
&lt;br /&gt;
Before build the module, please make sure that your CMake's version is higher than 2.6.&lt;br /&gt;
You can find it in Slicer3-lib/CMake-build directory, which was created during building 3D Slicer.&lt;br /&gt;
&lt;br /&gt;
First, get the source code from the repository. For Linux and Mac:&lt;br /&gt;
  $ cd &amp;lt;working directory&amp;gt;&lt;br /&gt;
  $ svn co http://svn.na-mic.org/NAMICSandBox/trunk/IGTLoadableModules/OpenIGTLinkIF OpenIGTLinkIF&lt;br /&gt;
&lt;br /&gt;
Create build direcotry&lt;br /&gt;
  $ mkdir OpenIGTLinkIF-build&lt;br /&gt;
  $ cd OpenIGTLinkIF-build&lt;br /&gt;
&lt;br /&gt;
Then configure by using CMake&lt;br /&gt;
  $ cmake -DSlicer3_DIR=&amp;lt;Path to the Slicer-build directory&amp;gt; -DOpenIGTLink_DIR=&amp;lt;Path to the OpenIGTLink-build directory&amp;gt; ../OpenIGTLinkIF&lt;br /&gt;
 &lt;br /&gt;
If the previous command has completed without error, you can start compiling&lt;br /&gt;
  $ make&lt;br /&gt;
&lt;br /&gt;
After the compilation, you will find libOpenIGTLink.so (Linux) libOpenIGTLink.dylib (Mac) in OpenIGTLink-build dirctory.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;font color=red&amp;gt;!! Note: Building on Mac OS X 10.5 (Leopard) !!&amp;lt;/font&amp;gt;===&lt;br /&gt;
If you are working in the Mac OS X 10.5 (Leopard) environment, you may get a linker error: &lt;br /&gt;
&lt;br /&gt;
  ld: cycle in dylib re-exports with /usr/X11R6/lib/libGL.dylib&lt;br /&gt;
&lt;br /&gt;
This is caused by a known bug of the Open GL library in Mac OS X 10.5 (see [http://wiki.finkproject.org/index.php/Fink:Packaging:Preparing_for_10.5#OpenGL_Bug] for detail).&lt;br /&gt;
To avoid this error, specify following option when you run cmake.&lt;br /&gt;
&lt;br /&gt;
 $ cmake -DSlicer3_DIR=&amp;lt;Path to Slicer-build directory&amp;gt; -DCMAKE_SHARED_LINKER_FLAGS=-Wl,-dylib_file,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib ../OpenIGTLink&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Tracker Simulator for Testing Open IGT Link=&lt;br /&gt;
&lt;br /&gt;
To test the Open IGT Link module (or other Open-IGT-Link-complaint devices and software), tracking simulator software is provided. This software simply sends dummy coordinate data to the server with specified frame rate.&lt;br /&gt;
You can either obtain the software as a binary code or build from source.&lt;br /&gt;
&lt;br /&gt;
==From binaries==&lt;br /&gt;
Obtain a binary file for your environment. &lt;br /&gt;
* [[Media:TrackerSimulator_Linux_x86_32.tgz|For Linux (x86, 32-bit)]].&lt;br /&gt;
* [[Media:TrackerSimulator_Linux_x86_64.tgz|For Linux (x86, 64-bit)]].&lt;br /&gt;
* [[Media:TrackerSimulator_Win_x86_32.zip|For Windows (32-bit)]].&lt;br /&gt;
* [[Media:TrackerSimulator_Darwin_x86.tgz |For Mac OS X (x86)]].&lt;br /&gt;
* [[Media:TrackerSimulator_Darwin_ppc.tgz |For Mac OS X (PPC)]].&lt;br /&gt;
&lt;br /&gt;
==From Source==&lt;br /&gt;
&lt;br /&gt;
To get the source code, run following commands:&lt;br /&gt;
 $ mkdir &amp;lt;working directory&amp;gt;&lt;br /&gt;
 $ svn co http://svn.na-mic.org/NAMICSandBox/trunk/BRPTools/ScannerIO ScannerIO&lt;br /&gt;
&lt;br /&gt;
Then configure the source code&lt;br /&gt;
 $ cd ScannerIO&lt;br /&gt;
 $ ccmake .&lt;br /&gt;
&lt;br /&gt;
Usually, you don't need to change any setting. Just press 'c' key by 'g' key to generate Makefiles. Press 'q' to quit the ccmake interface. Now you are ready to build the program.&lt;br /&gt;
 $ make&lt;br /&gt;
&lt;br /&gt;
The executable file '''TrackerSim''' can be found in '''ScannerIO/bin''' directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Testing Open IGT Link Module -- Show Tracking Device in the 3D Space=&lt;br /&gt;
&lt;br /&gt;
==Set up Open IGT Link Module==&lt;br /&gt;
&lt;br /&gt;
# Select &amp;quot;OpenIGTLink&amp;quot; from &amp;quot;Modules:&amp;quot; menu&lt;br /&gt;
# Open &amp;quot;Connector Browser&amp;quot; frame, and press &amp;quot;Add&amp;quot; button below the &amp;quot;Connectors&amp;quot; list to add a new connector&lt;br /&gt;
# Configure and start the connector. Choose &amp;quot;Server&amp;quot; check box in the &amp;quot;Type&amp;quot; option, then clinck &amp;quot;Active&amp;quot; check box. Now the Slicer is ready to accept connections through Open IGT Link.&lt;br /&gt;
&lt;br /&gt;
==Run Tracker Simulator==&lt;br /&gt;
To send dummy coordinate data to the Slicer running on localhost with frame rate of 10 fps, run:&lt;br /&gt;
 $ ./TrackerSim  10  c  localhost 18944&lt;br /&gt;
&lt;br /&gt;
==Visualize Tracker Position==&lt;br /&gt;
To see the coordinate from the Tracker Simulator,&lt;br /&gt;
# Open &amp;quot;Visualization / Slice Control&amp;quot; frame in the OpenIGTLink module interface.&lt;br /&gt;
# Click the &amp;quot;Show Locator&amp;quot; check button. A locator model shows up on the 3D viewer.&lt;br /&gt;
# Open &amp;quot;Data&amp;quot; module. Choose &amp;quot;Data&amp;quot; from &amp;quot;Modules:&amp;quot; menu.&lt;br /&gt;
# Edit MRML tree. Put &amp;quot;IGTLocator&amp;quot; under the &amp;quot;Tracker&amp;quot; by dragging &amp;quot;IGTLocator&amp;quot; node.&lt;br /&gt;
# You should see the locator model moves in the 3D viewer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Testing Open IGT Link Module -- Reslice 3D image=&lt;br /&gt;
We can reslice 3D image according to the locator position with following steps:&lt;br /&gt;
# Load 3D volume from the &amp;quot;Volumes&amp;quot; module.&lt;br /&gt;
# Start Tracking as we did in the previous section.&lt;br /&gt;
# In the &amp;quot;Visualization / Slice Control&amp;quot; frame in the OpenIGTLink module interface, click Red menu and choose &amp;quot;Locator&amp;quot;.&lt;br /&gt;
# The image in the left 2D slice viewer (Red) should start to move. You can change the orientation by changing slice orientation menu in the 2D slice viewer.&lt;br /&gt;
# If you click the &amp;quot;Oblique&amp;quot; check button in the &amp;quot;Visualization / Slicer Control&amp;quot; frame, the slice orientation is set according to the locator orientation.&lt;br /&gt;
# You can use other 2D viewers (Yellow and Green) by choosing &amp;quot;Locator&amp;quot; from the Yellow and Green menu in the &amp;quot;Visualization / Slice Control&amp;quot; frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Loadmap=&lt;br /&gt;
The current version of the Open IGT Link module supports only incoming data. In future, the module will also support outgoing data, which is useful for&lt;br /&gt;
*exporting registration result to other software&lt;br /&gt;
*exporting result images of registration / segmentation&lt;br /&gt;
*sending control commands to devices and imagers&lt;br /&gt;
*synchronizing multiple navigation software&lt;br /&gt;
&lt;br /&gt;
The idea of outgoing data support is that the Open IGT Link module detects MRML update events (linear transforms and images) and put the new data into Open IGT Link data stream. This mechanism allows other Slicer3 modules to communicate with other OpenIGTLink-compatible software or devices through MRML.&lt;br /&gt;
&lt;br /&gt;
In the next version, the Open IGT Link module handles MRML events to detect updates in MRML nodes (linear transforms and images)&lt;br /&gt;
&lt;br /&gt;
Currently, the new version of Open IGT Link module is being developed. The code is available from SVN repository at:&lt;br /&gt;
 http://svn.na-mi.org/NAMICSandBox/trunk/IGTLodableModules/OpenIGTLinkPrototype&lt;br /&gt;
Please make sure not to load the current version of OpenIGTLink module and OpenIGTLinkPrototype module at the same time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Other Resources=&lt;br /&gt;
*[[OpenIGTLink/Simulators]]&lt;br /&gt;
&lt;br /&gt;
=People=&lt;br /&gt;
*[http://www.spl.harvard.edu/pages/People/tokuda  Junichi Tokuda]&lt;br /&gt;
*[http://www.spl.harvard.edu/pages/People/hliu Haiying Liu]&lt;/div&gt;</summary>
		<author><name>Goerlitz</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=OpenIGTLink/Library/Tutorial&amp;diff=33736</id>
		<title>OpenIGTLink/Library/Tutorial</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=OpenIGTLink/Library/Tutorial&amp;diff=33736"/>
		<updated>2008-12-16T20:35:40Z</updated>

		<summary type="html">&lt;p&gt;Goerlitz: /* Setting up the library */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[OpenIGTLink | &amp;amp;lt;&amp;amp;lt; OpenIGTLink]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Two approaches to use the Open IGT Link=&lt;br /&gt;
&lt;br /&gt;
==Using the low-level C library==&lt;br /&gt;
The library has been built on the low-level C-library called '''igtlutil''', which is a collection of several data structures with supporting functions for data serialization, endian conversion and cyclic redundancy check, written in ANSI C. The developers can directly use this low-level C-library from their programs. The library is particularly useful to develop embedded or old systems that do not have any modern C++ compiler. The usage of igtlutil can be found in [[OpenIGTLink/Tutorial/igtlutil | the igtlutil tutorial page]].&lt;br /&gt;
&lt;br /&gt;
==Using the C++ message classes==&lt;br /&gt;
The library provides much more simple, portable and safer ways to generate standard Open IGT Link messages using C++ classes. The developers can easily add classes to serialize/deserialize their own data types, by inheriting the base message class. It also provides the multi-platform TCP socket / threading classes; the developers can write multi-platform IGT applications, which communicate with other IGT devices and software, with the Open IGT Link library. Those classes are implemented based on Win32 socket /  thread API for Windows and BSD socket / POSIX Thread API for Linux and Mac OS X, and have been tested on those environments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Please refer [[OpenIGTLink/Approaches]] to choose your approach.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Setting up the library=&lt;br /&gt;
Please refer to[[OpenIGTLink/Library/Build | the Open IGT Link library building instruction]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Using the low-level C library (igtlutil)=&lt;br /&gt;
&lt;br /&gt;
The code snippet can be found in [[OpenIGTLink/Tutorial/igtlutil | igtlutil tutorial page]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Using the Open IGT Link Library C++ interface=&lt;br /&gt;
&lt;br /&gt;
==Get the example code==&lt;br /&gt;
The example code is available in the Examples/ directory of Open IGT Link library. The instruction is available on [[OpenIGTLink/Library | the Open IGT Link Library page]].&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:25%; background:#5EAE85&amp;quot;|Example Name&lt;br /&gt;
| style=&amp;quot;width:25%; background:#5EAE85&amp;quot;|Directory&lt;br /&gt;
| style=&amp;quot;width:50%; background:#5EAE85&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| TrackerClient.cxx&lt;br /&gt;
||Example/Tracker&lt;br /&gt;
||Example to send dummy tracking; works as a TCP client.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| TrackerServer.cxx&lt;br /&gt;
||Example/Tracker&lt;br /&gt;
||Example to send dummy tracking; works as a TCP server.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| ReceiveServer.cxx&lt;br /&gt;
||Example/Receiver&lt;br /&gt;
||Example to receive tracking data; works as a TCP server.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| ImagerClient.cxx (to be added)&lt;br /&gt;
||Example/Imager&lt;br /&gt;
||Example to send image data; works as a TCP client&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| ImagerServer.cxx (to be added)&lt;br /&gt;
||Example/Imager&lt;br /&gt;
||Example to send image data; works as a TCP client&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Code snippet from Tracker Client program==&lt;br /&gt;
&lt;br /&gt;
The code &amp;quot;[http://svn.na-mic.org/NAMICSandBox/trunk/OpenIGTLink/Examples/Tracker/TrackerClient.cxx Tracker/TrackerClient.cxx]&amp;quot; demonstrates how to create open igt link message, establish connection with the Open IGT Link server, then repeat sending coordinate data to the server, using Open IGT Link Library.&lt;br /&gt;
&lt;br /&gt;
First, establish connection with server (ip: 192.168.0.1, port number: 18944) using igtl::ClientSocket class:&lt;br /&gt;
&lt;br /&gt;
  igtl::ClientSocket::Pointer socket;&lt;br /&gt;
  socket = igtl::ClientSocket::New();&lt;br /&gt;
  int r = socket-&amp;gt;ConnectToServer(&amp;quot;192.168.0.1&amp;quot;, 18944);&lt;br /&gt;
  &lt;br /&gt;
  if (r != 0)&lt;br /&gt;
    {&lt;br /&gt;
    //&lt;br /&gt;
    // do error handling&lt;br /&gt;
    //&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Prepare a class instance for the Open IGT Link message:&lt;br /&gt;
&lt;br /&gt;
  igtl::TransformMessage::Pointer transMsg;&lt;br /&gt;
  transMsg = igtl::TransformMessage::New();&lt;br /&gt;
&lt;br /&gt;
Set the Open IGT Link device name:&lt;br /&gt;
&lt;br /&gt;
  transMsg-&amp;gt;SetDeviceName(&amp;quot;Tracker&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Substitute matrix into the Matrix4x4 class:&lt;br /&gt;
&lt;br /&gt;
  igtl::Matrix4x4 matrix;&lt;br /&gt;
  GetRandomTestMatrix(matrix);&lt;br /&gt;
&lt;br /&gt;
Set the matrix to the message class:&lt;br /&gt;
&lt;br /&gt;
  transMsg-&amp;gt;SetMatrix(matrix);&lt;br /&gt;
&lt;br /&gt;
Pack the data. This member function generates byte stream formatted in Open IGT Link format.&lt;br /&gt;
&lt;br /&gt;
  transMsg-&amp;gt;Pack();&lt;br /&gt;
&lt;br /&gt;
Send data through TCP/IP socket connection:&lt;br /&gt;
&lt;br /&gt;
  socket-&amp;gt;Send(transMsg-&amp;gt;GetPackPointer(), transMsg-&amp;gt;GetPackSize());&lt;br /&gt;
&lt;br /&gt;
The igtl::ClientSocket class can be replaced by other socket library.&lt;br /&gt;
&lt;br /&gt;
==Code snippet from Receiver Server program==&lt;br /&gt;
&lt;br /&gt;
In contrast to the example above, &amp;quot;[http://svn.na-mic.org/NAMICSandBox/trunk/OpenIGTLink/Examples/Receiver/ReceiveServer.cxx Examlpes/Receiver/ReceiveServer.cxx] demonstrates how to wait for the connection from the client and receive Open IGT Link messages, using the Open IGT Link Library C++ interface.&lt;br /&gt;
&lt;br /&gt;
First, prepare server socket to wait for the client to connect. Suppose the port number is 18944.&lt;br /&gt;
&lt;br /&gt;
  igtl::ServerSocket::Pointer serverSocket;&lt;br /&gt;
  serverSocket = igtl::ServerSocket::New();&lt;br /&gt;
  serverSocket-&amp;gt;CreateServer(port);&lt;br /&gt;
  &lt;br /&gt;
  igtl::ClientSocket::Pointer socket;&lt;br /&gt;
  socket = serverSocket-&amp;gt;WaitForConnection(30000);  // wait for 30000 milliseconds (30 seconds)&lt;br /&gt;
&lt;br /&gt;
If the client connects to the program, the pointer to the socket instance is substituted into the 'socket' pointer. You can check if the socket pointer has been substituted by calling:&lt;br /&gt;
  &lt;br /&gt;
    if (socket.IsNotNull()) // if client connected&lt;br /&gt;
      {&lt;br /&gt;
      // start receiving data&lt;br /&gt;
&lt;br /&gt;
Now the connection has been established. To receive a message header, create igtl::MessageHeader class instance.&lt;br /&gt;
&lt;br /&gt;
        igtl::MessageHeader::Pointer headerMsg;&lt;br /&gt;
        headerMsg = igtl::MessageHeader::New();&lt;br /&gt;
&lt;br /&gt;
Usually, programs start looping at this point. At the beginning of the loop, the headerMsg class must be initialized.&lt;br /&gt;
&lt;br /&gt;
        headerMsg-&amp;gt;InitPack();&lt;br /&gt;
&lt;br /&gt;
Then call Receive() function to get byte stream from the socket connection. The Receive() function returns the size of the received data. You can check the result by comparing returned value with header size (can be obtained by using headerMsg-&amp;gt;GetPackSize())&lt;br /&gt;
&lt;br /&gt;
        int r = socket-&amp;gt;Receive(headerMsg-&amp;gt;GetPackPointer(), headerMsg-&amp;gt;GetPackSize());&lt;br /&gt;
&lt;br /&gt;
After receiving the header, unpack (deserialize) it to extract the header information.&lt;br /&gt;
&lt;br /&gt;
        headerMsg-&amp;gt;Unpack();&lt;br /&gt;
&lt;br /&gt;
The message type can be accessed by headerMsg-&amp;gt;GetDeviceType() function. When you write message handler for TRANSFORM type message, you may compare the type name like:&lt;br /&gt;
&lt;br /&gt;
        if (strcmp(headerMsg-&amp;gt;GetDeviceType(), &amp;quot;TRANSFORM&amp;quot;) == 0)&lt;br /&gt;
          {&lt;br /&gt;
          // Message body handler for TRANSFORM&lt;br /&gt;
&lt;br /&gt;
To receive TRANSFORM message, setup a igtl::TransformMessage class instance&lt;br /&gt;
&lt;br /&gt;
          igtl::TransformMessage::Pointer transMsg;&lt;br /&gt;
          transMsg = igtl::TransformMessage::New();&lt;br /&gt;
&lt;br /&gt;
then put the header information to the transMsg. By calling AllocatePack() function after setting the header, the memory area  to receive the message body is allocated.&lt;br /&gt;
&lt;br /&gt;
          transMsg-&amp;gt;SetMessageHeader(headerMsg);&lt;br /&gt;
          transMsg-&amp;gt;AllocatePack();&lt;br /&gt;
&lt;br /&gt;
Receive the message body&lt;br /&gt;
&lt;br /&gt;
          socket-&amp;gt;Receive(transMsg-&amp;gt;GetPackBodyPointer(), transMsg-&amp;gt;GetPackBodySize());&lt;br /&gt;
&lt;br /&gt;
Unpack (deserialize) the message body. If 1 is specified, Unpack() function performs cyclic redundancy check (CRC) and unpack the data only if CRC passes. If the data is successfully unpacked, the Unpack() function returns a value with igtl::MessageHeader::UNPACK_BODY bit.&lt;br /&gt;
&lt;br /&gt;
          int c = transMsg-&amp;gt;Unpack(1);&lt;br /&gt;
          if (c &amp;amp; igtl::MessageHeader::UNPACK_BODY) &lt;br /&gt;
            {&lt;br /&gt;
            // if CRC check is OK. Read transform data.&lt;br /&gt;
              igtl::Matrix4x4 matrix;&lt;br /&gt;
              transMsg-&amp;gt;GetMatrix(matrix);&lt;br /&gt;
              igtl::PrintMatrix(matrix);&lt;br /&gt;
            }&lt;/div&gt;</summary>
		<author><name>Goerlitz</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=OpenIGTLink/Approaches&amp;diff=33735</id>
		<title>OpenIGTLink/Approaches</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=OpenIGTLink/Approaches&amp;diff=33735"/>
		<updated>2008-12-16T20:23:34Z</updated>

		<summary type="html">&lt;p&gt;Goerlitz: /* Use the Open IGT Link Library */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[OpenIGTLink | &amp;amp;lt;&amp;amp;lt; OpenIGTLink]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Three Approaches=&lt;br /&gt;
==Implement by yourself==&lt;br /&gt;
*Writing applications in non-C/C++ languages&lt;br /&gt;
*The protocol is defined in [[OpenIGTLink/Protocol | the protocol description page]].&lt;br /&gt;
&lt;br /&gt;
==Use simple C code (igtlutil) ==&lt;br /&gt;
*The code provides C structures for the generic header, image header and transform header, and supporting functions to create a message packet.&lt;br /&gt;
*Suitable for applications written in C and C++&lt;br /&gt;
*You can just copy the files into your source directory. You never have library link issue.&lt;br /&gt;
&lt;br /&gt;
==Use the Open IGT Link Library==&lt;br /&gt;
*The library supports&lt;br /&gt;
**Classes to create Open IGT Link message&lt;br /&gt;
**TCP/IP Socket&lt;br /&gt;
**Thread and Mutex useful to make server program&lt;br /&gt;
*The library instruction is available on [[OpenIGTLink/Library | the Open IGT Link Library page]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:25%; background:#5EAE85&amp;quot;|Features &lt;br /&gt;
| style=&amp;quot;width:25%; background:#5EAE85&amp;quot;|From scratch&lt;br /&gt;
| style=&amp;quot;width:25%; background:#5EAE85&amp;quot;|igtlutil&lt;br /&gt;
| style=&amp;quot;width:25%; background:#5EAE85&amp;quot;|Open IGT Link Library&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| Language&lt;br /&gt;
||Any&lt;br /&gt;
||C (can be included in C++ codes)&lt;br /&gt;
||C++&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| Platform&lt;br /&gt;
||Any&lt;br /&gt;
||Where ANSI C compiler is available&lt;br /&gt;
||Windows, Linux/UNIX, Mac OS X&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| Generic Header&lt;br /&gt;
||-&lt;br /&gt;
||Yes&lt;br /&gt;
||Yes&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| Transform&lt;br /&gt;
||-&lt;br /&gt;
||Yes&lt;br /&gt;
||Yes&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| Image&lt;br /&gt;
||-&lt;br /&gt;
||Yes&lt;br /&gt;
||Yes&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| Endian Conversion&lt;br /&gt;
||-&lt;br /&gt;
||Yes&lt;br /&gt;
||Yes&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| CRC Calculation&lt;br /&gt;
||-&lt;br /&gt;
||Yes&lt;br /&gt;
||Yes&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| Socket&lt;br /&gt;
||-&lt;br /&gt;
||-&lt;br /&gt;
||Yes&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| Thread &amp;amp; Mutex&lt;br /&gt;
||-&lt;br /&gt;
||-&lt;br /&gt;
||Yes&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Goerlitz</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=OpenIGTLink/Simlators&amp;diff=33701</id>
		<title>OpenIGTLink/Simlators</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=OpenIGTLink/Simlators&amp;diff=33701"/>
		<updated>2008-12-16T16:09:48Z</updated>

		<summary type="html">&lt;p&gt;Goerlitz: /* Building Simulator Programs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[OpenIGTLink | &amp;amp;lt;&amp;amp;lt; OpenIGTLink]]&lt;br /&gt;
&lt;br /&gt;
=Building Simulator Programs=&lt;br /&gt;
The simulator programs come with [[OpenIGTLink/Library| the OpenIGTLink Library]]. You can find source codes in the OpenIGTLink/Examples directory.&lt;br /&gt;
Please refer to [[OpenIGTLink/Library| this page]] to build the library with the simulator programs.&lt;br /&gt;
&lt;br /&gt;
If the simulator programs are successfully built, you could find the binaries in the OpenIGTLink-build/bin directory.&lt;br /&gt;
&lt;br /&gt;
=List of Simulators=&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:25%; background:#5EAE85&amp;quot;|Example Name&lt;br /&gt;
| style=&amp;quot;width:25%; background:#5EAE85&amp;quot;|Directory&lt;br /&gt;
| style=&amp;quot;width:50%; background:#5EAE85&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| TrackerClient.cxx&lt;br /&gt;
||Example/Tracker&lt;br /&gt;
||Example to send dummy tracking; works as a TCP client.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| TrackerServer.cxx&lt;br /&gt;
||Example/Tracker&lt;br /&gt;
||Example to send dummy tracking; works as a TCP server.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| ReceiveServer.cxx&lt;br /&gt;
||Example/Receiver&lt;br /&gt;
||Example to receive tracking data; works as a TCP server.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| ImagerClient.cxx&lt;br /&gt;
||Example/Imager&lt;br /&gt;
||Example to send image data; works as a TCP client&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| ImagerServer.cxx&lt;br /&gt;
||Example/Imager&lt;br /&gt;
||Example to send image data; works as a TCP client&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Goerlitz</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=OpenIGTLink/Library/Tutorial&amp;diff=33700</id>
		<title>OpenIGTLink/Library/Tutorial</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=OpenIGTLink/Library/Tutorial&amp;diff=33700"/>
		<updated>2008-12-16T16:08:53Z</updated>

		<summary type="html">&lt;p&gt;Goerlitz: /* Code snippet from Tracker Client program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[OpenIGTLink | &amp;amp;lt;&amp;amp;lt; OpenIGTLink]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Two approaches to use the Open IGT Link=&lt;br /&gt;
&lt;br /&gt;
==Using the low-level C library==&lt;br /&gt;
The library has been built on the low-level C-library called '''igtlutil''', which is a collection of several data structures with supporting functions for data serialization, endian conversion and cyclic redundancy check, written in ANSI C. The developers can directly use this low-level C-library from their programs. The library is particularly useful to develop embedded or old systems that do not have any modern C++ compiler. The usage of igtlutil can be found in [[OpenIGTLink/Tutorial/igtlutil | the igtlutil tutorial page]].&lt;br /&gt;
&lt;br /&gt;
==Using the C++ message classes==&lt;br /&gt;
The library provides much more simple, portable and safer ways to generate standard Open IGT Link messages using C++ classes. The developers can easily add classes to serialize/deserialize their own data types, by inheriting the base message class. It also provides the multi-platform TCP socket / threading classes; the developers can write multi-platform IGT applications, which communicate with other IGT devices and software, with the Open IGT Link library. Those classes are implemented based on Win32 socket /  thread API for Windows and BSD socket / POSIX Thread API for Linux and Mac OS X, and have been tested on those environments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Please refer [[OpenIGTLink/Approaches]] to choose your approach.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Setting up the library=&lt;br /&gt;
Please refer [[OpenIGTLink/Library/Build | the Open IGT Link library building instruction]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Using the low-level C library (igtlutil)=&lt;br /&gt;
&lt;br /&gt;
The code snippet can be found in [[OpenIGTLink/Tutorial/igtlutil | igtlutil tutorial page]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Using the Open IGT Link Library C++ interface=&lt;br /&gt;
&lt;br /&gt;
==Get the example code==&lt;br /&gt;
The example code is available in the Examples/ directory of Open IGT Link library. The instruction is available on [[OpenIGTLink/Library | the Open IGT Link Library page]].&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:25%; background:#5EAE85&amp;quot;|Example Name&lt;br /&gt;
| style=&amp;quot;width:25%; background:#5EAE85&amp;quot;|Directory&lt;br /&gt;
| style=&amp;quot;width:50%; background:#5EAE85&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| TrackerClient.cxx&lt;br /&gt;
||Example/Tracker&lt;br /&gt;
||Example to send dummy tracking; works as a TCP client.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| TrackerServer.cxx&lt;br /&gt;
||Example/Tracker&lt;br /&gt;
||Example to send dummy tracking; works as a TCP server.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| ReceiveServer.cxx&lt;br /&gt;
||Example/Receiver&lt;br /&gt;
||Example to receive tracking data; works as a TCP server.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| ImagerClient.cxx (to be added)&lt;br /&gt;
||Example/Imager&lt;br /&gt;
||Example to send image data; works as a TCP client&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| ImagerServer.cxx (to be added)&lt;br /&gt;
||Example/Imager&lt;br /&gt;
||Example to send image data; works as a TCP client&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Code snippet from Tracker Client program==&lt;br /&gt;
&lt;br /&gt;
The code &amp;quot;[http://svn.na-mic.org/NAMICSandBox/trunk/OpenIGTLink/Examples/Tracker/TrackerClient.cxx Tracker/TrackerClient.cxx]&amp;quot; demonstrates how to create open igt link message, establish connection with the Open IGT Link server, then repeat sending coordinate data to the server, using Open IGT Link Library.&lt;br /&gt;
&lt;br /&gt;
First, establish connection with server (ip: 192.168.0.1, port number: 18944) using igtl::ClientSocket class:&lt;br /&gt;
&lt;br /&gt;
  igtl::ClientSocket::Pointer socket;&lt;br /&gt;
  socket = igtl::ClientSocket::New();&lt;br /&gt;
  int r = socket-&amp;gt;ConnectToServer(&amp;quot;192.168.0.1&amp;quot;, 18944);&lt;br /&gt;
  &lt;br /&gt;
  if (r != 0)&lt;br /&gt;
    {&lt;br /&gt;
    //&lt;br /&gt;
    // do error handling&lt;br /&gt;
    //&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Prepare a class instance for the Open IGT Link message:&lt;br /&gt;
&lt;br /&gt;
  igtl::TransformMessage::Pointer transMsg;&lt;br /&gt;
  transMsg = igtl::TransformMessage::New();&lt;br /&gt;
&lt;br /&gt;
Set the Open IGT Link device name:&lt;br /&gt;
&lt;br /&gt;
  transMsg-&amp;gt;SetDeviceName(&amp;quot;Tracker&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Substitute matrix into the Matrix4x4 class:&lt;br /&gt;
&lt;br /&gt;
  igtl::Matrix4x4 matrix;&lt;br /&gt;
  GetRandomTestMatrix(matrix);&lt;br /&gt;
&lt;br /&gt;
Set the matrix to the message class:&lt;br /&gt;
&lt;br /&gt;
  transMsg-&amp;gt;SetMatrix(matrix);&lt;br /&gt;
&lt;br /&gt;
Pack the data. This member function generates byte stream formatted in Open IGT Link format.&lt;br /&gt;
&lt;br /&gt;
  transMsg-&amp;gt;Pack();&lt;br /&gt;
&lt;br /&gt;
Send data through TCP/IP socket connection:&lt;br /&gt;
&lt;br /&gt;
  socket-&amp;gt;Send(transMsg-&amp;gt;GetPackPointer(), transMsg-&amp;gt;GetPackSize());&lt;br /&gt;
&lt;br /&gt;
The igtl::ClientSocket class can be replaced by other socket library.&lt;br /&gt;
&lt;br /&gt;
==Code snippet from Receiver Server program==&lt;br /&gt;
&lt;br /&gt;
In contrast to the example above, &amp;quot;[http://svn.na-mic.org/NAMICSandBox/trunk/OpenIGTLink/Examples/Receiver/ReceiveServer.cxx Examlpes/Receiver/ReceiveServer.cxx] demonstrates how to wait for the connection from the client and receive Open IGT Link messages, using the Open IGT Link Library C++ interface.&lt;br /&gt;
&lt;br /&gt;
First, prepare server socket to wait for the client to connect. Suppose the port number is 18944.&lt;br /&gt;
&lt;br /&gt;
  igtl::ServerSocket::Pointer serverSocket;&lt;br /&gt;
  serverSocket = igtl::ServerSocket::New();&lt;br /&gt;
  serverSocket-&amp;gt;CreateServer(port);&lt;br /&gt;
  &lt;br /&gt;
  igtl::ClientSocket::Pointer socket;&lt;br /&gt;
  socket = serverSocket-&amp;gt;WaitForConnection(30000);  // wait for 30000 milliseconds (30 seconds)&lt;br /&gt;
&lt;br /&gt;
If the client connects to the program, the pointer to the socket instance is substituted into the 'socket' pointer. You can check if the socket pointer has been substituted by calling:&lt;br /&gt;
  &lt;br /&gt;
    if (socket.IsNotNull()) // if client connected&lt;br /&gt;
      {&lt;br /&gt;
      // start receiving data&lt;br /&gt;
&lt;br /&gt;
Now the connection has been established. To receive a message header, create igtl::MessageHeader class instance.&lt;br /&gt;
&lt;br /&gt;
        igtl::MessageHeader::Pointer headerMsg;&lt;br /&gt;
        headerMsg = igtl::MessageHeader::New();&lt;br /&gt;
&lt;br /&gt;
Usually, programs start looping at this point. At the beginning of the loop, the headerMsg class must be initialized.&lt;br /&gt;
&lt;br /&gt;
        headerMsg-&amp;gt;InitPack();&lt;br /&gt;
&lt;br /&gt;
Then call Receive() function to get byte stream from the socket connection. The Receive() function returns the size of the received data. You can check the result by comparing returned value with header size (can be obtained by using headerMsg-&amp;gt;GetPackSize())&lt;br /&gt;
&lt;br /&gt;
        int r = socket-&amp;gt;Receive(headerMsg-&amp;gt;GetPackPointer(), headerMsg-&amp;gt;GetPackSize());&lt;br /&gt;
&lt;br /&gt;
After receiving the header, unpack (deserialize) it to extract the header information.&lt;br /&gt;
&lt;br /&gt;
        headerMsg-&amp;gt;Unpack();&lt;br /&gt;
&lt;br /&gt;
The message type can be accessed by headerMsg-&amp;gt;GetDeviceType() function. When you write message handler for TRANSFORM type message, you may compare the type name like:&lt;br /&gt;
&lt;br /&gt;
        if (strcmp(headerMsg-&amp;gt;GetDeviceType(), &amp;quot;TRANSFORM&amp;quot;) == 0)&lt;br /&gt;
          {&lt;br /&gt;
          // Message body handler for TRANSFORM&lt;br /&gt;
&lt;br /&gt;
To receive TRANSFORM message, setup a igtl::TransformMessage class instance&lt;br /&gt;
&lt;br /&gt;
          igtl::TransformMessage::Pointer transMsg;&lt;br /&gt;
          transMsg = igtl::TransformMessage::New();&lt;br /&gt;
&lt;br /&gt;
then put the header information to the transMsg. By calling AllocatePack() function after setting the header, the memory area  to receive the message body is allocated.&lt;br /&gt;
&lt;br /&gt;
          transMsg-&amp;gt;SetMessageHeader(headerMsg);&lt;br /&gt;
          transMsg-&amp;gt;AllocatePack();&lt;br /&gt;
&lt;br /&gt;
Receive the message body&lt;br /&gt;
&lt;br /&gt;
          socket-&amp;gt;Receive(transMsg-&amp;gt;GetPackBodyPointer(), transMsg-&amp;gt;GetPackBodySize());&lt;br /&gt;
&lt;br /&gt;
Unpack (deserialize) the message body. If 1 is specified, Unpack() function performs cyclic redundancy check (CRC) and unpack the data only if CRC passes. If the data is successfully unpacked, the Unpack() function returns a value with igtl::MessageHeader::UNPACK_BODY bit.&lt;br /&gt;
&lt;br /&gt;
          int c = transMsg-&amp;gt;Unpack(1);&lt;br /&gt;
          if (c &amp;amp; igtl::MessageHeader::UNPACK_BODY) &lt;br /&gt;
            {&lt;br /&gt;
            // if CRC check is OK. Read transform data.&lt;br /&gt;
              igtl::Matrix4x4 matrix;&lt;br /&gt;
              transMsg-&amp;gt;GetMatrix(matrix);&lt;br /&gt;
              igtl::PrintMatrix(matrix);&lt;br /&gt;
            }&lt;/div&gt;</summary>
		<author><name>Goerlitz</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=OpenIGTLink/Library/Tutorial&amp;diff=33699</id>
		<title>OpenIGTLink/Library/Tutorial</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=OpenIGTLink/Library/Tutorial&amp;diff=33699"/>
		<updated>2008-12-16T16:08:33Z</updated>

		<summary type="html">&lt;p&gt;Goerlitz: /* Get the example code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[OpenIGTLink | &amp;amp;lt;&amp;amp;lt; OpenIGTLink]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Two approaches to use the Open IGT Link=&lt;br /&gt;
&lt;br /&gt;
==Using the low-level C library==&lt;br /&gt;
The library has been built on the low-level C-library called '''igtlutil''', which is a collection of several data structures with supporting functions for data serialization, endian conversion and cyclic redundancy check, written in ANSI C. The developers can directly use this low-level C-library from their programs. The library is particularly useful to develop embedded or old systems that do not have any modern C++ compiler. The usage of igtlutil can be found in [[OpenIGTLink/Tutorial/igtlutil | the igtlutil tutorial page]].&lt;br /&gt;
&lt;br /&gt;
==Using the C++ message classes==&lt;br /&gt;
The library provides much more simple, portable and safer ways to generate standard Open IGT Link messages using C++ classes. The developers can easily add classes to serialize/deserialize their own data types, by inheriting the base message class. It also provides the multi-platform TCP socket / threading classes; the developers can write multi-platform IGT applications, which communicate with other IGT devices and software, with the Open IGT Link library. Those classes are implemented based on Win32 socket /  thread API for Windows and BSD socket / POSIX Thread API for Linux and Mac OS X, and have been tested on those environments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Please refer [[OpenIGTLink/Approaches]] to choose your approach.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Setting up the library=&lt;br /&gt;
Please refer [[OpenIGTLink/Library/Build | the Open IGT Link library building instruction]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Using the low-level C library (igtlutil)=&lt;br /&gt;
&lt;br /&gt;
The code snippet can be found in [[OpenIGTLink/Tutorial/igtlutil | igtlutil tutorial page]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Using the Open IGT Link Library C++ interface=&lt;br /&gt;
&lt;br /&gt;
==Get the example code==&lt;br /&gt;
The example code is available in the Examples/ directory of Open IGT Link library. The instruction is available on [[OpenIGTLink/Library | the Open IGT Link Library page]].&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:25%; background:#5EAE85&amp;quot;|Example Name&lt;br /&gt;
| style=&amp;quot;width:25%; background:#5EAE85&amp;quot;|Directory&lt;br /&gt;
| style=&amp;quot;width:50%; background:#5EAE85&amp;quot;|Description&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| TrackerClient.cxx&lt;br /&gt;
||Example/Tracker&lt;br /&gt;
||Example to send dummy tracking; works as a TCP client.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| TrackerServer.cxx&lt;br /&gt;
||Example/Tracker&lt;br /&gt;
||Example to send dummy tracking; works as a TCP server.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| ReceiveServer.cxx&lt;br /&gt;
||Example/Receiver&lt;br /&gt;
||Example to receive tracking data; works as a TCP server.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| ImagerClient.cxx (to be added)&lt;br /&gt;
||Example/Imager&lt;br /&gt;
||Example to send image data; works as a TCP client&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;width:25%; background:#8EDEB5&amp;quot;| ImagerServer.cxx (to be added)&lt;br /&gt;
||Example/Imager&lt;br /&gt;
||Example to send image data; works as a TCP client&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Code snippet from Tracker Client program==&lt;br /&gt;
&lt;br /&gt;
The code &amp;quot;[http://svn.na-mic.org/NAMICSandBox/trunk/OpenIGTLink/Examples/Tracker/TrackerClient.cxx Tracker/TrackerClient.cxx]&amp;quot; demonstrates how to create open igt link message, establish connection with the Open IGT Link server, then repeat sending coordinate data to the server, using Open IGT Link Library.&lt;br /&gt;
&lt;br /&gt;
First, establish connection with server (ip: 192.168.0.1, port number: 18944) using igtl::ClientSocket class:&lt;br /&gt;
&lt;br /&gt;
  igtl::ClientSocket::Pointer socket;&lt;br /&gt;
  socket = igtl::ClientSocket::New();&lt;br /&gt;
  int r = socket-&amp;gt;ConnectToServer(&amp;quot;192.168.0.1&amp;quot;, 18944);&lt;br /&gt;
  &lt;br /&gt;
  if (r != 0)&lt;br /&gt;
    {&lt;br /&gt;
    //&lt;br /&gt;
    // do error handling&lt;br /&gt;
    //&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Prepare a class instance for the Open IGT Link message:&lt;br /&gt;
&lt;br /&gt;
  igtl::TransformMessage::Pointer transMsg;&lt;br /&gt;
  transMsg = igtl::TransformMessage::New();&lt;br /&gt;
&lt;br /&gt;
Set Open IGT Link device name:&lt;br /&gt;
&lt;br /&gt;
  transMsg-&amp;gt;SetDeviceName(&amp;quot;Tracker&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Substitute matrix into the Matrix4x4 class:&lt;br /&gt;
&lt;br /&gt;
  igtl::Matrix4x4 matrix;&lt;br /&gt;
  GetRandomTestMatrix(matrix);&lt;br /&gt;
&lt;br /&gt;
Set the matrix to the message class:&lt;br /&gt;
&lt;br /&gt;
  transMsg-&amp;gt;SetMatrix(matrix);&lt;br /&gt;
&lt;br /&gt;
Pack the data. This member function generates byte stream formatted in Open IGT Link format.&lt;br /&gt;
&lt;br /&gt;
  transMsg-&amp;gt;Pack();&lt;br /&gt;
&lt;br /&gt;
Send data through TCP/IP socket connection:&lt;br /&gt;
&lt;br /&gt;
  socket-&amp;gt;Send(transMsg-&amp;gt;GetPackPointer(), transMsg-&amp;gt;GetPackSize());&lt;br /&gt;
&lt;br /&gt;
The igtl::ClientSocket class can be replaced by other socket library.&lt;br /&gt;
&lt;br /&gt;
==Code snippet from Receiver Server program==&lt;br /&gt;
&lt;br /&gt;
In contrast to the example above, &amp;quot;[http://svn.na-mic.org/NAMICSandBox/trunk/OpenIGTLink/Examples/Receiver/ReceiveServer.cxx Examlpes/Receiver/ReceiveServer.cxx] demonstrates how to wait for the connection from the client and receive Open IGT Link messages, using the Open IGT Link Library C++ interface.&lt;br /&gt;
&lt;br /&gt;
First, prepare server socket to wait for the client to connect. Suppose the port number is 18944.&lt;br /&gt;
&lt;br /&gt;
  igtl::ServerSocket::Pointer serverSocket;&lt;br /&gt;
  serverSocket = igtl::ServerSocket::New();&lt;br /&gt;
  serverSocket-&amp;gt;CreateServer(port);&lt;br /&gt;
  &lt;br /&gt;
  igtl::ClientSocket::Pointer socket;&lt;br /&gt;
  socket = serverSocket-&amp;gt;WaitForConnection(30000);  // wait for 30000 milliseconds (30 seconds)&lt;br /&gt;
&lt;br /&gt;
If the client connects to the program, the pointer to the socket instance is substituted into the 'socket' pointer. You can check if the socket pointer has been substituted by calling:&lt;br /&gt;
  &lt;br /&gt;
    if (socket.IsNotNull()) // if client connected&lt;br /&gt;
      {&lt;br /&gt;
      // start receiving data&lt;br /&gt;
&lt;br /&gt;
Now the connection has been established. To receive a message header, create igtl::MessageHeader class instance.&lt;br /&gt;
&lt;br /&gt;
        igtl::MessageHeader::Pointer headerMsg;&lt;br /&gt;
        headerMsg = igtl::MessageHeader::New();&lt;br /&gt;
&lt;br /&gt;
Usually, programs start looping at this point. At the beginning of the loop, the headerMsg class must be initialized.&lt;br /&gt;
&lt;br /&gt;
        headerMsg-&amp;gt;InitPack();&lt;br /&gt;
&lt;br /&gt;
Then call Receive() function to get byte stream from the socket connection. The Receive() function returns the size of the received data. You can check the result by comparing returned value with header size (can be obtained by using headerMsg-&amp;gt;GetPackSize())&lt;br /&gt;
&lt;br /&gt;
        int r = socket-&amp;gt;Receive(headerMsg-&amp;gt;GetPackPointer(), headerMsg-&amp;gt;GetPackSize());&lt;br /&gt;
&lt;br /&gt;
After receiving the header, unpack (deserialize) it to extract the header information.&lt;br /&gt;
&lt;br /&gt;
        headerMsg-&amp;gt;Unpack();&lt;br /&gt;
&lt;br /&gt;
The message type can be accessed by headerMsg-&amp;gt;GetDeviceType() function. When you write message handler for TRANSFORM type message, you may compare the type name like:&lt;br /&gt;
&lt;br /&gt;
        if (strcmp(headerMsg-&amp;gt;GetDeviceType(), &amp;quot;TRANSFORM&amp;quot;) == 0)&lt;br /&gt;
          {&lt;br /&gt;
          // Message body handler for TRANSFORM&lt;br /&gt;
&lt;br /&gt;
To receive TRANSFORM message, setup a igtl::TransformMessage class instance&lt;br /&gt;
&lt;br /&gt;
          igtl::TransformMessage::Pointer transMsg;&lt;br /&gt;
          transMsg = igtl::TransformMessage::New();&lt;br /&gt;
&lt;br /&gt;
then put the header information to the transMsg. By calling AllocatePack() function after setting the header, the memory area  to receive the message body is allocated.&lt;br /&gt;
&lt;br /&gt;
          transMsg-&amp;gt;SetMessageHeader(headerMsg);&lt;br /&gt;
          transMsg-&amp;gt;AllocatePack();&lt;br /&gt;
&lt;br /&gt;
Receive the message body&lt;br /&gt;
&lt;br /&gt;
          socket-&amp;gt;Receive(transMsg-&amp;gt;GetPackBodyPointer(), transMsg-&amp;gt;GetPackBodySize());&lt;br /&gt;
&lt;br /&gt;
Unpack (deserialize) the message body. If 1 is specified, Unpack() function performs cyclic redundancy check (CRC) and unpack the data only if CRC passes. If the data is successfully unpacked, the Unpack() function returns a value with igtl::MessageHeader::UNPACK_BODY bit.&lt;br /&gt;
&lt;br /&gt;
          int c = transMsg-&amp;gt;Unpack(1);&lt;br /&gt;
          if (c &amp;amp; igtl::MessageHeader::UNPACK_BODY) &lt;br /&gt;
            {&lt;br /&gt;
            // if CRC check is OK. Read transform data.&lt;br /&gt;
              igtl::Matrix4x4 matrix;&lt;br /&gt;
              transMsg-&amp;gt;GetMatrix(matrix);&lt;br /&gt;
              igtl::PrintMatrix(matrix);&lt;br /&gt;
            }&lt;/div&gt;</summary>
		<author><name>Goerlitz</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=OpenIGTLink/Matlab&amp;diff=33697</id>
		<title>OpenIGTLink/Matlab</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=OpenIGTLink/Matlab&amp;diff=33697"/>
		<updated>2008-12-16T15:58:38Z</updated>

		<summary type="html">&lt;p&gt;Goerlitz: /* Build MEX files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[OpenIGTLink | &amp;amp;lt;&amp;amp;lt; OpenIGTLink]]&lt;br /&gt;
&lt;br /&gt;
=About the project=&lt;br /&gt;
The objective of this project is to provide OpenIGTLink interface for [http://www.mathworks.com/ Matlab] / [http://www.gnu.org/software/octave/ Octave] to support research and development in image guided therapy (IGT). Matlab and Octave are widely used for prototyping image and signal processing algorithms. They also offer many powerful function sets to handle matrix and coordinate data, which is useful to test and analyze coordinate data exported from tracking and robotic devices.&lt;br /&gt;
The OpenIGTLink interface for Matlab / Octave allows importing and exporting several types of data that can be handled in the OpenIGTLink protocol in a Matlab / Octave environment. It provides a rapid prototyping environment, which many researchers and engineers are already familiar with.&lt;br /&gt;
&lt;br /&gt;
This project is a generalization of [[Projects/Slicer3/2007_Project_Week_Slicer_Matlab_Pipeline_for_scalars_and_tensors | Slicer Matlab Pipeline project]] in the 2007 NA-MIC Project Week.&lt;br /&gt;
&lt;br /&gt;
=How does it work?=&lt;br /&gt;
The OpenIGTLink Matlab interface is implemented as a set of MEX Files, which are C/C++ source codes called from Matlab. Those MEX files simply receive data from Matlab, connect to the OpenIGTLink receiver, serialize the data in an appropriate format using the OpenIGTLink Library, and send it to the receiver.&lt;br /&gt;
&lt;br /&gt;
The usage of the interface is quite simple. The following example Matlab code is sending trancking data to the receiver waiting at port #18944 on the localhost.&lt;br /&gt;
&lt;br /&gt;
 %%% affine transform matrix&lt;br /&gt;
 M = [1.0, 0.0, 0.0, 0.0;&lt;br /&gt;
      0.0,-1.0, 0.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 1.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 0.0, 1.0];&lt;br /&gt;
 &lt;br /&gt;
 IMGDATA.Type = 'TRANSFORM';&lt;br /&gt;
 IMGDATA.Name = 'MatlabTrans';&lt;br /&gt;
 IMGDATA.Trans = M;&lt;br /&gt;
 &lt;br /&gt;
 sd = igtlopen('localhost', 18944);&lt;br /&gt;
 r = igtlsend(sd, IMGDATA);&lt;br /&gt;
 igtlclose(sd);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For tracking data transfer:&lt;br /&gt;
&lt;br /&gt;
 %%% read image data&lt;br /&gt;
 fid = fopen('igtlTestImage1.raw', 'r');&lt;br /&gt;
 I = fread(fid, [256 256], 'uint8')';&lt;br /&gt;
 fclose(fid);&lt;br /&gt;
 &lt;br /&gt;
 %%% affine transform matrix&lt;br /&gt;
 M = [1.0, 0.0, 0.0, 0.0;&lt;br /&gt;
      0.0,-1.0, 0.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 1.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 0.0, 1.0];&lt;br /&gt;
 &lt;br /&gt;
 IMGDATA.Type = 'IMAGE';&lt;br /&gt;
 IMGDATA.Name = 'MatlabImage';&lt;br /&gt;
 IMGDATA.Image = I;&lt;br /&gt;
 IMGDATA.Trans = M;&lt;br /&gt;
 &lt;br /&gt;
 %%% send the image data through OpenIGTLink connection&lt;br /&gt;
 sd = igtlopen('localhost', 18944);&lt;br /&gt;
 r = igtlsend(sd, IMGDATA);&lt;br /&gt;
 igtlclose(sd);&lt;br /&gt;
&lt;br /&gt;
=How to Get Started=&lt;br /&gt;
&lt;br /&gt;
==Install the OpenIGTLink Library==&lt;br /&gt;
The instruction can be found in [[OpenIGTLink/Library]]&lt;br /&gt;
&lt;br /&gt;
==Get the Matlab OpenIGTLink interface source code==&lt;br /&gt;
The OpenIGTLink/Matlab interface is in the initial stage of development. The source code is available from NA-MIC SandBox repository at&lt;br /&gt;
&lt;br /&gt;
  http://svn.na-mic.org/NAMICSandBox/trunk/BRPTools/MatlabIGTL&lt;br /&gt;
&lt;br /&gt;
==Build MEX files==&lt;br /&gt;
You need to have a MEX compiler or octave to the build MEX binaries.&lt;br /&gt;
To build the binaries, you may need to edit the Makefile.&lt;br /&gt;
&lt;br /&gt;
First substitute the path to the OpenIGTLink Library source and binary directories installed on your system:&lt;br /&gt;
  ### OpenIGTLink Library&lt;br /&gt;
  IGTLSRC= /projects/igtdev/tokuda/igtl/OpenIGTLink&lt;br /&gt;
  IGTLBLD= /projects/igtdev/tokuda/igtl/OpenIGTLink-build&lt;br /&gt;
&lt;br /&gt;
If you use Maltab, specify the full path to the MEX compiler. You don't need to have any options to the MEX compiler.&lt;br /&gt;
  MEX    = /local/os-exact/pkg/Matlab71-64/bin/mex&lt;br /&gt;
  MEXOPT = &lt;br /&gt;
&lt;br /&gt;
If you use Octave, specify the full path to the mkoctfile program and &amp;quot;--mex&amp;quot; option.&lt;br /&gt;
  MEX    = /Applications/Octave.app/Contents/Resources/bin/mkoctfile&lt;br /&gt;
  MEXOPT = --mex&lt;br /&gt;
&lt;br /&gt;
Now you are ready to build your MEX file. Run make. If the MEX files are successfully built, you can find:&lt;br /&gt;
 igtlclose.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
 igtlopen.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
 igtlsend.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;arc-name&amp;gt; is the architecture name of your system.&lt;br /&gt;
&lt;br /&gt;
=Contact=&lt;br /&gt;
&lt;br /&gt;
We are not providing a support for this software, but questions and requests are always welcome. If you have any, please contact&lt;br /&gt;
[[User:Tokuda| Junichi Tokuda]] at Brigham and Women's Hospital.&lt;/div&gt;</summary>
		<author><name>Goerlitz</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=OpenIGTLink/Matlab&amp;diff=33696</id>
		<title>OpenIGTLink/Matlab</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=OpenIGTLink/Matlab&amp;diff=33696"/>
		<updated>2008-12-16T15:57:45Z</updated>

		<summary type="html">&lt;p&gt;Goerlitz: /* Build MEX files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[OpenIGTLink | &amp;amp;lt;&amp;amp;lt; OpenIGTLink]]&lt;br /&gt;
&lt;br /&gt;
=About the project=&lt;br /&gt;
The objective of this project is to provide OpenIGTLink interface for [http://www.mathworks.com/ Matlab] / [http://www.gnu.org/software/octave/ Octave] to support research and development in image guided therapy (IGT). Matlab and Octave are widely used for prototyping image and signal processing algorithms. They also offer many powerful function sets to handle matrix and coordinate data, which is useful to test and analyze coordinate data exported from tracking and robotic devices.&lt;br /&gt;
The OpenIGTLink interface for Matlab / Octave allows importing and exporting several types of data that can be handled in the OpenIGTLink protocol in a Matlab / Octave environment. It provides a rapid prototyping environment, which many researchers and engineers are already familiar with.&lt;br /&gt;
&lt;br /&gt;
This project is a generalization of [[Projects/Slicer3/2007_Project_Week_Slicer_Matlab_Pipeline_for_scalars_and_tensors | Slicer Matlab Pipeline project]] in the 2007 NA-MIC Project Week.&lt;br /&gt;
&lt;br /&gt;
=How does it work?=&lt;br /&gt;
The OpenIGTLink Matlab interface is implemented as a set of MEX Files, which are C/C++ source codes called from Matlab. Those MEX files simply receive data from Matlab, connect to the OpenIGTLink receiver, serialize the data in an appropriate format using the OpenIGTLink Library, and send it to the receiver.&lt;br /&gt;
&lt;br /&gt;
The usage of the interface is quite simple. The following example Matlab code is sending trancking data to the receiver waiting at port #18944 on the localhost.&lt;br /&gt;
&lt;br /&gt;
 %%% affine transform matrix&lt;br /&gt;
 M = [1.0, 0.0, 0.0, 0.0;&lt;br /&gt;
      0.0,-1.0, 0.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 1.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 0.0, 1.0];&lt;br /&gt;
 &lt;br /&gt;
 IMGDATA.Type = 'TRANSFORM';&lt;br /&gt;
 IMGDATA.Name = 'MatlabTrans';&lt;br /&gt;
 IMGDATA.Trans = M;&lt;br /&gt;
 &lt;br /&gt;
 sd = igtlopen('localhost', 18944);&lt;br /&gt;
 r = igtlsend(sd, IMGDATA);&lt;br /&gt;
 igtlclose(sd);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For tracking data transfer:&lt;br /&gt;
&lt;br /&gt;
 %%% read image data&lt;br /&gt;
 fid = fopen('igtlTestImage1.raw', 'r');&lt;br /&gt;
 I = fread(fid, [256 256], 'uint8')';&lt;br /&gt;
 fclose(fid);&lt;br /&gt;
 &lt;br /&gt;
 %%% affine transform matrix&lt;br /&gt;
 M = [1.0, 0.0, 0.0, 0.0;&lt;br /&gt;
      0.0,-1.0, 0.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 1.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 0.0, 1.0];&lt;br /&gt;
 &lt;br /&gt;
 IMGDATA.Type = 'IMAGE';&lt;br /&gt;
 IMGDATA.Name = 'MatlabImage';&lt;br /&gt;
 IMGDATA.Image = I;&lt;br /&gt;
 IMGDATA.Trans = M;&lt;br /&gt;
 &lt;br /&gt;
 %%% send the image data through OpenIGTLink connection&lt;br /&gt;
 sd = igtlopen('localhost', 18944);&lt;br /&gt;
 r = igtlsend(sd, IMGDATA);&lt;br /&gt;
 igtlclose(sd);&lt;br /&gt;
&lt;br /&gt;
=How to Get Started=&lt;br /&gt;
&lt;br /&gt;
==Install the OpenIGTLink Library==&lt;br /&gt;
The instruction can be found in [[OpenIGTLink/Library]]&lt;br /&gt;
&lt;br /&gt;
==Get the Matlab OpenIGTLink interface source code==&lt;br /&gt;
The OpenIGTLink/Matlab interface is in the initial stage of development. The source code is available from NA-MIC SandBox repository at&lt;br /&gt;
&lt;br /&gt;
  http://svn.na-mic.org/NAMICSandBox/trunk/BRPTools/MatlabIGTL&lt;br /&gt;
&lt;br /&gt;
==Build MEX files==&lt;br /&gt;
You need to have a MEX compiler or octave to the build MEX binaries.&lt;br /&gt;
To build the binaries, you may need to edit the Makefile.&lt;br /&gt;
&lt;br /&gt;
First substitute the path to the OpenIGTLink Library source and binary directories installed on your system:&lt;br /&gt;
  ### OpenIGTLink Library&lt;br /&gt;
  IGTLSRC= /projects/igtdev/tokuda/igtl/OpenIGTLink&lt;br /&gt;
  IGTLBLD= /projects/igtdev/tokuda/igtl/OpenIGTLink-build&lt;br /&gt;
&lt;br /&gt;
If you use Maltab, specify the full path to the MEX compiler. You don't need to have any options to the MEX compiler.&lt;br /&gt;
  MEX    = /local/os-exact/pkg/Matlab71-64/bin/mex&lt;br /&gt;
  MEXOPT = &lt;br /&gt;
&lt;br /&gt;
If you use Octave, specify the full path to the mkoctfile program and &amp;quot;--mex&amp;quot; option.&lt;br /&gt;
  MEX    = /Applications/Octave.app/Contents/Resources/bin/mkoctfile&lt;br /&gt;
  MEXOPT = --mex&lt;br /&gt;
&lt;br /&gt;
Now it's ready to build your MEX file. Run make. If the MEX files are successfully built, you could find:&lt;br /&gt;
 igtlclose.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
 igtlopen.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
 igtlsend.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;arc-name&amp;gt; is the architecture name of your system.&lt;br /&gt;
&lt;br /&gt;
=Contact=&lt;br /&gt;
&lt;br /&gt;
We are not providing a support for this software, but questions and requests are always welcome. If you have any, please contact&lt;br /&gt;
[[User:Tokuda| Junichi Tokuda]] at Brigham and Women's Hospital.&lt;/div&gt;</summary>
		<author><name>Goerlitz</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=OpenIGTLink/Matlab&amp;diff=33691</id>
		<title>OpenIGTLink/Matlab</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=OpenIGTLink/Matlab&amp;diff=33691"/>
		<updated>2008-12-16T15:32:33Z</updated>

		<summary type="html">&lt;p&gt;Goerlitz: /* How does it work? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[OpenIGTLink | &amp;amp;lt;&amp;amp;lt; OpenIGTLink]]&lt;br /&gt;
&lt;br /&gt;
=About the project=&lt;br /&gt;
The objective of this project is to provide OpenIGTLink interface for [http://www.mathworks.com/ Matlab] / [http://www.gnu.org/software/octave/ Octave] to support research and development in image guided therapy (IGT). Matlab and Octave are widely used for prototyping image and signal processing algorithms. They also offer many powerful function sets to handle matrix and coordinate data, which is useful to test and analyze coordinate data exported from tracking and robotic devices.&lt;br /&gt;
The OpenIGTLink interface for Matlab / Octave allows importing and exporting several types of data that can be handled in the OpenIGTLink protocol in a Matlab / Octave environment. It provides a rapid prototyping environment, which many researchers and engineers are already familiar with.&lt;br /&gt;
&lt;br /&gt;
This project is a generalization of [[Projects/Slicer3/2007_Project_Week_Slicer_Matlab_Pipeline_for_scalars_and_tensors | Slicer Matlab Pipeline project]] in the 2007 NA-MIC Project Week.&lt;br /&gt;
&lt;br /&gt;
=How does it work?=&lt;br /&gt;
The OpenIGTLink Matlab interface is implemented as a set of MEX Files, which are C/C++ source codes called from Matlab. Those MEX files simply receive data from Matlab, connect to the OpenIGTLink receiver, serialize the data in an appropriate format using the OpenIGTLink Library, and send it to the receiver.&lt;br /&gt;
&lt;br /&gt;
The usage of the interface is quite simple. The following example Matlab code is sending trancking data to the receiver waiting at port #18944 on the localhost.&lt;br /&gt;
&lt;br /&gt;
 %%% affine transform matrix&lt;br /&gt;
 M = [1.0, 0.0, 0.0, 0.0;&lt;br /&gt;
      0.0,-1.0, 0.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 1.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 0.0, 1.0];&lt;br /&gt;
 &lt;br /&gt;
 IMGDATA.Type = 'TRANSFORM';&lt;br /&gt;
 IMGDATA.Name = 'MatlabTrans';&lt;br /&gt;
 IMGDATA.Trans = M;&lt;br /&gt;
 &lt;br /&gt;
 sd = igtlopen('localhost', 18944);&lt;br /&gt;
 r = igtlsend(sd, IMGDATA);&lt;br /&gt;
 igtlclose(sd);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For tracking data transfer:&lt;br /&gt;
&lt;br /&gt;
 %%% read image data&lt;br /&gt;
 fid = fopen('igtlTestImage1.raw', 'r');&lt;br /&gt;
 I = fread(fid, [256 256], 'uint8')';&lt;br /&gt;
 fclose(fid);&lt;br /&gt;
 &lt;br /&gt;
 %%% affine transform matrix&lt;br /&gt;
 M = [1.0, 0.0, 0.0, 0.0;&lt;br /&gt;
      0.0,-1.0, 0.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 1.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 0.0, 1.0];&lt;br /&gt;
 &lt;br /&gt;
 IMGDATA.Type = 'IMAGE';&lt;br /&gt;
 IMGDATA.Name = 'MatlabImage';&lt;br /&gt;
 IMGDATA.Image = I;&lt;br /&gt;
 IMGDATA.Trans = M;&lt;br /&gt;
 &lt;br /&gt;
 %%% send the image data through OpenIGTLink connection&lt;br /&gt;
 sd = igtlopen('localhost', 18944);&lt;br /&gt;
 r = igtlsend(sd, IMGDATA);&lt;br /&gt;
 igtlclose(sd);&lt;br /&gt;
&lt;br /&gt;
=How to Get Started=&lt;br /&gt;
&lt;br /&gt;
==Install the OpenIGTLink Library==&lt;br /&gt;
The instruction can be found in [[OpenIGTLink/Library]]&lt;br /&gt;
&lt;br /&gt;
==Get the Matlab OpenIGTLink interface source code==&lt;br /&gt;
The OpenIGTLink/Matlab interface is in the initial stage of development. The source code is available from NA-MIC SandBox repository at&lt;br /&gt;
&lt;br /&gt;
  http://svn.na-mic.org/NAMICSandBox/trunk/BRPTools/MatlabIGTL&lt;br /&gt;
&lt;br /&gt;
==Build MEX files==&lt;br /&gt;
You need to have a MEX compiler or octave to the build MEX binaries.&lt;br /&gt;
To build the binaries, you may need to edit the Makefile.&lt;br /&gt;
&lt;br /&gt;
First substitute the path to the OpenIGTLink Library source and binary directories installed in your system:&lt;br /&gt;
  ### OpenIGTLink Library&lt;br /&gt;
  IGTLSRC= /projects/igtdev/tokuda/igtl/OpenIGTLink&lt;br /&gt;
  IGTLBLD= /projects/igtdev/tokuda/igtl/OpenIGTLink-build&lt;br /&gt;
&lt;br /&gt;
If you use Maltab, specify the full path to the MEX compiler. You don't need to have any options to the MEX compiler.&lt;br /&gt;
  MEX    = /local/os-exact/pkg/Matlab71-64/bin/mex&lt;br /&gt;
  MEXOPT = &lt;br /&gt;
&lt;br /&gt;
If you use Octave, specify the full path to the mkoctfile program and &amp;quot;--mex&amp;quot; option.&lt;br /&gt;
  MEX    = /Applications/Octave.app/Contents/Resources/bin/mkoctfile&lt;br /&gt;
  MEXOPT = --mex&lt;br /&gt;
&lt;br /&gt;
Now it's ready to build your MEX file. Run make. If the MEX files are successfully built, you could find:&lt;br /&gt;
 igtlclose.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
 igtlopen.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
 igtlsend.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;arc-name&amp;gt; is the architecture name of your system.&lt;br /&gt;
&lt;br /&gt;
=Contact=&lt;br /&gt;
&lt;br /&gt;
We are not providing a support for this software, but questions and requests are always welcome. If you have any, please contact&lt;br /&gt;
[[User:Tokuda| Junichi Tokuda]] at Brigham and Women's Hospital.&lt;/div&gt;</summary>
		<author><name>Goerlitz</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=OpenIGTLink/Matlab&amp;diff=33690</id>
		<title>OpenIGTLink/Matlab</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=OpenIGTLink/Matlab&amp;diff=33690"/>
		<updated>2008-12-16T15:32:18Z</updated>

		<summary type="html">&lt;p&gt;Goerlitz: /* How does it work? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[OpenIGTLink | &amp;amp;lt;&amp;amp;lt; OpenIGTLink]]&lt;br /&gt;
&lt;br /&gt;
=About the project=&lt;br /&gt;
The objective of this project is to provide OpenIGTLink interface for [http://www.mathworks.com/ Matlab] / [http://www.gnu.org/software/octave/ Octave] to support research and development in image guided therapy (IGT). Matlab and Octave are widely used for prototyping image and signal processing algorithms. They also offer many powerful function sets to handle matrix and coordinate data, which is useful to test and analyze coordinate data exported from tracking and robotic devices.&lt;br /&gt;
The OpenIGTLink interface for Matlab / Octave allows importing and exporting several types of data that can be handled in the OpenIGTLink protocol in a Matlab / Octave environment. It provides a rapid prototyping environment, which many researchers and engineers are already familiar with.&lt;br /&gt;
&lt;br /&gt;
This project is a generalization of [[Projects/Slicer3/2007_Project_Week_Slicer_Matlab_Pipeline_for_scalars_and_tensors | Slicer Matlab Pipeline project]] in the 2007 NA-MIC Project Week.&lt;br /&gt;
&lt;br /&gt;
=How does it work?=&lt;br /&gt;
The OpenIGTLink Matlab interface is implemented as a set of MEX Files, which are C/C++ source codes called from Matlab. Those MEX files simply receive data from Matlab, connect to the OpenIGTLink receiver, serialize the data in an appropriate format using the OpenIGTLink Library, and send it to the receiver.&lt;br /&gt;
&lt;br /&gt;
The usage of the interface is quite simple. The following example Matlab code is sending trancking data to the receiver waiting at port #18944 in the localhost.&lt;br /&gt;
&lt;br /&gt;
 %%% affine transform matrix&lt;br /&gt;
 M = [1.0, 0.0, 0.0, 0.0;&lt;br /&gt;
      0.0,-1.0, 0.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 1.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 0.0, 1.0];&lt;br /&gt;
 &lt;br /&gt;
 IMGDATA.Type = 'TRANSFORM';&lt;br /&gt;
 IMGDATA.Name = 'MatlabTrans';&lt;br /&gt;
 IMGDATA.Trans = M;&lt;br /&gt;
 &lt;br /&gt;
 sd = igtlopen('localhost', 18944);&lt;br /&gt;
 r = igtlsend(sd, IMGDATA);&lt;br /&gt;
 igtlclose(sd);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For tracking data transfer:&lt;br /&gt;
&lt;br /&gt;
 %%% read image data&lt;br /&gt;
 fid = fopen('igtlTestImage1.raw', 'r');&lt;br /&gt;
 I = fread(fid, [256 256], 'uint8')';&lt;br /&gt;
 fclose(fid);&lt;br /&gt;
 &lt;br /&gt;
 %%% affine transform matrix&lt;br /&gt;
 M = [1.0, 0.0, 0.0, 0.0;&lt;br /&gt;
      0.0,-1.0, 0.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 1.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 0.0, 1.0];&lt;br /&gt;
 &lt;br /&gt;
 IMGDATA.Type = 'IMAGE';&lt;br /&gt;
 IMGDATA.Name = 'MatlabImage';&lt;br /&gt;
 IMGDATA.Image = I;&lt;br /&gt;
 IMGDATA.Trans = M;&lt;br /&gt;
 &lt;br /&gt;
 %%% send the image data through OpenIGTLink connection&lt;br /&gt;
 sd = igtlopen('localhost', 18944);&lt;br /&gt;
 r = igtlsend(sd, IMGDATA);&lt;br /&gt;
 igtlclose(sd);&lt;br /&gt;
&lt;br /&gt;
=How to Get Started=&lt;br /&gt;
&lt;br /&gt;
==Install the OpenIGTLink Library==&lt;br /&gt;
The instruction can be found in [[OpenIGTLink/Library]]&lt;br /&gt;
&lt;br /&gt;
==Get the Matlab OpenIGTLink interface source code==&lt;br /&gt;
The OpenIGTLink/Matlab interface is in the initial stage of development. The source code is available from NA-MIC SandBox repository at&lt;br /&gt;
&lt;br /&gt;
  http://svn.na-mic.org/NAMICSandBox/trunk/BRPTools/MatlabIGTL&lt;br /&gt;
&lt;br /&gt;
==Build MEX files==&lt;br /&gt;
You need to have a MEX compiler or octave to the build MEX binaries.&lt;br /&gt;
To build the binaries, you may need to edit the Makefile.&lt;br /&gt;
&lt;br /&gt;
First substitute the path to the OpenIGTLink Library source and binary directories installed in your system:&lt;br /&gt;
  ### OpenIGTLink Library&lt;br /&gt;
  IGTLSRC= /projects/igtdev/tokuda/igtl/OpenIGTLink&lt;br /&gt;
  IGTLBLD= /projects/igtdev/tokuda/igtl/OpenIGTLink-build&lt;br /&gt;
&lt;br /&gt;
If you use Maltab, specify the full path to the MEX compiler. You don't need to have any options to the MEX compiler.&lt;br /&gt;
  MEX    = /local/os-exact/pkg/Matlab71-64/bin/mex&lt;br /&gt;
  MEXOPT = &lt;br /&gt;
&lt;br /&gt;
If you use Octave, specify the full path to the mkoctfile program and &amp;quot;--mex&amp;quot; option.&lt;br /&gt;
  MEX    = /Applications/Octave.app/Contents/Resources/bin/mkoctfile&lt;br /&gt;
  MEXOPT = --mex&lt;br /&gt;
&lt;br /&gt;
Now it's ready to build your MEX file. Run make. If the MEX files are successfully built, you could find:&lt;br /&gt;
 igtlclose.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
 igtlopen.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
 igtlsend.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;arc-name&amp;gt; is the architecture name of your system.&lt;br /&gt;
&lt;br /&gt;
=Contact=&lt;br /&gt;
&lt;br /&gt;
We are not providing a support for this software, but questions and requests are always welcome. If you have any, please contact&lt;br /&gt;
[[User:Tokuda| Junichi Tokuda]] at Brigham and Women's Hospital.&lt;/div&gt;</summary>
		<author><name>Goerlitz</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=OpenIGTLink/Matlab&amp;diff=33689</id>
		<title>OpenIGTLink/Matlab</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=OpenIGTLink/Matlab&amp;diff=33689"/>
		<updated>2008-12-16T15:31:57Z</updated>

		<summary type="html">&lt;p&gt;Goerlitz: /* How does it work? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[OpenIGTLink | &amp;amp;lt;&amp;amp;lt; OpenIGTLink]]&lt;br /&gt;
&lt;br /&gt;
=About the project=&lt;br /&gt;
The objective of this project is to provide OpenIGTLink interface for [http://www.mathworks.com/ Matlab] / [http://www.gnu.org/software/octave/ Octave] to support research and development in image guided therapy (IGT). Matlab and Octave are widely used for prototyping image and signal processing algorithms. They also offer many powerful function sets to handle matrix and coordinate data, which is useful to test and analyze coordinate data exported from tracking and robotic devices.&lt;br /&gt;
The OpenIGTLink interface for Matlab / Octave allows importing and exporting several types of data that can be handled in the OpenIGTLink protocol in a Matlab / Octave environment. It provides a rapid prototyping environment, which many researchers and engineers are already familiar with.&lt;br /&gt;
&lt;br /&gt;
This project is a generalization of [[Projects/Slicer3/2007_Project_Week_Slicer_Matlab_Pipeline_for_scalars_and_tensors | Slicer Matlab Pipeline project]] in the 2007 NA-MIC Project Week.&lt;br /&gt;
&lt;br /&gt;
=How does it work?=&lt;br /&gt;
The OpenIGTLink Matlab interface is implemented as a set of MEX Files, which are C/C++ source codes called from Matlab. Those MEX files simply receive data from Matlab, connect to OpenIGTLink receiver, serialize the data in appropriate format using the OpenIGTLink Library, and send it to the receiver.&lt;br /&gt;
&lt;br /&gt;
The usage of the interface is quite simple. The following example Matlab code is sending trancking data to the receiver waiting at port #18944 in the localhost.&lt;br /&gt;
&lt;br /&gt;
 %%% affine transform matrix&lt;br /&gt;
 M = [1.0, 0.0, 0.0, 0.0;&lt;br /&gt;
      0.0,-1.0, 0.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 1.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 0.0, 1.0];&lt;br /&gt;
 &lt;br /&gt;
 IMGDATA.Type = 'TRANSFORM';&lt;br /&gt;
 IMGDATA.Name = 'MatlabTrans';&lt;br /&gt;
 IMGDATA.Trans = M;&lt;br /&gt;
 &lt;br /&gt;
 sd = igtlopen('localhost', 18944);&lt;br /&gt;
 r = igtlsend(sd, IMGDATA);&lt;br /&gt;
 igtlclose(sd);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For tracking data transfer:&lt;br /&gt;
&lt;br /&gt;
 %%% read image data&lt;br /&gt;
 fid = fopen('igtlTestImage1.raw', 'r');&lt;br /&gt;
 I = fread(fid, [256 256], 'uint8')';&lt;br /&gt;
 fclose(fid);&lt;br /&gt;
 &lt;br /&gt;
 %%% affine transform matrix&lt;br /&gt;
 M = [1.0, 0.0, 0.0, 0.0;&lt;br /&gt;
      0.0,-1.0, 0.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 1.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 0.0, 1.0];&lt;br /&gt;
 &lt;br /&gt;
 IMGDATA.Type = 'IMAGE';&lt;br /&gt;
 IMGDATA.Name = 'MatlabImage';&lt;br /&gt;
 IMGDATA.Image = I;&lt;br /&gt;
 IMGDATA.Trans = M;&lt;br /&gt;
 &lt;br /&gt;
 %%% send the image data through OpenIGTLink connection&lt;br /&gt;
 sd = igtlopen('localhost', 18944);&lt;br /&gt;
 r = igtlsend(sd, IMGDATA);&lt;br /&gt;
 igtlclose(sd);&lt;br /&gt;
&lt;br /&gt;
=How to Get Started=&lt;br /&gt;
&lt;br /&gt;
==Install the OpenIGTLink Library==&lt;br /&gt;
The instruction can be found in [[OpenIGTLink/Library]]&lt;br /&gt;
&lt;br /&gt;
==Get the Matlab OpenIGTLink interface source code==&lt;br /&gt;
The OpenIGTLink/Matlab interface is in the initial stage of development. The source code is available from NA-MIC SandBox repository at&lt;br /&gt;
&lt;br /&gt;
  http://svn.na-mic.org/NAMICSandBox/trunk/BRPTools/MatlabIGTL&lt;br /&gt;
&lt;br /&gt;
==Build MEX files==&lt;br /&gt;
You need to have a MEX compiler or octave to the build MEX binaries.&lt;br /&gt;
To build the binaries, you may need to edit the Makefile.&lt;br /&gt;
&lt;br /&gt;
First substitute the path to the OpenIGTLink Library source and binary directories installed in your system:&lt;br /&gt;
  ### OpenIGTLink Library&lt;br /&gt;
  IGTLSRC= /projects/igtdev/tokuda/igtl/OpenIGTLink&lt;br /&gt;
  IGTLBLD= /projects/igtdev/tokuda/igtl/OpenIGTLink-build&lt;br /&gt;
&lt;br /&gt;
If you use Maltab, specify the full path to the MEX compiler. You don't need to have any options to the MEX compiler.&lt;br /&gt;
  MEX    = /local/os-exact/pkg/Matlab71-64/bin/mex&lt;br /&gt;
  MEXOPT = &lt;br /&gt;
&lt;br /&gt;
If you use Octave, specify the full path to the mkoctfile program and &amp;quot;--mex&amp;quot; option.&lt;br /&gt;
  MEX    = /Applications/Octave.app/Contents/Resources/bin/mkoctfile&lt;br /&gt;
  MEXOPT = --mex&lt;br /&gt;
&lt;br /&gt;
Now it's ready to build your MEX file. Run make. If the MEX files are successfully built, you could find:&lt;br /&gt;
 igtlclose.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
 igtlopen.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
 igtlsend.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;arc-name&amp;gt; is the architecture name of your system.&lt;br /&gt;
&lt;br /&gt;
=Contact=&lt;br /&gt;
&lt;br /&gt;
We are not providing a support for this software, but questions and requests are always welcome. If you have any, please contact&lt;br /&gt;
[[User:Tokuda| Junichi Tokuda]] at Brigham and Women's Hospital.&lt;/div&gt;</summary>
		<author><name>Goerlitz</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=OpenIGTLink/Matlab&amp;diff=33688</id>
		<title>OpenIGTLink/Matlab</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=OpenIGTLink/Matlab&amp;diff=33688"/>
		<updated>2008-12-16T15:31:22Z</updated>

		<summary type="html">&lt;p&gt;Goerlitz: /* About the project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[OpenIGTLink | &amp;amp;lt;&amp;amp;lt; OpenIGTLink]]&lt;br /&gt;
&lt;br /&gt;
=About the project=&lt;br /&gt;
The objective of this project is to provide OpenIGTLink interface for [http://www.mathworks.com/ Matlab] / [http://www.gnu.org/software/octave/ Octave] to support research and development in image guided therapy (IGT). Matlab and Octave are widely used for prototyping image and signal processing algorithms. They also offer many powerful function sets to handle matrix and coordinate data, which is useful to test and analyze coordinate data exported from tracking and robotic devices.&lt;br /&gt;
The OpenIGTLink interface for Matlab / Octave allows importing and exporting several types of data that can be handled in the OpenIGTLink protocol in a Matlab / Octave environment. It provides a rapid prototyping environment, which many researchers and engineers are already familiar with.&lt;br /&gt;
&lt;br /&gt;
This project is a generalization of [[Projects/Slicer3/2007_Project_Week_Slicer_Matlab_Pipeline_for_scalars_and_tensors | Slicer Matlab Pipeline project]] in the 2007 NA-MIC Project Week.&lt;br /&gt;
&lt;br /&gt;
=How does it work?=&lt;br /&gt;
The OpenIGTLink Matlab interface is implemented as a set of MEX Files, which are C/C++ source codes called from Matlab. Those MEX files simply receives data from Matlab, connect to OpenIGTLink receiver, serialize the data in appropriate format using the OpenIGTLink Library, and send it to the receiver.&lt;br /&gt;
&lt;br /&gt;
The usage of the interface is quite simple. The following example Matlab code is sending trancking data to the receiver waiting at port #18944 in the localhost.&lt;br /&gt;
&lt;br /&gt;
 %%% affine transform matrix&lt;br /&gt;
 M = [1.0, 0.0, 0.0, 0.0;&lt;br /&gt;
      0.0,-1.0, 0.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 1.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 0.0, 1.0];&lt;br /&gt;
 &lt;br /&gt;
 IMGDATA.Type = 'TRANSFORM';&lt;br /&gt;
 IMGDATA.Name = 'MatlabTrans';&lt;br /&gt;
 IMGDATA.Trans = M;&lt;br /&gt;
 &lt;br /&gt;
 sd = igtlopen('localhost', 18944);&lt;br /&gt;
 r = igtlsend(sd, IMGDATA);&lt;br /&gt;
 igtlclose(sd);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For tracking data transfer:&lt;br /&gt;
&lt;br /&gt;
 %%% read image data&lt;br /&gt;
 fid = fopen('igtlTestImage1.raw', 'r');&lt;br /&gt;
 I = fread(fid, [256 256], 'uint8')';&lt;br /&gt;
 fclose(fid);&lt;br /&gt;
 &lt;br /&gt;
 %%% affine transform matrix&lt;br /&gt;
 M = [1.0, 0.0, 0.0, 0.0;&lt;br /&gt;
      0.0,-1.0, 0.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 1.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 0.0, 1.0];&lt;br /&gt;
 &lt;br /&gt;
 IMGDATA.Type = 'IMAGE';&lt;br /&gt;
 IMGDATA.Name = 'MatlabImage';&lt;br /&gt;
 IMGDATA.Image = I;&lt;br /&gt;
 IMGDATA.Trans = M;&lt;br /&gt;
 &lt;br /&gt;
 %%% send the image data through OpenIGTLink connection&lt;br /&gt;
 sd = igtlopen('localhost', 18944);&lt;br /&gt;
 r = igtlsend(sd, IMGDATA);&lt;br /&gt;
 igtlclose(sd);&lt;br /&gt;
&lt;br /&gt;
=How to Get Started=&lt;br /&gt;
&lt;br /&gt;
==Install the OpenIGTLink Library==&lt;br /&gt;
The instruction can be found in [[OpenIGTLink/Library]]&lt;br /&gt;
&lt;br /&gt;
==Get the Matlab OpenIGTLink interface source code==&lt;br /&gt;
The OpenIGTLink/Matlab interface is in the initial stage of development. The source code is available from NA-MIC SandBox repository at&lt;br /&gt;
&lt;br /&gt;
  http://svn.na-mic.org/NAMICSandBox/trunk/BRPTools/MatlabIGTL&lt;br /&gt;
&lt;br /&gt;
==Build MEX files==&lt;br /&gt;
You need to have a MEX compiler or octave to the build MEX binaries.&lt;br /&gt;
To build the binaries, you may need to edit the Makefile.&lt;br /&gt;
&lt;br /&gt;
First substitute the path to the OpenIGTLink Library source and binary directories installed in your system:&lt;br /&gt;
  ### OpenIGTLink Library&lt;br /&gt;
  IGTLSRC= /projects/igtdev/tokuda/igtl/OpenIGTLink&lt;br /&gt;
  IGTLBLD= /projects/igtdev/tokuda/igtl/OpenIGTLink-build&lt;br /&gt;
&lt;br /&gt;
If you use Maltab, specify the full path to the MEX compiler. You don't need to have any options to the MEX compiler.&lt;br /&gt;
  MEX    = /local/os-exact/pkg/Matlab71-64/bin/mex&lt;br /&gt;
  MEXOPT = &lt;br /&gt;
&lt;br /&gt;
If you use Octave, specify the full path to the mkoctfile program and &amp;quot;--mex&amp;quot; option.&lt;br /&gt;
  MEX    = /Applications/Octave.app/Contents/Resources/bin/mkoctfile&lt;br /&gt;
  MEXOPT = --mex&lt;br /&gt;
&lt;br /&gt;
Now it's ready to build your MEX file. Run make. If the MEX files are successfully built, you could find:&lt;br /&gt;
 igtlclose.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
 igtlopen.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
 igtlsend.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;arc-name&amp;gt; is the architecture name of your system.&lt;br /&gt;
&lt;br /&gt;
=Contact=&lt;br /&gt;
&lt;br /&gt;
We are not providing a support for this software, but questions and requests are always welcome. If you have any, please contact&lt;br /&gt;
[[User:Tokuda| Junichi Tokuda]] at Brigham and Women's Hospital.&lt;/div&gt;</summary>
		<author><name>Goerlitz</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=OpenIGTLink/Matlab&amp;diff=33687</id>
		<title>OpenIGTLink/Matlab</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=OpenIGTLink/Matlab&amp;diff=33687"/>
		<updated>2008-12-16T15:30:25Z</updated>

		<summary type="html">&lt;p&gt;Goerlitz: /* About the project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[OpenIGTLink | &amp;amp;lt;&amp;amp;lt; OpenIGTLink]]&lt;br /&gt;
&lt;br /&gt;
=About the project=&lt;br /&gt;
The objective of this project is to provide OpenIGTLink interface for [http://www.mathworks.com/ Matlab] / [http://www.gnu.org/software/octave/ Octave] to support research and development in image guided therapy (IGT). Matlab and Octave are widely used for prototyping image and signal processing algorithms. They also offer many powerful function sets to handle matrix and coordinate data, which is useful to test and analyze coordinate data exported from tracking and robotic devices.&lt;br /&gt;
The OpenIGTLink interface for Matlab / Octave allows importing and exporting several types of data that can be handled in the OpenIGTLink protocol in Matlab / Octave environment. It provides a rapid prototyping environment, which many researchers and engineers are already familiar with.&lt;br /&gt;
&lt;br /&gt;
This project is a generalization of [[Projects/Slicer3/2007_Project_Week_Slicer_Matlab_Pipeline_for_scalars_and_tensors | Slicer Matlab Pipeline project]] in the 2007 NA-MIC Project Week.&lt;br /&gt;
&lt;br /&gt;
=How does it work?=&lt;br /&gt;
The OpenIGTLink Matlab interface is implemented as a set of MEX Files, which are C/C++ source codes called from Matlab. Those MEX files simply receives data from Matlab, connect to OpenIGTLink receiver, serialize the data in appropriate format using the OpenIGTLink Library, and send it to the receiver.&lt;br /&gt;
&lt;br /&gt;
The usage of the interface is quite simple. The following example Matlab code is sending trancking data to the receiver waiting at port #18944 in the localhost.&lt;br /&gt;
&lt;br /&gt;
 %%% affine transform matrix&lt;br /&gt;
 M = [1.0, 0.0, 0.0, 0.0;&lt;br /&gt;
      0.0,-1.0, 0.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 1.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 0.0, 1.0];&lt;br /&gt;
 &lt;br /&gt;
 IMGDATA.Type = 'TRANSFORM';&lt;br /&gt;
 IMGDATA.Name = 'MatlabTrans';&lt;br /&gt;
 IMGDATA.Trans = M;&lt;br /&gt;
 &lt;br /&gt;
 sd = igtlopen('localhost', 18944);&lt;br /&gt;
 r = igtlsend(sd, IMGDATA);&lt;br /&gt;
 igtlclose(sd);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For tracking data transfer:&lt;br /&gt;
&lt;br /&gt;
 %%% read image data&lt;br /&gt;
 fid = fopen('igtlTestImage1.raw', 'r');&lt;br /&gt;
 I = fread(fid, [256 256], 'uint8')';&lt;br /&gt;
 fclose(fid);&lt;br /&gt;
 &lt;br /&gt;
 %%% affine transform matrix&lt;br /&gt;
 M = [1.0, 0.0, 0.0, 0.0;&lt;br /&gt;
      0.0,-1.0, 0.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 1.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 0.0, 1.0];&lt;br /&gt;
 &lt;br /&gt;
 IMGDATA.Type = 'IMAGE';&lt;br /&gt;
 IMGDATA.Name = 'MatlabImage';&lt;br /&gt;
 IMGDATA.Image = I;&lt;br /&gt;
 IMGDATA.Trans = M;&lt;br /&gt;
 &lt;br /&gt;
 %%% send the image data through OpenIGTLink connection&lt;br /&gt;
 sd = igtlopen('localhost', 18944);&lt;br /&gt;
 r = igtlsend(sd, IMGDATA);&lt;br /&gt;
 igtlclose(sd);&lt;br /&gt;
&lt;br /&gt;
=How to Get Started=&lt;br /&gt;
&lt;br /&gt;
==Install the OpenIGTLink Library==&lt;br /&gt;
The instruction can be found in [[OpenIGTLink/Library]]&lt;br /&gt;
&lt;br /&gt;
==Get the Matlab OpenIGTLink interface source code==&lt;br /&gt;
The OpenIGTLink/Matlab interface is in the initial stage of development. The source code is available from NA-MIC SandBox repository at&lt;br /&gt;
&lt;br /&gt;
  http://svn.na-mic.org/NAMICSandBox/trunk/BRPTools/MatlabIGTL&lt;br /&gt;
&lt;br /&gt;
==Build MEX files==&lt;br /&gt;
You need to have a MEX compiler or octave to the build MEX binaries.&lt;br /&gt;
To build the binaries, you may need to edit the Makefile.&lt;br /&gt;
&lt;br /&gt;
First substitute the path to the OpenIGTLink Library source and binary directories installed in your system:&lt;br /&gt;
  ### OpenIGTLink Library&lt;br /&gt;
  IGTLSRC= /projects/igtdev/tokuda/igtl/OpenIGTLink&lt;br /&gt;
  IGTLBLD= /projects/igtdev/tokuda/igtl/OpenIGTLink-build&lt;br /&gt;
&lt;br /&gt;
If you use Maltab, specify the full path to the MEX compiler. You don't need to have any options to the MEX compiler.&lt;br /&gt;
  MEX    = /local/os-exact/pkg/Matlab71-64/bin/mex&lt;br /&gt;
  MEXOPT = &lt;br /&gt;
&lt;br /&gt;
If you use Octave, specify the full path to the mkoctfile program and &amp;quot;--mex&amp;quot; option.&lt;br /&gt;
  MEX    = /Applications/Octave.app/Contents/Resources/bin/mkoctfile&lt;br /&gt;
  MEXOPT = --mex&lt;br /&gt;
&lt;br /&gt;
Now it's ready to build your MEX file. Run make. If the MEX files are successfully built, you could find:&lt;br /&gt;
 igtlclose.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
 igtlopen.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
 igtlsend.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;arc-name&amp;gt; is the architecture name of your system.&lt;br /&gt;
&lt;br /&gt;
=Contact=&lt;br /&gt;
&lt;br /&gt;
We are not providing a support for this software, but questions and requests are always welcome. If you have any, please contact&lt;br /&gt;
[[User:Tokuda| Junichi Tokuda]] at Brigham and Women's Hospital.&lt;/div&gt;</summary>
		<author><name>Goerlitz</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=OpenIGTLink/Matlab&amp;diff=33686</id>
		<title>OpenIGTLink/Matlab</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=OpenIGTLink/Matlab&amp;diff=33686"/>
		<updated>2008-12-16T15:29:59Z</updated>

		<summary type="html">&lt;p&gt;Goerlitz: /* About the project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[OpenIGTLink | &amp;amp;lt;&amp;amp;lt; OpenIGTLink]]&lt;br /&gt;
&lt;br /&gt;
=About the project=&lt;br /&gt;
The objective of this project is to provide OpenIGTLink interface for [http://www.mathworks.com/ Matlab] / [http://www.gnu.org/software/octave/ Octave] to support research and development in image guided therapy (IGT). Matlab and Octave are widely used for prototyping image and signal processing algorithms. They also offer many powerful function set to handle matrix and coordinate data, which is useful to test and analyze coordinate data exported from tracking and robotic devices.&lt;br /&gt;
The OpenIGTLink interface for Matlab / Octave allows importing and exporting several types of data that can be handled in the OpenIGTLink protocol in Matlab / Octave environment. It provides a rapid prototyping environment, which many researchers and engineers are already familiar with.&lt;br /&gt;
&lt;br /&gt;
This project is a generalization of [[Projects/Slicer3/2007_Project_Week_Slicer_Matlab_Pipeline_for_scalars_and_tensors | Slicer Matlab Pipeline project]] in the 2007 NA-MIC Project Week.&lt;br /&gt;
&lt;br /&gt;
=How does it work?=&lt;br /&gt;
The OpenIGTLink Matlab interface is implemented as a set of MEX Files, which are C/C++ source codes called from Matlab. Those MEX files simply receives data from Matlab, connect to OpenIGTLink receiver, serialize the data in appropriate format using the OpenIGTLink Library, and send it to the receiver.&lt;br /&gt;
&lt;br /&gt;
The usage of the interface is quite simple. The following example Matlab code is sending trancking data to the receiver waiting at port #18944 in the localhost.&lt;br /&gt;
&lt;br /&gt;
 %%% affine transform matrix&lt;br /&gt;
 M = [1.0, 0.0, 0.0, 0.0;&lt;br /&gt;
      0.0,-1.0, 0.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 1.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 0.0, 1.0];&lt;br /&gt;
 &lt;br /&gt;
 IMGDATA.Type = 'TRANSFORM';&lt;br /&gt;
 IMGDATA.Name = 'MatlabTrans';&lt;br /&gt;
 IMGDATA.Trans = M;&lt;br /&gt;
 &lt;br /&gt;
 sd = igtlopen('localhost', 18944);&lt;br /&gt;
 r = igtlsend(sd, IMGDATA);&lt;br /&gt;
 igtlclose(sd);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For tracking data transfer:&lt;br /&gt;
&lt;br /&gt;
 %%% read image data&lt;br /&gt;
 fid = fopen('igtlTestImage1.raw', 'r');&lt;br /&gt;
 I = fread(fid, [256 256], 'uint8')';&lt;br /&gt;
 fclose(fid);&lt;br /&gt;
 &lt;br /&gt;
 %%% affine transform matrix&lt;br /&gt;
 M = [1.0, 0.0, 0.0, 0.0;&lt;br /&gt;
      0.0,-1.0, 0.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 1.0, 0.0;&lt;br /&gt;
      0.0, 0.0, 0.0, 1.0];&lt;br /&gt;
 &lt;br /&gt;
 IMGDATA.Type = 'IMAGE';&lt;br /&gt;
 IMGDATA.Name = 'MatlabImage';&lt;br /&gt;
 IMGDATA.Image = I;&lt;br /&gt;
 IMGDATA.Trans = M;&lt;br /&gt;
 &lt;br /&gt;
 %%% send the image data through OpenIGTLink connection&lt;br /&gt;
 sd = igtlopen('localhost', 18944);&lt;br /&gt;
 r = igtlsend(sd, IMGDATA);&lt;br /&gt;
 igtlclose(sd);&lt;br /&gt;
&lt;br /&gt;
=How to Get Started=&lt;br /&gt;
&lt;br /&gt;
==Install the OpenIGTLink Library==&lt;br /&gt;
The instruction can be found in [[OpenIGTLink/Library]]&lt;br /&gt;
&lt;br /&gt;
==Get the Matlab OpenIGTLink interface source code==&lt;br /&gt;
The OpenIGTLink/Matlab interface is in the initial stage of development. The source code is available from NA-MIC SandBox repository at&lt;br /&gt;
&lt;br /&gt;
  http://svn.na-mic.org/NAMICSandBox/trunk/BRPTools/MatlabIGTL&lt;br /&gt;
&lt;br /&gt;
==Build MEX files==&lt;br /&gt;
You need to have a MEX compiler or octave to the build MEX binaries.&lt;br /&gt;
To build the binaries, you may need to edit the Makefile.&lt;br /&gt;
&lt;br /&gt;
First substitute the path to the OpenIGTLink Library source and binary directories installed in your system:&lt;br /&gt;
  ### OpenIGTLink Library&lt;br /&gt;
  IGTLSRC= /projects/igtdev/tokuda/igtl/OpenIGTLink&lt;br /&gt;
  IGTLBLD= /projects/igtdev/tokuda/igtl/OpenIGTLink-build&lt;br /&gt;
&lt;br /&gt;
If you use Maltab, specify the full path to the MEX compiler. You don't need to have any options to the MEX compiler.&lt;br /&gt;
  MEX    = /local/os-exact/pkg/Matlab71-64/bin/mex&lt;br /&gt;
  MEXOPT = &lt;br /&gt;
&lt;br /&gt;
If you use Octave, specify the full path to the mkoctfile program and &amp;quot;--mex&amp;quot; option.&lt;br /&gt;
  MEX    = /Applications/Octave.app/Contents/Resources/bin/mkoctfile&lt;br /&gt;
  MEXOPT = --mex&lt;br /&gt;
&lt;br /&gt;
Now it's ready to build your MEX file. Run make. If the MEX files are successfully built, you could find:&lt;br /&gt;
 igtlclose.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
 igtlopen.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
 igtlsend.mex&amp;lt;arc-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;arc-name&amp;gt; is the architecture name of your system.&lt;br /&gt;
&lt;br /&gt;
=Contact=&lt;br /&gt;
&lt;br /&gt;
We are not providing a support for this software, but questions and requests are always welcome. If you have any, please contact&lt;br /&gt;
[[User:Tokuda| Junichi Tokuda]] at Brigham and Women's Hospital.&lt;/div&gt;</summary>
		<author><name>Goerlitz</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2008_IGT_Project_Week&amp;diff=33472</id>
		<title>2008 IGT Project Week</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2008_IGT_Project_Week&amp;diff=33472"/>
		<updated>2008-12-12T17:08:17Z</updated>

		<summary type="html">&lt;p&gt;Goerlitz: /* Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
&amp;lt;gallery perrow=&amp;quot;4&amp;quot; widths=&amp;quot;200px&amp;quot;&amp;gt;&lt;br /&gt;
Image:NCIGTlogo.gif|[http://www.ncigt.org National Center for Image Guided therapy]&lt;br /&gt;
Image:NAMIC 380x463.jpg|[http://www.na-mic.org National Alliance for Medical Image Computing]&lt;br /&gt;
Image:Nac.png|[http://nac.spl.harvard.edu/ Neuroimage Analysis Center]&lt;br /&gt;
Image:Cimit_logo.gif|[http://www.cimit.org CIMIT]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
'''Dates: Monday, December 8th to Friday, December 12th'''&lt;br /&gt;
&lt;br /&gt;
Location: Monday's activities will take place in Room BC-4-004 F at the Ledge Building, located at 1 Brigham Circle, Boston MA.  (Directions to this room from the entrance of 1 Brigham Circle: to get to the 4th floor conference Room  BC4-004 F, take the elevator to the 4th floor. Take a right off the elevator. Go through 2  sets of doors, once you go through the second set, take a right, it is the 3rd door  down on your left hand side.) Rest of the week will be at the SPL facility at 1249 Boylston Street, Boston MA ([http://www.spl.harvard.edu/pages/Directions#Getting_to_1249_Boylston_Street. Directions]) (See here for information about area [[Boston_Hotels|hotels]].)&lt;br /&gt;
&lt;br /&gt;
IGT Project Week is a hands-on event that will involve various scientific, clinical, and engineering activities that are part of building image-guided therapy systems.   Please note that is '''not''' a week long session of lectures and/or slide presentations.  Instead, active researchers in the field will gather for a week to get actual work done on projects that they have identified ahead of time.  A fair amount of effort will be put into phone calls between the hosts and the participants in the month leading upto the event to ensure that every participant belongs to a project that makes sense to be pursued in such a collaborative setting. Depending on the needs of the projects, the hosts, NCIGT at Brigham and Women's Hospital, will reserve time at appropriate research imaging and therapy equipment.&lt;br /&gt;
&lt;br /&gt;
Before the event, individual phone calls/meetings  will be held with confirmed participants to review the scope of the work that they will collaboratively pursue during this week. The event itself will start with short presentation by each project team to allows all participants to be acquainted with others who are doing similar work. In the rest of the week, most of the time will be spent doing hands-on programming, imaging, algorithm design, phantom or animal experiments or other validation in small project teams.  Given that this is the first stand-alone IGT event of this kind, we expect to have about 5-10 teams of size 3-4 each. To facilitate this work, a conference room will be setup with several tables, with internet and power access, to allow teams to either work on their own laptops.  Based on the project requirements, times will also be reserved on the research imaging equipment and therapy equipment at Brigham and Women's Hospital.  On the last day of the event, a closing presentation session will be held in which each project team will present a summary of what they accomplished during the week.&lt;br /&gt;
&lt;br /&gt;
This event is modeled after the [http://www.na-mic.org/Wiki/index.php/Project_Events NA-MIC Project Week] and its main goal is to foster a hand-on image-guided therapy systems community. The first event is being organized by NCIGT and several other NIH funded grants, and the outcome at this meeting will determine the format and frequency of future events.  Unfortunately, no travel support is available from NCIGT for this event; it must be sponsored by their host institution/grant.&lt;br /&gt;
&lt;br /&gt;
If you are interested in joining this event, please send an email to Tina Kapur: tkapur at bwh.harvard.edu&lt;br /&gt;
&lt;br /&gt;
=Agenda=&lt;br /&gt;
&lt;br /&gt;
==Monday==&lt;br /&gt;
Please note that Monday's session will be held at The Ledge Building located at One Brigham Circle Room BC-4-004 F&lt;br /&gt;
&lt;br /&gt;
*1:30-3:30pm: Presentation of all Projects by Project Leaders Using the descriptions below ([[#Projects]])&lt;br /&gt;
*3:30pm - 430pm: [[2008 IGT Project Week Prostate Breakout Session|Prostate breakout session]]&lt;br /&gt;
*3:30-5pm: Start Project Work&lt;br /&gt;
&lt;br /&gt;
==Tuesday==&lt;br /&gt;
Please note that the rest of the week will be held at the 2nd floor conference room, 1249 Boylston Street.&lt;br /&gt;
&lt;br /&gt;
*9am: Breakfast&lt;br /&gt;
*9am-noon: Work&lt;br /&gt;
*noon: lunch&lt;br /&gt;
*1-5pm: Work&lt;br /&gt;
*3pm: coffee&lt;br /&gt;
&lt;br /&gt;
==Wednesday==&lt;br /&gt;
*9am: Breakfast&lt;br /&gt;
*9am-noon: Work&lt;br /&gt;
*10-noon: Radiation Therapy Collaboration Discussion with James Balter&lt;br /&gt;
*noon: lunch&lt;br /&gt;
*1pm: Journal Club Talk: James Balter, University of Michigan: &amp;quot;Finding the truth: Surrogates and Sampling for Setup and monitoring of treatment&amp;quot; [[2008 December 10 Balter talk|Abstract]]&lt;br /&gt;
*2-5pm: Work&lt;br /&gt;
*3pm: coffee&lt;br /&gt;
&lt;br /&gt;
==Thursday==&lt;br /&gt;
*9am: Breakfast&lt;br /&gt;
*9am-noon: Work&lt;br /&gt;
*noon: lunch&lt;br /&gt;
*1-5pm: Work&lt;br /&gt;
*3pm: coffee&lt;br /&gt;
*720pm: Mockup MR-guided Prostate Biopsy (221 Longwood)&lt;br /&gt;
&lt;br /&gt;
==Friday==&lt;br /&gt;
*9am: Breakfast&lt;br /&gt;
*10am: Review of Progress&lt;br /&gt;
*12pm: adjourn&lt;br /&gt;
&lt;br /&gt;
=Projects=&lt;br /&gt;
&lt;br /&gt;
This is a working list of projects for this week.&lt;br /&gt;
&lt;br /&gt;
#[[2008 IGT Project Week Fast Imaging Library|Fast Imaging Library]] (Scott Hoge,Bob Kraft)&lt;br /&gt;
#[[2008 IGT Project Week Nonrigid MR-ULS Registration Algorithms for Neurosurgery, Prostate MRgFUS and Brachytherapy|Nonrigid MR-ULS Registration Algorithms for Neurosurgery, Prostate MRgFUS and Brachytherapy]] (Matt Toews, Sandy Wells, Michel Audette, Tina Kapur, Nathan McDannold, Ben Schwartz, Steve Haker)&lt;br /&gt;
#[[2008 IGT Project Week Dynamic control of the MRI acquisition|Dynamic control of the MRI acquisition]] (Ben Schwartz, Nathan McDannold, Scott Hoge)&lt;br /&gt;
#[[2008 IGT Project Week RF Ablation System|RF Ablation System]] (Ziv Yaniv Georgetown, Noby Hata, Paul Morrison)&lt;br /&gt;
#[[2008 IGT Project Week Volume Rendering for IGT using CUDA|Volume Rendering for IGT using CUDA]] (Xenios Papademeteris, John Onofrey, Noby Hata, Steve Pieper, Isaiah Norton)&lt;br /&gt;
#[[2008 IGT Project Week Realtime Tractography for Neurosurgery VVLINK| Realtime Tractography for Neurosurgery:VVLINK]](Xenios Papademeteris, Noby Hata, Haiying Liu, Isaiah Norton, Jean-Jacques Lemaire, Madeline, Steve Pieper )&lt;br /&gt;
#[[2008 IGT Project Week Tractography for Neurosurgery: Workflow feedback| Tractography for Neurosurgery: Workflow feedback]](Isaiah Norton, Jean-Jacques Lemaire, Haiying Liu, Steve Pieper )&lt;br /&gt;
#[[2008 IGT Project Week Prostate Robotics|Prostate Robotics]] (Junichi Tokuda, Noby Hata, Clif Burdette, Jack Blevins, Clare Tempany,Sam Song, Bong Joon Cho, Greg Fisher, Roland Görlitz)&lt;br /&gt;
#[[2008 IGT Project Week Work-flow based Slicer Module for IGT application|Work-flow based Slicer Module for IGT application]] (Andinet Enquobahrie, Noby Hata, Steve Pieper)&lt;br /&gt;
#[[2008 IGT Project Week Optimal Transseptal Puncture Location for RF ablation|Optimal Transseptal Puncture Location for RF cardiac ablation]] (Jayender Jagadeesan, Raul San Jose, Noby Hata, Greg Michaud)&lt;br /&gt;
#[[2008 IGT Project Week Neurosurgical Planning and Simulation|Neurosurgical Planning and Simulation]] (Michel Audette, Andinet Enquobahrie)&lt;br /&gt;
&lt;br /&gt;
=Confirmed Attendees=&lt;br /&gt;
#Ziv Yaniv, Georgetown - Monday 11:00pm-Wednesday 3pm&lt;br /&gt;
#Andinet Enquobahrie, Kitware- Monday 1:30pm-Tuesday 5pm&lt;br /&gt;
#Michel Audette, Kitware - Monday 1:30pm-Friday noon&lt;br /&gt;
#Xenios Papademetris, Yale- Monday 1:30pm-Tuesday 5pm.&lt;br /&gt;
#John Onofrey, Yale-Monday 1:30pm-Tuesday 5pm&lt;br /&gt;
#Sandy Wells, BWH- Monday 1:30pm-Friday noon&lt;br /&gt;
#Tina Kapur, BWH - Monday 1:30pm-Friday noon&lt;br /&gt;
#Matt Toews, BWH - Monday 1:30pm-Friday noon&lt;br /&gt;
#Noby Hata, BWH - Monday 1:30pm-Friday noon&lt;br /&gt;
#Steve Pieper, BWH - Monday 1:30pm-Friday noon&lt;br /&gt;
#Katie Hayes, BWH - Monday 1:30pm-Friday noon&lt;br /&gt;
#Scott Hoge, BWH - Monday 1:30pm-Friday noon&lt;br /&gt;
#Nathan McDannold, BWH - Mon, Fri&lt;br /&gt;
#Ben Schwartz, BWH - Mon, Tue, Thurs, Fri&lt;br /&gt;
#Ron Kikinis, BWH- Monday 1:30pm-Friday noon&lt;br /&gt;
#Clare Tempany, BWH- Monday 1:30pm-3:30pm, Friday 10am-noon&lt;br /&gt;
#Ferenc Jolesz, BWH- Monday 1:30pm-3:30pm, Friday 10am-noon&lt;br /&gt;
#Junichi Tokuda, BWH - Monday 1:30pm-Friday noon&lt;br /&gt;
#Haiying Liu, BWH- Monday 1:30pm-Friday noon&lt;br /&gt;
#Greg Fischer, WPI- Monday-Thursday (only late afternoons and evening)&lt;br /&gt;
#Clif Burdette, AcousticMed Systems- Monday 1:30pm-Friday noon&lt;br /&gt;
#Jack Blevins, AcousticMed Systems- Monday 1:30pm-Thursday 5pm&lt;br /&gt;
#Bong Joon Cho (Nathan), JHU- Monday 1:30pm-Friday noon&lt;br /&gt;
#Sam Song, JHU- Monday 1:30pm-Friday noon&lt;br /&gt;
#Andriy Fedorov, BWH/W&amp;amp;M- Monday 1:30pm-Wednesday&lt;br /&gt;
#Haytham Elhawary, BWH- Monday 1:30pm-Friday noon&lt;br /&gt;
#Bob Kraft, Wake Forest Univ- Monday 1:30pm-Friday noon&lt;br /&gt;
#James Balter, U Michigan- Wednesday 9am-Thursday 4pm&lt;br /&gt;
#Paul Morrison, BWH - Monday, Tuesday afternoon, Wed morning&lt;br /&gt;
#Jayender, BWH - Monday 1:30pm-Friday noon&lt;br /&gt;
#Madeline Seeland, BWH - Monday 1:30pm-Friday noon&lt;br /&gt;
#Raul San Jose Estepar, BWH - Mon, Tue, Thursday&lt;br /&gt;
#Yanmei Tei, BWH - Mon&lt;br /&gt;
#Wentao Wu, BWH - Mon&lt;br /&gt;
#Jean-Jacques Lemaire, BWH - Mon, Tue&lt;br /&gt;
#Nikos Chrisochoides, W&amp;amp;M - Monday 1:30pm-Wednesday&lt;br /&gt;
#Isaiah Norton, Mon, Tue&amp;amp;Thur: most of the day; Wed. afternoon&lt;br /&gt;
#Ehud Schmidt, Mon, Fri&lt;br /&gt;
#Roland Görlitz, Mon 1:30pm-Friday noon&lt;br /&gt;
#Nicu Archip, Monday&lt;br /&gt;
#Florin Talos, Monday&lt;br /&gt;
#* We are at capacity for this event.&lt;/div&gt;</summary>
		<author><name>Goerlitz</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2008_IGT_Project_Week&amp;diff=33471</id>
		<title>2008 IGT Project Week</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2008_IGT_Project_Week&amp;diff=33471"/>
		<updated>2008-12-12T17:08:05Z</updated>

		<summary type="html">&lt;p&gt;Goerlitz: /* Confirmed Attendees */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
&amp;lt;gallery perrow=&amp;quot;4&amp;quot; widths=&amp;quot;200px&amp;quot;&amp;gt;&lt;br /&gt;
Image:NCIGTlogo.gif|[http://www.ncigt.org National Center for Image Guided therapy]&lt;br /&gt;
Image:NAMIC 380x463.jpg|[http://www.na-mic.org National Alliance for Medical Image Computing]&lt;br /&gt;
Image:Nac.png|[http://nac.spl.harvard.edu/ Neuroimage Analysis Center]&lt;br /&gt;
Image:Cimit_logo.gif|[http://www.cimit.org CIMIT]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
'''Dates: Monday, December 8th to Friday, December 12th'''&lt;br /&gt;
&lt;br /&gt;
Location: Monday's activities will take place in Room BC-4-004 F at the Ledge Building, located at 1 Brigham Circle, Boston MA.  (Directions to this room from the entrance of 1 Brigham Circle: to get to the 4th floor conference Room  BC4-004 F, take the elevator to the 4th floor. Take a right off the elevator. Go through 2  sets of doors, once you go through the second set, take a right, it is the 3rd door  down on your left hand side.) Rest of the week will be at the SPL facility at 1249 Boylston Street, Boston MA ([http://www.spl.harvard.edu/pages/Directions#Getting_to_1249_Boylston_Street. Directions]) (See here for information about area [[Boston_Hotels|hotels]].)&lt;br /&gt;
&lt;br /&gt;
IGT Project Week is a hands-on event that will involve various scientific, clinical, and engineering activities that are part of building image-guided therapy systems.   Please note that is '''not''' a week long session of lectures and/or slide presentations.  Instead, active researchers in the field will gather for a week to get actual work done on projects that they have identified ahead of time.  A fair amount of effort will be put into phone calls between the hosts and the participants in the month leading upto the event to ensure that every participant belongs to a project that makes sense to be pursued in such a collaborative setting. Depending on the needs of the projects, the hosts, NCIGT at Brigham and Women's Hospital, will reserve time at appropriate research imaging and therapy equipment.&lt;br /&gt;
&lt;br /&gt;
Before the event, individual phone calls/meetings  will be held with confirmed participants to review the scope of the work that they will collaboratively pursue during this week. The event itself will start with short presentation by each project team to allows all participants to be acquainted with others who are doing similar work. In the rest of the week, most of the time will be spent doing hands-on programming, imaging, algorithm design, phantom or animal experiments or other validation in small project teams.  Given that this is the first stand-alone IGT event of this kind, we expect to have about 5-10 teams of size 3-4 each. To facilitate this work, a conference room will be setup with several tables, with internet and power access, to allow teams to either work on their own laptops.  Based on the project requirements, times will also be reserved on the research imaging equipment and therapy equipment at Brigham and Women's Hospital.  On the last day of the event, a closing presentation session will be held in which each project team will present a summary of what they accomplished during the week.&lt;br /&gt;
&lt;br /&gt;
This event is modeled after the [http://www.na-mic.org/Wiki/index.php/Project_Events NA-MIC Project Week] and its main goal is to foster a hand-on image-guided therapy systems community. The first event is being organized by NCIGT and several other NIH funded grants, and the outcome at this meeting will determine the format and frequency of future events.  Unfortunately, no travel support is available from NCIGT for this event; it must be sponsored by their host institution/grant.&lt;br /&gt;
&lt;br /&gt;
If you are interested in joining this event, please send an email to Tina Kapur: tkapur at bwh.harvard.edu&lt;br /&gt;
&lt;br /&gt;
=Agenda=&lt;br /&gt;
&lt;br /&gt;
==Monday==&lt;br /&gt;
Please note that Monday's session will be held at The Ledge Building located at One Brigham Circle Room BC-4-004 F&lt;br /&gt;
&lt;br /&gt;
*1:30-3:30pm: Presentation of all Projects by Project Leaders Using the descriptions below ([[#Projects]])&lt;br /&gt;
*3:30pm - 430pm: [[2008 IGT Project Week Prostate Breakout Session|Prostate breakout session]]&lt;br /&gt;
*3:30-5pm: Start Project Work&lt;br /&gt;
&lt;br /&gt;
==Tuesday==&lt;br /&gt;
Please note that the rest of the week will be held at the 2nd floor conference room, 1249 Boylston Street.&lt;br /&gt;
&lt;br /&gt;
*9am: Breakfast&lt;br /&gt;
*9am-noon: Work&lt;br /&gt;
*noon: lunch&lt;br /&gt;
*1-5pm: Work&lt;br /&gt;
*3pm: coffee&lt;br /&gt;
&lt;br /&gt;
==Wednesday==&lt;br /&gt;
*9am: Breakfast&lt;br /&gt;
*9am-noon: Work&lt;br /&gt;
*10-noon: Radiation Therapy Collaboration Discussion with James Balter&lt;br /&gt;
*noon: lunch&lt;br /&gt;
*1pm: Journal Club Talk: James Balter, University of Michigan: &amp;quot;Finding the truth: Surrogates and Sampling for Setup and monitoring of treatment&amp;quot; [[2008 December 10 Balter talk|Abstract]]&lt;br /&gt;
*2-5pm: Work&lt;br /&gt;
*3pm: coffee&lt;br /&gt;
&lt;br /&gt;
==Thursday==&lt;br /&gt;
*9am: Breakfast&lt;br /&gt;
*9am-noon: Work&lt;br /&gt;
*noon: lunch&lt;br /&gt;
*1-5pm: Work&lt;br /&gt;
*3pm: coffee&lt;br /&gt;
*720pm: Mockup MR-guided Prostate Biopsy (221 Longwood)&lt;br /&gt;
&lt;br /&gt;
==Friday==&lt;br /&gt;
*9am: Breakfast&lt;br /&gt;
*10am: Review of Progress&lt;br /&gt;
*12pm: adjourn&lt;br /&gt;
&lt;br /&gt;
=Projects=&lt;br /&gt;
&lt;br /&gt;
This is a working list of projects for this week.&lt;br /&gt;
&lt;br /&gt;
#[[2008 IGT Project Week Fast Imaging Library|Fast Imaging Library]] (Scott Hoge,Bob Kraft)&lt;br /&gt;
#[[2008 IGT Project Week Nonrigid MR-ULS Registration Algorithms for Neurosurgery, Prostate MRgFUS and Brachytherapy|Nonrigid MR-ULS Registration Algorithms for Neurosurgery, Prostate MRgFUS and Brachytherapy]] (Matt Toews, Sandy Wells, Michel Audette, Tina Kapur, Nathan McDannold, Ben Schwartz, Steve Haker)&lt;br /&gt;
#[[2008 IGT Project Week Dynamic control of the MRI acquisition|Dynamic control of the MRI acquisition]] (Ben Schwartz, Nathan McDannold, Scott Hoge)&lt;br /&gt;
#[[2008 IGT Project Week RF Ablation System|RF Ablation System]] (Ziv Yaniv Georgetown, Noby Hata, Paul Morrison)&lt;br /&gt;
#[[2008 IGT Project Week Volume Rendering for IGT using CUDA|Volume Rendering for IGT using CUDA]] (Xenios Papademeteris, John Onofrey, Noby Hata, Steve Pieper, Isaiah Norton)&lt;br /&gt;
#[[2008 IGT Project Week Realtime Tractography for Neurosurgery VVLINK| Realtime Tractography for Neurosurgery:VVLINK]](Xenios Papademeteris, Noby Hata, Haiying Liu, Isaiah Norton, Jean-Jacques Lemaire, Madeline, Steve Pieper )&lt;br /&gt;
#[[2008 IGT Project Week Tractography for Neurosurgery: Workflow feedback| Tractography for Neurosurgery: Workflow feedback]](Isaiah Norton, Jean-Jacques Lemaire, Haiying Liu, Steve Pieper )&lt;br /&gt;
#[[2008 IGT Project Week Prostate Robotics|Prostate Robotics]] (Junichi Tokuda, Noby Hata, Clif Burdette, Jack Blevins, Clare Tempany,Sam Song, Bong Joon Cho, Greg Fisher, Roland Goerlitz)&lt;br /&gt;
#[[2008 IGT Project Week Work-flow based Slicer Module for IGT application|Work-flow based Slicer Module for IGT application]] (Andinet Enquobahrie, Noby Hata, Steve Pieper)&lt;br /&gt;
#[[2008 IGT Project Week Optimal Transseptal Puncture Location for RF ablation|Optimal Transseptal Puncture Location for RF cardiac ablation]] (Jayender Jagadeesan, Raul San Jose, Noby Hata, Greg Michaud)&lt;br /&gt;
#[[2008 IGT Project Week Neurosurgical Planning and Simulation|Neurosurgical Planning and Simulation]] (Michel Audette, Andinet Enquobahrie)&lt;br /&gt;
&lt;br /&gt;
=Confirmed Attendees=&lt;br /&gt;
#Ziv Yaniv, Georgetown - Monday 11:00pm-Wednesday 3pm&lt;br /&gt;
#Andinet Enquobahrie, Kitware- Monday 1:30pm-Tuesday 5pm&lt;br /&gt;
#Michel Audette, Kitware - Monday 1:30pm-Friday noon&lt;br /&gt;
#Xenios Papademetris, Yale- Monday 1:30pm-Tuesday 5pm.&lt;br /&gt;
#John Onofrey, Yale-Monday 1:30pm-Tuesday 5pm&lt;br /&gt;
#Sandy Wells, BWH- Monday 1:30pm-Friday noon&lt;br /&gt;
#Tina Kapur, BWH - Monday 1:30pm-Friday noon&lt;br /&gt;
#Matt Toews, BWH - Monday 1:30pm-Friday noon&lt;br /&gt;
#Noby Hata, BWH - Monday 1:30pm-Friday noon&lt;br /&gt;
#Steve Pieper, BWH - Monday 1:30pm-Friday noon&lt;br /&gt;
#Katie Hayes, BWH - Monday 1:30pm-Friday noon&lt;br /&gt;
#Scott Hoge, BWH - Monday 1:30pm-Friday noon&lt;br /&gt;
#Nathan McDannold, BWH - Mon, Fri&lt;br /&gt;
#Ben Schwartz, BWH - Mon, Tue, Thurs, Fri&lt;br /&gt;
#Ron Kikinis, BWH- Monday 1:30pm-Friday noon&lt;br /&gt;
#Clare Tempany, BWH- Monday 1:30pm-3:30pm, Friday 10am-noon&lt;br /&gt;
#Ferenc Jolesz, BWH- Monday 1:30pm-3:30pm, Friday 10am-noon&lt;br /&gt;
#Junichi Tokuda, BWH - Monday 1:30pm-Friday noon&lt;br /&gt;
#Haiying Liu, BWH- Monday 1:30pm-Friday noon&lt;br /&gt;
#Greg Fischer, WPI- Monday-Thursday (only late afternoons and evening)&lt;br /&gt;
#Clif Burdette, AcousticMed Systems- Monday 1:30pm-Friday noon&lt;br /&gt;
#Jack Blevins, AcousticMed Systems- Monday 1:30pm-Thursday 5pm&lt;br /&gt;
#Bong Joon Cho (Nathan), JHU- Monday 1:30pm-Friday noon&lt;br /&gt;
#Sam Song, JHU- Monday 1:30pm-Friday noon&lt;br /&gt;
#Andriy Fedorov, BWH/W&amp;amp;M- Monday 1:30pm-Wednesday&lt;br /&gt;
#Haytham Elhawary, BWH- Monday 1:30pm-Friday noon&lt;br /&gt;
#Bob Kraft, Wake Forest Univ- Monday 1:30pm-Friday noon&lt;br /&gt;
#James Balter, U Michigan- Wednesday 9am-Thursday 4pm&lt;br /&gt;
#Paul Morrison, BWH - Monday, Tuesday afternoon, Wed morning&lt;br /&gt;
#Jayender, BWH - Monday 1:30pm-Friday noon&lt;br /&gt;
#Madeline Seeland, BWH - Monday 1:30pm-Friday noon&lt;br /&gt;
#Raul San Jose Estepar, BWH - Mon, Tue, Thursday&lt;br /&gt;
#Yanmei Tei, BWH - Mon&lt;br /&gt;
#Wentao Wu, BWH - Mon&lt;br /&gt;
#Jean-Jacques Lemaire, BWH - Mon, Tue&lt;br /&gt;
#Nikos Chrisochoides, W&amp;amp;M - Monday 1:30pm-Wednesday&lt;br /&gt;
#Isaiah Norton, Mon, Tue&amp;amp;Thur: most of the day; Wed. afternoon&lt;br /&gt;
#Ehud Schmidt, Mon, Fri&lt;br /&gt;
#Roland Görlitz, Mon 1:30pm-Friday noon&lt;br /&gt;
#Nicu Archip, Monday&lt;br /&gt;
#Florin Talos, Monday&lt;br /&gt;
#* We are at capacity for this event.&lt;/div&gt;</summary>
		<author><name>Goerlitz</name></author>
		
	</entry>
</feed>