Release Notes

Release notes MeVisLab 2.2

ML

Release notes MeVisLab 2.1

ML

Release notes MeVisLab 2.0

General

mlUtils/MLUtilities

ML

Other projects

Release Notes for MeVisLab 1.6RC.

General

Bug fixes:

Change notes:

now require reference or pointer to size_t "size" parameters instead of integer type.

mlUtils/MLUtilities

ML

Other projects

Release Notes for MeVisLab 1.6RC, Porting notes for 32 to 64 bit migration and other changes.

General

mlUtils
ENH:

mlLinearAlgebra
ENH:

MLDataCompressors
ENH:

MLDicomTreeImagepropertyExtension
ENH:

ML
ENH:

EnumField changes:

Number of potentially registered data types limited to 2^31-1, because MLDataType is managed as 32 bit signed integer for enum compatibility.

Binary interface changes on mlAPI:

MLMiscModules
ENH:

MLImageFormat
BUG:

ENH:

MLKernel
ENH:

MLTools
ENH:

MLTypeSupport
ENH:

MLDiagnosis
ENH:

MLBase
ENH:

Other (MeVis) Projects

Release Note Overview for MeVisLab1.5 RC to MeVisLab1.5

ITK- & VTK Modules:

Release Note Overview for MeVisLab1.5 RC.

General

ML, mlUtils, mlLinearAlgebra, misc

Projects

Changes before 10.07.2007

ML

Changes before 10.05.2007

General

ML

Projects

Changes before 31.01.2007

General

mlUtils

ML

mlLinearAlgebra

Changes before 09.11.2006

General

mlUtils

ML

MLImageFormat

Changes before 20.10.2006

General

mlLinearAlgebra

MLTypeExtensions

ML

Other changes/New standard projects

Changes before 20.10.2006

General

mlUtils

ML

Other/New standard projects

Changes before 30.08.2006

General

mlUtils

ML

-mlHost & mlBaseOp:

mlHost:

Other/New standard projects

Changes before 23.08.2006

General

mlUtils

ML

-mlFields and mlFieldContainer:

Other/New standard projects

MeVis projects:

Changes before 23.08.2006

General

mlUtils

mlLinearAlgebra

ML

MLTools

MLStreamSupport

MLModuleTests

Changes before 12.05.2006

General

ML, MLUtils, mlLinearAlgebra

Changes before 12.05.2006

General

ML, MLUtils, mlLinearAlgebra

Changes before 12.05.2006

General

ML, MLUtils, mlLinearAlgebra

Changes before 11.05.2006

General

ML, MLUtils, mlLinearAlgebra

mlKernel

mlKernel

mlTestsAndChecks

Changes before 31.01.2006

General

ML

mlKernel

Changes before 31.12.2005

General

mlUtils

ML

mlLinearAlgebra

mlKernel

MLTools

Changes before 30.11.2005

General

mlLinearAlgebra

to

    template <class DT> class Tvec2;
    typedef Tvec2<MLdouble> Vector2d;
    typedef Vector2d Vector2;

ML

MLTypeExtensions

MLTypeSupport

mlKernel

mlBasicModules

Changes before 08.06.2005

General

mlUtils, ML

Changes before 31.03.2005

General

mlUtils, ML, MLTools, mlLinearAlgebra

-Class Mat3 has new method jacobi to calculate Jacobi-Decomposition of 3x3 matrix.

ML

MLMiscModules

MLDiagnosis

SoView2D

Changes before 29.12.2004

General

ML Guide

RenderLib

Changes before 24.12.2004

General

ML Guide

mlUtils

In mlSyngoSupport.h the ML_TRACE_IN and ML_TRACE_IN_TIME_CRITICAL are both implemented.

New implementations for platform independent snprintf and sscanf have been added since Microsoft makes it very difficult to reimplement sscanf correctly. So reimplementation for linux have been added to be compatible with the windows string formats. So the following macros make 64 bit printing platform independent and should be used where MLint or MLint64 needs to printed. The repository has been checked and updated.

     #define MLsnprintf _MLsnprintf
     #define MLsscanf   _MLsscanf
     ML_UTILS_EXPORT int _MLsnprintf(char*s, size_t maxChars, const char* format, ...);
     ML_UTILS_EXPORT int _MLsscanf(char*s, const char* format, ...);

