![]() |
ImFusion SDK 4.3
|
Plugin for storing and manipulating hierarchically structured data about anatomical structures. More...
Plugin for storing and manipulating hierarchically structured data about anatomical structures.
The functionalities of the AnatomyPlugin are designed to support SDK developers in the creation of custom plugins requiring the processing and visualisation of diverse, structured data. This is achieved by providing a series of interfaces, together with basic processing- and registration- algorithms acting on these interfaces. Generic implementations of the interfaces are provided for convenience, but the user is encouraged to create custom implementations for their specific use case.
The AnatomyPlugin provides the following interfaces:
To store frame-based data, the ASCSet class currently provides a bare-bones per-frame data-structure that stores a vector of AnatomicalStructureCollection objects.
To visualize individual AnatomicalStructure objects, we use the DataDisplayHandler infrastructure of the ImFusionLib. This makes visualization as simple as calling setVisibleData(&asc)
on a view. The AnatomicalStructureCollectionDataDisplayHandler template, together with AnatomicalStructureCollectionVisualiser and AnatomicalStructureVisualiser classes, are an interface that can be used to quickly implement custom DataDisplayHandlers for custom types based on AnatomicalStructureCollection.
Utilities to support the creation of custom ImFusionFile plugins for AnatomicalStructureCollection objects are provided in the ASCImFusionFileUtils namespace. Serialization of ASCSet objects to ImFusionFile is supported provided the individual AnatomicalStructureCollection elements can be serialized. Serialization to the ImFusionFile format for the GenericASC class is provided by the GenericASCImFusionFilePlugin class.
To ensure consistent naming of strings used as keys in the key-value stores, the Keys.h header file provides a set of hierarchically structured string constants. This set can be extended by custom plugins:
This code has the effect of adding namespaces Bar
and Bar::Baz
, the latter of which contains the constant string key
with value Bar::Baz::key = "Foo.Bar.Baz"
. Keys added by ImFusion will have the ImFusion prefix.
The KeyValueStore is a templated class that provides a key-value store for data types that transform under a transformation matrix. Keys are strings (typically managed using the Key infrastructure described above), each key-value pair has an associated Properties object to store metadata attributes.
Synchronization of transformation matrices is handled by the ImpliedLocalCoordinates class.
The AnatomicalStructureDeformation is used to describe a deformation of an AnatomicalStructure. Such a deformation consists of:
Registration algorithms are encouraged to return an AnatomicalStructureDeformation object as opposed to modifying the input AnatomicalStructure directly. This makes it possible to compute shape models, store multiple registration results, and apply fractional deformations by interpolating in the space of deformations.
The AnatomicalStructure class contains a deformations()
KeyValueStore of AnatomicalStructureDeformation objects.
An algorithm for registering two AnatomicalStructureCollection objects. Per-AnatomicalStructure registration is performed by classes in the AnatomicalStructureRegistration namespace.
An algorithm that creates a nonlinear deformation of a SharedImageSet object based on point-correspondences from a set of AnatomicalStructureDeformation objects.
Template to create a default controller for algorithms that take a SharedImageSet and return/modify an AnatomicalStructureCollection object.
Topics | |
Styling in the Anatomy Plugin | |
CSS-like styling of objects in the Anatomy plugin. | |