When you start using the ML, you should understand the most important ML properties and features.
Generally speaking, the ML is a C++ library that contains many classes for efficient image processing.
This requires a number of image processing algorithms derived
from the module base class Module
(called
Modules), and an entity that controls these
modules and organizes the data transfer between them - the
Host
. Each module has a
self-descriptive parameter interface built of so-called
Fields that also automatically implements
module persistence.
For complex image processing tasks, many image processing steps need to be combined:
To solve an image processing problem all required modules need to be combined to a module network that defines the image data flow as a directed module graph.
During image processing, the image data flow is realized as a flow of image fractions, the so-called pages which can be regarded as rectangular subimages that contain image data.
The image data flow is demand-driven, i.e., the module network processes only pages that are needed for output image computing. This concept is often also called pull-driven or request-driven.
An ML image has the following properties:
It has up to six dimensions (x, y, z extent, color (c) dimension, time (t) dimension and user (u) dimension).
Although color and color channels are supported (4th dimension), the ML is generally color format independent.
Image pixels (called Voxels for Volume Pixel) can be simple scalars or structured elements.
Generally, an image consists of a set of properties (extent, data type, page extent, medical information, voxel extent, DICOM tags, etc.) and
a set of image data fractions (pages) in memory.
The ML offers some special features to support advanced image processing:
Intermediate results are automatically stored in a buffer to avoid recalculations (caching).
Pages can be processed in parallel during image flow processing (if supported by the modules). See Section 3.1.11.3, “Multithreading: Processing Image Data in Parallel” for more information.
Classes for Error Handling, Debugging and Memory Management are available.
The ML is platform independent, i.e. it runs on Microsoft®, MAC and Linux platforms, and should be portable to other platforms without much effort.
All C++ code of the ML is written in its own namespace to protect it from collisions with other libraries.
A C-Application Programming Interface (C-API) is available to provide the ML to other programming languages.
A Runtime Type System provides a factory for all important classes, modules and types.
The ML provides a set of classes that can be divided into three groups:
Core classes that build the basics for image processing and module handling
Helper or user classes that simplify the implementation of algorithms
Aggregated projects that are not necessarily part of the ML, but essential or very useful for advanced image processing.
There is a large number of modules that cover many image processing tasks:
Input/Output, Arithmetic, Segmentation, Morphology, Geometry, Statistics, Medical Analysis, Drawing, Diagnosis, and many other.
When ML is used in conjunction with MeVisLab, a large number of
modules for ML image visualization (2D and 3D)
modules for standard 3D scene modeling and
macro modules for complex image processing and visualization tasks
is also available.
© 2024 MeVis Medical Solutions AG