1.2. Principles

When you start using the ML, you should understand the most important ML properties and features.

  1. Modules and Host

    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.

  2. Module Networks

    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.

  3. Image Model

    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.

  4. Advanced Features

    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.

  5. Class Groups

    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.

  6. Module Database

    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.