ML and other projects

MLTypeExtensions

32/64-Support changes in Other projects

Changes before 12.11.2004

mlUtils

ML

Changes before 30.11.2004

mlUtils

MLMiscModuleInv2

MLTools

Changes before 26.10.2004

ML and mlUtils

Changes before 24.09.2004

General changes:

ML

MLUtils

MLDiagnosis

Changes before 24.09.2004

General changes:

MLUtils

MLLinearAlgebra

ML

Changes before 21.08.2004

New Version number 1.1.4.1.6 set in mlVersion.h in mlUtils.

MLUtils

Changes before 20.08.2004

New Version number 1.1.4.1.5 set in mlVersion.h in mlUtils.

MLUtils

ML

Changes before 10.08.2004

New Version number 1.1.2.1.2 set in mlVersion.h in mlUtils.

mlUtils

mlLinearAlgebra

ML

Changes before 07.08.2004

mlUtils

MLDiagnosis

MLParakrama

ML

Changes before 29.07.2004

General Changes

mlTypeDefs.h is especially designed that it can be included by other libraries without linking mlUtils or the ML. (Feature request http://bugzilla.mevis.de//show_bug.cgi?id=801)
Affected files:

mlUtils

ML

MeVisLab

Other

Changes before 23.07.2004

ML

These modules now should be able to calculate with the following already available types like complexf, complexd, complexld, Vector2,... Vector32, Matrix3 and Matrix4. In some cases when voxel values from guis are only scalar values values like e.g. double limitations of functionality still might result. If that's desired universal data type field should be used instead.

MLKernel

MLDiagnosis

MLTypeSupport

SoVirtualVolume

Changes before 01.07.2004

ML

MLMiscModules

mlTools

MLBasicModules, MLMiscModules, MLMiscModuelsInv, MLBase, MFL*, SoView2DMenu and many other projects

MLKernel

Changes before 11.06.2004

mlLinearAlgebra

mlUtils

ML

MLBasicModules

Changes before 21.04.2004

This update requires an update of the source code repository and a reinstallation of libs and dlls.

Generally it contains review changes on many kernel classes but also some minor changes on the mlUtils and ML projects.

The changes in detail

Some minor changes on mlUtils and ML:

Changes before 07.04.2004

This update requires a complete reinstallation of

The changes in detail:

Release notes for the ML update

New error codes have been added:

Project Utils has initialization and destruction functions now:

Changes on Siemens Review Branch before integrating it into the main development branch of the ML:

Work List for Easier Reviewing of Changes

New/Changes/Moved

mlUtils

CHANGES IN ALL OTHER FILES

Changes before 01.03.2004

This update requires a complete reinstallation of

The changes in detail:

Changes before 16.02.2004

ML and Module changes

This update requires a complete reinstallation of

Moreover some networks using Surround, CloseGap and Compass may have problems since porting of those modules to new kernel classes made a compatibility impossible. Please be careful in networks using these modules.

Kernel modules runs under ILAB5 now; however Cinderella tasks still could not be completed.

Changes in project Kernel

ML Changes

Changes before 05.12.2003

Changes before 30.11.2003

Changes

New Stuff

  1. MLIsAnyCarrierTypePtr
  2. MLGetDataTypeFromPtr
  3. MLGetPhysicalDataTypeFromPtr
  4. MLIs64BitIntegerTypePtr
  5. MLIsSignedTypePtr
  6. MLIsLDoubleTypePtr
  7. MLHasCarrierTypePtrs

typically get some typed pointer(s) and return the desired information. Note that those functions work only for ML data types.

Class, Macro and Field Movements

Core changes are that implicit conversions between types (e.g. from Vector3 to Vector2) have been implemented differently so that they need to be forced be explicit statements. This was necessary to avoid that implicit functionality causes undesired results. Resulting changes in the repository are usually that assignments from e.g. Vector3 or Vector4 to Vector6 have been replaced by adequate assignments from Vector6 to Vector6. Conversions from Vector6 can be done with new methods like Vector6.getVec4() or getVec3().

RotationField *rotationFld = getFieldContainer()->addRotation("rot"); rotationFld->setRotationValue(vec3Val, angle);

have been replaced by

RotationField *rotationFld = new RotationField("rot"); getFieldContainer()->addField(rotationFld); rotationFld->setRotationValue(vec3Val, angle);

Changes before 29.09.2003

This is again a smaller ML update which requires a complete update of the developer repository.

Changes before 12.09.2003

This is a smaller ML update which requires a complete update of the developer repository. The ILAB4 versions can remain unchanged. The following changes have been integrated into the repository:

Changes before 29.07.2003

Please read these notes carefully since also your c++ code requires changes (or already has been updated). Some information may be useful for you to simplify your next programmings.

Overview

The most important changes are:

Important

This update requires a complete update on the entire repository and a new installation of all ILAB4 and ILAB5 versions on windows and on linux.

Before updating your code please have a look at the cvs differences to learn about the changes on your code and to check them. So the risk of bugs due to the update can be reduced.

As usual all projects in MeVis have been revised and updated so that there usually should be nothing more to do by the module developers. However, bugs are always possible (sorry if that case happens...) and so some startup tests are strongly recommended to remove bugs as fast as possible...

The integration of registered data types is not complete: Many modules could implement much better support or simply permit those types. This will be done step by step in future releases.

Features and Limitations of new Voxel Data Types

The changes in detail

All important header files for ML and module programming have been collected in mlSystemIncludes.h now. There all senseless warnings from Microsoft headers have been disabled. Compiler switches automatically switch between linux/windows versions so that you do not need that any more. This file is always included when using ML classes so you usually do not need to include any system header any more (and it is recommended not to include them since that's time consuming and does not disable system header warnings).

IMPORTANT: All CALC_OUTSUBIMAGE* macro calls in header files now also need the module class name as parameter!

OutputConnector and InputConnector are located in the files mlConnectors.* and MemoryImage is located in files mlMemoryImg.* now. So input and output images correctly became real image processing parameters like any other fields, too. This makes it possible to create your own inputs/outputs in the constructor with getFieldContainer()->addInputConnector() or getFieldContainer()->addOutputConnector() instead of using the base class functionality. Module inputs and outputs became dynamical like all other fields which permits the implementation of modules with a changing number of inputs or outputs. Using this, however, is not recommended since ILAB currently does not support connector number changes during runtime.

The file MTDataTypes has been renamed to mlDataTypes.h.

There is a new data type MLint which currently is compiled as MLint32. In later versions it might be changed to MLint64 to support 64 bit indexing in the ML which will be necessary to address images with more than 2 giga voxels. That, however, also required that ImageVector, SubImageBox and IntField use MLint. So many projects have been changed to use MLint instead of int for IntFields.

To simplify different int types for ImageVector and SubImageBox those classes are specializations from templates TVector and TSubImageBox.

Further changes resulting to mlBasics: The class ImageVector/TVector has the hollowing operators and methods: -, [], &[], &, |, ^, &=, |=, ^=, <<, >>, <<=, >>=, getMin(), getMax(), getMinIdx(), getMaxIdx(). and copy constructors. TSubImageBox/SubImageBox has a new translate method to shift the box by an offset vector.

mlBasicTypes:

MLDataType is not an enum any more but an int. So dynamically added data types can also be represented. Invalid data types ids are usually identified by a -1. Each data type has a describing struct of type MLTypeInfos containing all informations and operations a data type has.

New data type MLint64 added. Please check whether your module handles it correctly, it is automatically compiled in all CALC_OUTSUBIMAGE* macros now. In many projectsits support has been implemented by new switch cases. Currently the string input of integer64 data types is very restricted; it must be exactly in the format 0x0123456789abcdefI64 since correct scan functionality has been forgotten/is not available on windows.

Now compiled and used module data types are distinguished. The number of really compiled data types is fixed and handled by the enum MLPhysicalDataTypes which contains the types

     MLint8Type,
     MLuint8Type,
     MLint16Type,
     MLuint16Type,
     MLint32Type,
     MLuint32Type,
     MLfloatType,
     MLdoubleType,
     MLldoubleType,
     MLint64Type,
     MLCarrier4Type,
     MLCarrier8Type,
     MLCarrier12Type,
     MLCarrier16Type,
     MLCarrier32Type,
     MLCarrier64Type,
     MLCarrier128Type and
     MLCarrier256Type.

The constants

     ML_NUM_STANDARD_TYPES
     ML_NUM_PHYSICAL_DATATYPES
     ML_SIZE_OF_MAX_CARRIER_TYPE

are new.

New field class UniversalTypeField permits input of a selectable MLDataType as string.

TestPattern and ConstImg modules can also create images with extended data type values now. They also have an auto apply button.

Standard data types in mlDataTypes have typedefs for their corresponding pointers now. This is often useful to avoid seeming pointer incompatibilities (e.g. between MLint* and int*). Constants for maximum and minimum also have been added.

An mlCarrier* data type wraps a currently used registered data type. So any number of data types can be registered/handled by the ML without recompilation.

For each available data type (built-in and registered types) an MLTypeInfo struct can be requested which contains detailed information about the data type, its architecture, its defaults, pointers to its operators, and much more. Have a look at MLTypeInfos in mlDataTypes.h for more information.

The functions

     MLAlloc
     MLFree
     MLRealloc
     MLStrDup
     MLMemDup

have been newly implemented or extended by error handling in different ways and are exported in mlDataTypes.h now; however they're implemented in the new ML class Memory now.

The functions

     char* itoaCopy(int i)     (mlBasics.h)
     char* ftoaCopy(double f)  (mlBasics.h)

use mlAlloc to allocate memory now.

Many macros and accesses to global arrays have been replaced by functions and names have been unified and/or they were moved from mlBasics to MLDataTypes:

   -ML_NAME                          -> MLNameFromDataType
   -ML_sizeof                        -> MLSizeOf
   -ML_MIN                           -> MLMin
   -ML_MAX                           -> MLMax
   -ML_RANGE_ORDER                   -> MLRangeOrder
   -ML_IS_SIGNED                     -> MLIsSigned
   -ML_IS_INT_TYPE                   -> MLIsIntType
   -ML_IS_FLOAT_TYPE                 -> MLIsFloatType
   -ML_HOLDS                         -> MLHolds
   -getMLDataTypeForRange            -> MLGetDataTypeForRange,
   -getMLDataTypeForUncorrectedRange -> MLGetDataTypeForUncorrectedRange
   -MLpromotedPrecision              -> MLGetPromotedPrecision
   -MLpromotedType                   -> MLGetPromotedType
   -itoa                             -> removed (see above)
   -ftoa                             -> removed (see above)
   -itoaCopy                         -> MLIntToStringCopy
   -ftoaCopy                         -> MLFloatToStringCopy
   -mlAlloc                          -> MLAlloc
   -mlFree                           -> MLFree
   -mlRealloc                        -> MLRealloc
   -mlStrDup                         -> MLStrDup
   -mlMemDup                         -> MLMemDup

Functions which allocate memory have better error handling functionality now. All are outside of the ML namespace now.

     MLDataTypeFromName
     MLIsStandardType
     MLGetCarrierTypeForSize
     MLGetPhysicalDataType
     MLSizeOfRegisteredType
     MLIsStandardType
     MLGetRangeAndPrecisionEquivalent

     // ML type system:
     MLAreTypesInitialized
     MLInitializeTypes
     MLDestroyTypes

     // Physical data types:
     MLSizeOfPhysicalType
     MLGetPhysicalDataType
     MLGetCarrierTypeForSize

     // Testing supported features of data types:
     MLTypePropBitsTest
     MLTypePropBitsAnd
     MLTypePropBitsOr
     MLTypePropBitsXor

     // Registration of new data types:
     MLRegisterTypeInfos
     MLIsRegisteredTypeInfos
     MLGetNumRegisteredTypeInfos
     MLGetTypeInfosAtIndex
     MLGetTypeInfosForDataType

     // (De)Activation/saving/restoring currently wrapped types:
     MLTypeInfosPushAndSetInput
     MLTypeInfosPushAndSetOutput
     MLTypeInfosPushAndSetBoth
     MLTypeInfosPushAndSetTypes
     MLTypeInfosPop

     // Big/Little endian conversion:
     MLIsLittleEndian
     MLMakeLittleEndian
     MLMakeBigEndian
     MLSwapBytes
     MLTypeToggleEndianType
     MLTypeConvertToLittleEndian
     MLTypeConvertToBigEndian

and many other convenience functions which support advanced operations on data types.

Please have a close look at mlDataTypes.h for further details.

     static mlErrorCode getTile(Module* op,
                                SubImageBox loc,
                                MLDataType datatype,
                                void** data,
                                const ScaleShiftData &scaleShiftData=ScaleShiftData());

and

     static mlErrorCode getTile(Module* op,
                                SubImage *subimg,
                                const ScaleShiftData &scaleShiftData=ScaleShiftData());

     // Reads any voxel value from an input module as string value.
     static std::string getVoxelValueAsString(Module *op, int outIdx, const ImageVector &pos,
                                              MLErrorCode *errCode=NULL,
                                              const std::string &errResult="");

Of course this method supports registered data types.

     // Pixel value as string to support registered/composed ML data types.
     SoSFString valueStr;
     SoSFString medicalValueStr;

These fields are string outputs for the voxels which show the entire voxel value and not only a casted one to float. They could be used e.g. in the annotation node to show the complete voxel value. However they're still not passed to SimpleView2D.

    complexf,
    complexd,
    complexld,
    Vector2,
    Vector3,
    Vector4,
    Vector6,
    Vector8,
    Vector16,
    Vector32,
    Vector16,
    ImageVector,
    Vector64,
    Matrix3,
    Matrix4

have been registered as new voxel data types in the ML. If you think about registering your own data type please have a look at

    MLComplexTypeExtension.h,
    MLDoubleVectorTypeExtension.h,
    MLIntVectorTypeExtension,
    MLStdTypeExtension.h or
    MLMatrixTypeExtension.h

as examples in directory mlTypeExtensions in include directory of the ML.

static SubImageBoxd SubImageBoxd::calcAATransformedBox(const SubImageBox &box, const Matrix4 &matrix);

SubImageBox has a new function which returns the eight corners of a SubImageBox as 3D coordinates:

static void get3DCorners(const SubImageBox &box, ImageVector corners[8]);

Implementation of SubImageBoxd is now complete in namespace ML.

Changes before 14.03.2003

The main changes of this ML and ML-Module:

Detailed list of changes:

-MedicalImageproperties have been changed: -Voxel size can be set/get as Vector3 now. -Former class always caused problems when used in const methods since reading methods weren't const. Now class should be const capable. -These changes caused that the ToVoxelMatrix is now updated always when setWorld* methods are called. So these calls are more expensive now. -Some new access methods for world and voxel matrix operations have been added. -Many get-Methods are const now. -Some return values especially pointers are const now so that internal modifications of e.g. matrices are not possible any more. -Bug Fix: MedicalImageProperties::setToWorldMatrix(const Matrix4 *mat) now corrects set matrix values. Former version forgot that. -Projects using non const pointers into image properties have been adapted.

IMPORTANT: -When using set methods on matrices and voxel sizes extensively the new overhead for ToVoxelMatrix updates may be noticable. -When overloading reading methods of this class it must be proved that they also use const if the parent class it also has.

About 14.01.2003, Wolf Spindler.

Changes before 18.12.2002

These modules will replace the current Diagnosis modules when complete.

Changes before 11.09.2002

Changes before 01.08.2002

Changes before 25.04.2002

Changes before 20.03.2002

Changes before 06.02.2002

Changes before 27.11.2001

Changes before 07.11.2001


Generated on Sat Sep 3 18:39:29 2011 for MeVisLab Toolbox Reference by  doxygen 1.5.8