================================================================================
- Medical Data Segmentation Toolkit (MDSTk)
- Copyright (C) 2003-2007 by Michal Spanel, FIT, Brno University of Technology
-
- Author: Michal Spanel (spanel@fit.vutbr.cz)
- Date:   2003/12/24
-
- $Id: ChangeLog.txt 487 2007-09-26 11:14:15Z spanel $
-
================================================================================

MDSTk Version 0.7.0beta (yyyy/mm/dd):
  - Build system completely changed to the CMake framework. Former manually
    prepared Makefiles and MSVC solutions have been removed. 
  - Changes in directory structure of the toolkit regarding the CMake system
    philosophy.
  - Added typical 'configure.h' header file...

MDSTk Version 0.6.1beta (not officially released):
  - Added Harris & Stephens image corner detection algorithm. New modules
    providing 2D and 3D corner detection.
  - Corrected bug in the JPEG library on windows platform (definition
    of the boolean type in 'rpcndr.h' system header file differs
    from the original one).
  - Added support for the excellent CMake (Cross-platform Make) build system.
    Many thanks go to Mirek Svub.
  - Others minor changes and bugfixes.

MDSTk Version 0.6.0beta (2007/06/22):
  - Many changes in data entity serialization over channels. New binary
    serializer as well as SHM serializer added. Images and volumes supports
    direct sharing of data over SHM for now. So, its not necessary to copy
    any memory during the deserialization of image/volume from shared memory.
  - Reorganized ImageIO library to allow loading of JPEG and PNG
    images into different types of images (e.g. RGB and grayscale). Removed 
    classes CJPEGSlice and CPNGSlice for loading PNG and JPEG images as
    medical slices. Added universal functions loadPNG(), savePNG(), etc.
    which are able to read/write any MDSTk image from/to PNG or JPEG image.
  - Modified code of basic and cumulative histogram computation.
  - Added new modules for image/volume histogram equalization.
  - Added new iterator's base classes.
  - Modified spirit of smart pointer initialization.
  - Added elementary support for sparse matrices and sparse system solver
    that uses popular UMFPACK library.
  - New parameters of the mdsLoadJPEG and mdsLoadPNG modules.
  - Others minor changes and bugfixes.

MDSTk Version 0.5.3beta (2007/01/03):
  - Disabled security warnings generated by the MS Visual C++ 2005 compiler.
  - Modified serialization approach of data entities. It is not neccessary
    to count accurate size of stored data because a block channel organizing
    data into fixed sized blocks is used for now.
  - Many changes in the VectorEntity library!
  - Several bugs fixed.

MDSTk Version 0.5.2beta (2006/11/09):
  - Added full LAPACK library. The optimized ATLAS library implementing BLAS
    routines and few LAPACK functions and the full CLAPACK library are linked
    together. You can use routines from both libraries thenceforth.
    Pre-compiled library is optimized for the Pentium II processor and
    it doesn't use any SSE or 3DNow instructions. Performance of the library
    is not optimal but it is more portable.
  - Function for computation of eigenvalues and eigenvectors of a square
    symmetric matrix.
  - Added first version of a brief MDSTk guide.
  - Others minor changes.

MDSTk Version 0.5.1beta (2006/09/27):
  - Added CLogNum class representing numbers in logarithmic space. All
    arithmetic operations like addition and multiplication are performed in the
    logarithmic space.
  - General implementation of two clustering algorithms: Fuzzy C-Means and
    Gaussian Mixture Models (GMMs) optimized using the Expectation-Maximization
    (EM) algorithm. Input incomplete data are feature vectors, or just numbers,
    stored in a container which must provide iterators to pass through.
  - Several bugs fixed.

MDSTk Version 0.5.0beta (2006/08/11):
  - Completely remade directory structure of the MDSTk toolkit. All required
    header files can be found in the /include directory and source files
    in the /src directory for now.
  - P. Krsek's library called VectorEntity has been added to the MDSTk toolkit.
    This library provides a number of vector graphics functions. It containes
    classes for vertices, edges, triangles, tetrahedrons, ... in 3D space.
  - Modified approach of data entities. Every data entity provides simple
    serialization and deserialization interface that allows to use inheritance
    and hierarchy of the data entities.
  - Added support for complex images as well as fundamental image conversion
    functions.
  - New functions for computation of two-dimensional Discrete Fourier Transform
    (DFT) which uses the well known FFTW library. Note that the library
    is distributed under the GNU General Public License which is more
    restrictive than the license of MDSTk toolkit.
  - Few modifications of the image/volume filtering approach which may improve
    its usability. Removed several bugs in implementations.
  - Many others minor changes and bugfixes.

