ImFusion SDK 4.3
Data Model

Storage and hierarchical organization of datasets. More...

+ Collaboration diagram for Data Model:

Detailed Description

Storage and hierarchical organization of datasets.

The Data Interface

One of the central interfaces of the ImFusion SDK is Data. It serves as input and output of Algorithms and is therefore supposed to be used as base class for all entities representing a self-contained piece of information, such as images or meshes.

Storage and Organization of Data Instances

The DataModel class is intended to be used as a central storage container for your datasets. It takes ownership of all Data intances inside and enables you to organize them in a hierarchical fashion leveraging the DataGroup class. Therefore, it is also part of every ApplicationController.

The DataModel takes also care of managing DataLinks: They provides the functionality to keep specific aspects of Data (e.g. windowing information, world pose) in sync across multiple instances.

To facilitate visualizing and interacting with a DataModel in a Qt you should use the DataItemModel wrapper class that transforms it into a QAbstractItemModel to be used in any Qt view or directly in our off-the-shelf DataWidget.

Illustration how the original dataset hierarchy in the DataModel is represented in DataItemModel bookkeeping structure and eventually displayed in the DataWidget

Passing Data Around

When passing one ore multiple datasets around most interfaces of the ImFusion SDK use the DataList or OwningDataList class as container. They are convenience wrappers for a std::vector<Data*> or a std::vector<std::unique_ptr<Data>>, respectively. Technically, these classes are interchangeable with the correspoding std::vector types. However, they provide useful helper functions for searching or filtering of datasets and maintain the basic invariant that they do not contain any duplicate datasets or nullptrs.

See also

Classes

class  Mesh
 Represents a triangle mesh. More...
 
class  CompoundData
 Interface for datasets that are formed by one or multiple other nested Data instances. More...
 
class  Data
 Virtual base class for representing data from which all concrete data class such as images need to derive. More...
 
class  DataGroup
 Data element that groups multiple Data instances together in a hierarchical fashion. More...
 
class  DataLink
 Interface for linking properties between multiple Data instances. More...
 
class  DataList
 Container for any number of Data instances such as image or meshes. More...
 
class  DataModel
 Container for datasets holding ownership and managing a hierarchical list of persistent data. More...
 
class  DataModelAutoLinking
 Utility class to automatically create DataLink instances between datasets in a DataModel. More...
 
class  OwningDataList
 Wrapper class to store a list of owned Data instances. More...
 
class  PointCloud
 Data structure for point clouds. More...
 
class  TrackingSequence
 Sequence of rigid tracking data with optional timestamps, quality values and flags. More...
 
class  Tree
 Data structure for trees. More...
 
class  DataLogger
 Support for logging data. More...
 
class  SharedImageSet
 Set of images independent of their storage location. More...
 
class  DataDisplayModel
 This class extends a DataItemModel with data visibility information from a DisplayWidgetMulti. More...
 
class  DataFilterModel
 The DataFilterModel class is a proxy model to filter a DataItemModel. More...
 
class  DataGroupingModel
 QAbstractProxyModel implementation that groups data in a source-model according to a specified GroupingOption. More...
 
class  DataItemModel
 Wrapper class to transform the DataModel into a QAbstractItemModel so that it can be used in Qt views. More...
 
class  DataWidget
 Graphical user interface for the DataModel/DataItemModel. More...
 
class  Stream
 Base class representing a stream of changing data in the DataModel. More...
 
Search Tab / S to search, Esc to close