Contemporary magnetic resonance imaging techniques are available, for example sequence modules for
echo-planar imaging and spiral-imaging, parallel imaging with GRAPPA reconstruction, two-dimensional pulses
and field-map-based distortion corrections.
Welcome to the ODIN homepage! ODIN is a C++ software framework to
develop and simulate magnetic resonance sequences.
All common steps, from compiling your sequence to plotting or simulating it,
can be performed within a graphical user interface.
Written in C++ with an object-oriented design, ODIN is very modular, flexible
and requires very little code to write: The sequences
that come with ODIN are easy to understand and modify.
ODIN is a free software framework.
It contains well-established techniques in magnetic resonance
which were documented in scientific publications.
It can be used and modified without restrictions.
Some Highlights of ODIN
Plotting of the sequence timecourse in a graphical user interface.
Simulating the spin-physics of the sequence (Bloch-Torrey equations)
using a virtual phantom to generate a virtual MR signal.
System imperfections (eddy currents, B1 inhomogeneity, noise)
can be switched on/off at will during the simulation.
Visualization of the k-space trajectory, b-values, eddy currents, etc.
Highly-customizable, multi-threaded image reconstruction framework.
Odin [Screenshot] [Screenshot]
The control center for developing, testing, visualizing and
simulating NMR sequences. It is a front-end to the ODIN libraries,
allowing interactive editing, recompiling and dynamic linking
of sequence modules.
A graphical user interface for the generation and simulation of RF pulses
is provided by the Pulsar program. Parameters of the pulse can be edited
interactively and the corresponding excitation profile is displayed
simultaneously. A modular approach is used for maximum flexibility:
The pulse shape, k-space trajectory and filter function of the pulse are
generated by independent functions. They can be combined in many ways,
e.g. a box-shaped pulse can be generated using any of the spiral trajectories
and any of the filter functions.
The functions of the pulse are implemented using a plug-in mechanism
(abstract C++ base classes where the functions are implemented in the
Thus new pulse shapes, trajectories and filter functions can be added easily by
defining new function classes.
3D-indices of non-zeroes in ASCII, dialects: addval
ASCII, dialects: tcourse
Ansoft HFSS ASCII
DICOM, dialects: siemens
GNU-Zip container for other formats
Interfile, dialects: neurostat
Iris3D binary data
JCAMP-DX data sets
JCAMP-DX image format
Matlab ascii 2D data matrix
NIFTI/ANALYZE, dialects: fsl
ODIN measurement protocols
Portable Network Graphics
double raw data
float raw data
signed 16 bit raw data
signed 32 bit raw data
signed 8 bit raw data
unsigned 16 bit raw data
unsigned 32 bit raw data
unsigned 8 bit raw data
x-y positions of non-zeroes in ASCII
A command line driven data viewer that supports the following formats:
Display properties (contrast, brightness) can be adjusted. The value of regions
and single points can be retrieved and scan-line profiles can be generated interactively.
A lightweight geometry editor that exports the selected geometry parameters
to the ODIN sequence development framework.
Many Useful Command-Line Utilities
The main functionality of ODIN can be found in a couple of libraries:
This library contains various helper classes and functions that are
not specific to MR.
Library to handle MR parameters, such as system properties, scan geometry,
sequence parameters. Input/output of parameters is achieved via JCAMP-DX file
This library contains the interface for sequence programming. It also contains
the hardware specific driver routines.
The Blitz++ library is used for handling multidimensional arrays in ODIN.
In addition, many MR-specific routines (FFT, phase correction) were added
and placed in this library.
If you have any questions, bug-reports or improvements,
if you need professional support with ODIN,
or if you know how to make a better web page than this,
please do not hesitate to contact me (Thies Jochimsen).
ODIN is published under the terms of the GNU General
ODIN is a framework for research purposes only.
It is not certified for clinical use.
Hence, it cannot replace approved solutions from commercial manufacturers.