MDSTk Version 0.4.1beta (2006/07/12 not officially released):
  - Several minor changes in interface of communication channels. The method
    CChannel::isClosed() was replaced by the CChannel::isConnected() function.
  - Communication channels via the shared memory have been added. The
    implementation is very simple and only for testing. It should be remade
    in future.
  - 16-bit RLE compression is supported.
  - Class CConsole provides only basic functionality required by any console
    application. More MDSTk specific functions are given in the classes CModule
    and CView which are derived from the CConsole.
  - New utility named mdsCreateSHM can be used to allocate a shared memory
    block. This utility is necessary if you want to use shared memory channels.
  - New class CComplex<> representing complex numbers which is analogous to the
    std::complex<> class. 
  - Square min and max image and volume filters.
  - Many others changes and bugfixes.

MDSTk Version 0.4.0beta (2006/02/25):
  - New template based library libMath including matrix and vector classes.
    Fast numerical rutines for linear algebra, e.g. matrix factorization and
    inverse, are provided through the use of the ATLAS library.
  - Modified design of the CImage and CVolume classes. Methods such as getMin(),
    getVariance() and convolve() were removed and reimplemented as global
    functions.
  - Many others minor changes and bugfixes.

MDSTk Version 0.3.2beta (2006/01/26):
  - Modified mds::CChannel class representing I/O channels. Global functions
    mds::chCreate() and mds::chSeparate() were moved into the class CChannel.
    Now these functions are static members of the class.
  - Corrected horrible bug in the method mds::CDicomSlice::loadDicom() which
    causes huge memory leaks!
  - Improved DICOM medical image format parsing provided by the
    mds::img::CDicomSlice class. Added new attributes like slice tilt.
  - Modified Doxygen projects (version 1.4.5) for automatic generation of the
    source code documentation.
  - Clases and others sources were divided into individual namespaces. There
    are new namespaces called mds::base (most of the libBase library), mds::img
    (libImage and libImageIO), mds::mod (libModule) and finally mds::sys
    (libSystem).
  - Removed header file libModule/mdsModule.h. Its content has been moved
    to the libBase/mdsSetup.h file.
  - Few changes in the way of running MDSTk modules. Console module (class
    mds::mod::CConsole) doesn't execute separate threads for each input channel.
    Just a one processing thread is used which can be cancelled by ^C key
    sequence. The class mds::mod::CView works in the same way.
  - System singleton mds::base::CSystemSingleton has been renamed to the
    mds::base::CLibrarySingleton.
  - All MDSTk libraries can be compiled as singlethreaded (no locking) or
    multithreaded. Singlethreaded version is faster, therefore is prefered.
    You can switch between both versions by defining macro MDS_MULTITHREADED
    in the libBase/mdsSetup.h header file.

MDSTk Version 0.3.1beta (2005/12/23):
  - Toolkit has been completely ported to the MS Visual C++ compiler. Required
    compiler version is 7.1 or higher.
  - New small objects allocator implementation based on actual version of the
    Loki library.
  - Extended functionality of image and volume iterators. Constant objects
    can be tranversed using const iterators. Iterator can be initialized to
    point at any pixel position.
  - Modified internal matrix representation which is now similar to that
    of images.
  - Matrix operations like matrix inverse computation are excluded from
    matrix class. Hence, they could be used for both static and dynamic
    matrixes.
  - All testing programs are distributed together with the toolkit now. Even
    though they are very simple, you can use them for studying.
  - Added new modules.

MDSTk Version 0.3.0beta (2005/mm/dd):
  - Completely remade makefiles and whole compilation. All object files are
    stored in a separate directory, so they don't disturb you in directories
    containing source files. Full dependencies can be now generated using
    'make depend' command.
  - Modified logging interface and functionality. Classes representing global
    application log and log channels were defined. Now, you can make and
    register your own output logging channels.
  - Macros MIN, MAX, ABS and etc. were replaced by template functions having
    same meaning. The old macros are still there but marked as obsolete.
  - Added operator '<' (less) for smart pointers comparison.
  - New built-in pixel/image types such as RGB image and so on. Added templates
    for pixel traits and pixel conversions. Image(volume) pixel(voxel) range
    is a global property now. You can't set it individually for an image. On the
    other side a method 'convert(...)' has been added that allows you to convert
    images of different types to each other.
  - Pixel types 'tFPixel' and 'tUPixel' have been renamed to 'tFloatPixel' and
    'tDensityPixel'.
  - Classes mds::CUImage (usnigned short/density image) and mds::CDVOlume are
    renamed to mds::CDImage and mds::CDVolume as well as its pixel types.
  - Modified templates and classes for image/volume filtering. Every filter
    is represented by a specialized generic filter template. Many basic filters
    such as Gaussian, Median, Sobel and Prewit operators and so on have been
    added.
  - Removed modules mSlice(Volume)MedianFilter. Median filtering is now provided
    by the mSlice(Volume)Filter module now.
  - Advanced edge detection algorithms were added. E.g. Canny Edge Detector,
    DoG (Difference of Gaussians) and LoG Zero Crossings.
  - Corrected bug in the 'mVolumeCut' module which causes the module
    malfunction.
  - Many others not so important changes and corrected bugs.

MDSTk Version 0.2.3beta (2005/07/20):
  - Support for identification of objects on the heap was added.
    Objects created via 'new' operator have references counter initialized
    to zero, statically created object always have at least one reference.
    On the other hand, small object allocation model and intrusive reference
    (as well as smart pointers) can't be used together.
  - Few modifications of the CRefData<>, CData<>, CImage<> and CVolume<>
    templates.

MDSTk Version 0.2.2beta (not officially released):
  - The GNU GCC compiler option '-ansi' was removed from all makefiles. It seems
    that this compilation option causes that GCC v3.4.x (and above) cannot
    compile the sources.

MDSTk Version 0.2.1beta (2005/03/07):
  - Fixed bug in the mdsSliceView module. It crashed if there was no
    successfully read input slice.
  - Corrected the module mdsLoadDICOM that fails to read DICOM data
    having the explicit transfer set to true.
  - Camera initialization problem when viewing a large volume data has been
    repaired. Fixed in the mdsVolumeView module.
  - Fixed bug in the mds::CError class.
  - Added a simple version of an object factory template mds::CFactory.
  - The data entities concept has been simplified and extended by
    a possibility to use data compression.
  - RLE channel compression has been added.

MDSTk Version 0.2.0beta (2005/02/14):
  - Many changes in the libBase library. Added smart pointers, singletons,
    small object allocators and so on. Image and volume iterators are now ready
    to use. Improved type traits.
  - New synchronization and system tools has been added to the libSystem
    Library, e.g. CSemaphore, CFileBrowser, CSharedMem and CStopwatch.
  - Several new modules used to manipulate slices and volume has been added.
  - New modules: mSliceHistogram, mSliceMedianFilter, mSliceCut,
    mSliceTresholding, mVolumeHistogram, mVolumeFilter, mVolumeMedianFilter,
    mVolumeCut and mVolumeTresholding.

MDSTk Version 0.1.3beta (2004/08/10):
  - Several changes in the libBase and libImage library.
  - Several modules used to manipulate volume has been added.
  - New modules: mMakeVolume, mVolumeSplit, mVolumeInfo, mVolumeRange
    and mVolumeView.

MDSTk Version 0.1.2beta (2004/05/03):
  - Implemented channels via named pipes.
  - Module mSliceView uses alpha blending to combine several slices together.
  - New modules: mSliceFilter.

MDSTk Version 0.1.1beta (2004/04/13):
  - Normalized output of the module mdsSliceRange, pixel values
    are in the range 0..255.
  - Module mdsSliceView uses the same pixel format as mentioned above.
  - Added support for loading/saving images in JPEG and PNG format.
  - New libraries: libImageIO.
  - New modules: mLoadJPEG, mLoadPNG, mSaveJPEG and mSavePNG.
  - Several bugs fixed.

MDSTk Version 0.1.0beta (2003/12/24):
  - First version of a basic libraries and modules.
  - Libraries: libBase, libSystem, libImage and libModule.
  - Modules: mLoadDicom, mSliceRange, mSliceInfo and mSliceView.

================================================================================
