/**
\page CreditsChangelog Credits and Changelog

<b> Credits</b>

<ul>
      <li> <a href="http://hci.iwr.uni-heidelberg.de/people/ukoethe/">Ullrich K&ouml;the</a>
             originated and wrote the library.

      <li> Mikhail Amchislavsky
      (<a href="mailto:mamchisl@ucdavis.edu">mamchisl@ucdavis.edu</a>)
      contributed code to read and write PNM files.

      <li> Hans Meine
      (<a href="mailto:hans_meine@gmx.net">hans_meine@gmx.net</a>)
      contributed interface code for the FFTW Fourier transform library,
      the ImageArray class and the Gabor filter code. He also
      collaborated in the implementation of many other modules and contributed various improvements.

      <li> Gunnar Kedenburg
      (<a href="mailto:gunnar@haquebright.de">gunnar@haquebright.de</a>)
      completely rewrote the image import/export library and implemented
      the initial version of the \ref vigra::MultiArray functionality.

      <li> Yevgen Reznichenko
      (<a href="mailto:rezniche@kogs.informatik.uni-hamburg.de">rezniche@kogs.informatik.uni-hamburg.de</a>)
      added a number of image processing algorithms.

      <li> Christian Dennis Rahn
      (<a href="mailto:rahn@informatik.uni-hamburg.de">rahn@informatik.uni-hamburg.de</a>)
      implemented initial versions of multi-dimensional convolution filters.

      <li> Kasim Terzic, Florian Heinrich and Benjamin Seppke
      implemented image analysis functionality for 3- and higher-dimensional data.

      <li> Pablo d'Angelo, Douglas Wilkins, Lukas Jirkovsky and other members of the
      <a href="http://hugin.sourceforge.net">Hugin team</a> contributed various extensions of the impex
      library (UINT16/UINT32 support, ICC profile support, HDR and OpenEXR file types).

      <li> Rahul Nair implemented the \ref vigra::RandomForest classifier and VIGRA Matlab bindings.

      <li> Michael Hanselmann and Martin Lindner implemented much of the HDF5 support. Michael Hanselmann
           also contributed his pLSA (probabilistic latent semantic analysis) implementation.

      <li> Nathan Huesken and Christoph Sommer helped a lot in developing
           <a href="../vigranumpy/index.html">vigranumpy</a>, the VIGRA Python bindings.

      <li> Jens-Malte Gottfried contributed to the cmake-based build system.

      <li> Joachim Schleicher implemented a reader for the SIF file format.

      <li> Oliver Gathmann and Michael Held implemented support for the multi-page TIFF format.

      <li> Christoph Spiel contributed I/O functions for images with transparency (alpha channel) and other improvements to the impex library.

      <li> Frank Lenzen contributed his implementations of total variation filters.

      <li> Patrick Fahner helped writing the tutorial.

      <li> Stefan Schmidt made major contributions to \ref vigra::GridGraph.

      <li> Martin Bidlingmaier extended various image processing function to support block-wise execution on large data.

      <li> Thorsten Beier implemented many \ref GraphDataStructures "graph-based image analysis algorithms" and parallel versions of important image processing functions.

      <li> Benjamin Seppke contributed various \ref Registration "image registration" algorithms.

      <li> John Kirkham figured out how to configure Travis to run tests for Python3 and on OS X.

      <li> Mark Harfouche updated CMake configuration to 3.12 enabling compatibility with PyPy.

      <li> Philip Schill implemented version 3 of the Random Forest.

      <li> David St&ouml;ckel contributed the 3D convex hull functionality.

      <li> Numerous people reported and fixed bugs and made suggestions.
</ul>

Many thanks to all!
<p>

<b> Changes from Version 1.12.0 to 1.12.1 (2024/09/02)</b>

<ul>

      <li> Addressed incompatibilities with Numpy 2 in the implementation of ptp. https://github.com/ukoethe/vigra/pull/581

</ul>

<b> Changes from Version 1.11.2 to 1.12.0 (2024/08)</b>

<ul>

      <li> Improved compatibility with Visual studio compiler and clang 16

</ul>

<b> Changes from Version 1.11.1 to 1.11.2 (unreleased)</b>

<ul>
      <li> Updated CMake minimum version to 3.12.

      <li> Added support for PyPy as python runtime (Mark Harfouche).

      <li> Updated/Fixed CI, including various fixes for the build system (Mark Harfouche, John Kirkham, Dominik Kutra)

      <li> Various fixes / improved compatility to support updated dependencies (hdf5 5.12, numpy>=1.20, sphinx>=1.8.0, python 3, h5py 3.0) (Mark Harfouche, John Kirkham, Ullrich Koethe, Dominik Kutra, Hans Meine) 

      <li> Fixed Matlab compilation (Joachim B&ouml;rger)

      <li> Fixed compilation with cpp17 (Constantin Pape)
</ul>

<b> Changes from Version 1.11.0 to 1.11.1</b>

<ul>
      <li> Added 3D convex hull computation and features (David St&ouml;ckel).

      <li> Added Random Forest version 3, inspired by LEMON's graph API, to simplify customization of RF variants (Philip Schill).

      <li> Improved hierarchical clustering (Constantin Pape).

      <li> Minor improvements and bug fixes in the code and documentation.
</ul>

<b> Changes from Version 1.10.0 to 1.11.0</b>

<ul>
      <li> Ported vigranumpy to Python 3.5.

      <li> Added \ref ChunkedArrayClasses to store data larger than RAM as a collection of rectangular blocks.

      <li> Added \ref vigra::ThreadPool and \ref parallel_foreach() for portable algorithm parallelization based on <tt>std::thread</tt>.

      <li> Implemented parallel versions of Gaussian smoothing, Gaussian derivatives, connected components labeling, and union-find watersheds.

      <li> Added graph-based image analysis, e.g. agglomerative clustering

      <li> Included the callback mechanism described in <a href="http://www.codeproject.com/Articles/11015/The-Impossibly-Fast-C-Delegates">"Impossibly Fast C++ Delegates"</a> by Sergey Ryazanov (needed for agglomerative clustering).

      <li> Added many \ref Registration "image registration" functions.

      <li> Extended the collection of \ref DistanceTransform "multi-dimensional distance transform" algorithms by vectorial DT, boundary DT, and eccentricity transform.

      <li> Added \ref skeletonizeImage(), nonLocalMean(), multi-dimensional integral images.

      <li> Added new 2D shape features based on skeletonization and the convex hull.

      <li> Additional arithmetic and algebraic functions for \ref vigra::TinyVector.

      <li> Added \ref vigra::CountingIterator.

      <li> Minor improvements and bug fixes in the code and documentation.

</ul>

<b> Changes from Version 1.9.0 to 1.10.0</b>

<ul>
      <li> VIGRA got a \ref Tutorial !

      <li> Significant simplification of the API: <tt>MultiArrayView</tt> arguments can now be passed to functions directly:

      \code
      MultiArray<float> src(Shape2(200,100)), dest(src.shape());
      gaussianSmoothing(src, dest, 2.0);
      \endcode

      The old syntax with \ref ArgumentObjectFactories (<tt>srcImageRange()</tt>, <tt>srcMultiArray()</tt> and relatives) remains valid, but is only required when the arguments are old-style <tt>BasicImage</tt>s.

      <li> Made <tt>StridedArrayTag</tt> the default for \ref vigra::MultiArrayView .

      <li> Added an efficient multi-dimensional \ref vigra::GridGraph class which support both the LEMON and boost::graph APIs.

      <li> Generalized various algorithms to arbitrary dimensions (\ref gaussianGradientMultiArray(), \ref hessianOfGaussianMultiArray(), \ref gaussianDivergenceMultiArray(), \ref localMinima(), \ref localMaxima(), \ref labelMultiArray(), \ref watershedsMultiArray()).

      <li> Added \ref slicSuperpixels() for arbitrary dimensions.

      <li> Added automatic differentiation (see \ref vigra::autodiff::DualVector).

      <li> Added \ref nonlinearLeastSquares() using the Levenberg-Marquardt algorithm and automatic differentiation.

      <li> Added a function <tt>setCoordinateOffset()</tt> to the feature accumulator classes to enable block-wise computation of coordinate-based features.

      <li> Added \ref vigra::MultiCoordinateIterator to enumerate the grid coordinates of a multi-dimensional array.

      <li> Fixed thread-safety of <tt>RandomForest::learn()</tt> (random seeding) and <tt>RandomForest::predictLebels()</tt>.

      <li> Improved HDF5 I/O for strided <tt>MultiArrayView</tt>s and HDF5 on-the-fly compression.

      <li> Added support for multi-page TIFF to \ref importVolume() and \ref exportVolume(). Added support for Andor SIF to \ref importVolume().

      <li> Added <tt>VigranumpyConfig.cmake</tt> to simplify cmake-based compilation of custom vigranumpy modules.

      <li> Minor improvements and bug fixes in the code and documentation.
 </ul>

<b> Changes from Version 1.8.0 to 1.9.0</b>

<ul>
      <li> Flexible incremental computation of image and region statistics via \ref FeatureAccumulators and corresponding Python bindings (see <a href="../vigranumpy/index.html#vigra.analysis.extractFeatures">vigra.analysis.extractFeatures()</a> and <a href="../vigranumpy/index.html#vigra.analysis.extractRegionFeatures">vigra.analysis.extractRegionFeatures()</a>).

      <li> Simultaneous iteration over several arrays via \ref vigra::CoupledScanOrderIterator.

      <li> Import and export of images with transparency: importImageAlpha() and exportImageAlpha().

      <li> Image denoising by total variation filtering, see \ref NonLinearDiffusion and example <a href="total_variation_8cxx-example.html">total_variation.cxx</a>.

      <li> Fixed Python bindings of \ref Unsupervised_Decomposition.

      <li> Extended \ref vigra::SplineImageView to handle \ref vigra::TinyVector pixels.

      <li> Various convenience functions for vigranumpy's <a href="../vigranumpy/index.html#vigra.VigraArray">VigraArray</a>.

      <li> Minor improvements and bug fixes in the code and documentation.
 </ul>

<b> Changes from Version 1.7.1 to 1.8.0</b>

<ul>
      <li> Various extensions to \ref LocalMinMax (3D algorithms, on-the-fly thresholding).

      <li> Added \ref vigra::BucketQueue, \ref vigra::MappedBucketQueue.

      <li> Refactored and extended 2D watershed algorithms (especially watershedsRegionGrowing()).

      <li> Added the \ref vigra::Quaternion class.

      <li> Added \ref Unsupervised_Decomposition.

      <li> Added mathematical functions (even(), odd(), gamma(), loggamma(), legendre(), besselJ(), besselY(),
           linearSequence(), indexSort(), inversePermutation(), applyPermutation(), checksum())

      <li> Implemented wrapper of the <a href="http://www.fftw.org/">FFTW library</a> to support
           arbitrary dimensional Fourier transforms (see \ref fourierTransform() and \ref vigra::FFTWPlan)
           and FFT-based convolution (see \ref convolveFFT() and \ref vigra::FFTWConvolvePlan) and
           refactored \ref vigra::FFTWComplex.

      <li> Added cannyEdgelListThreshold(), cannyEdgelList3x3Threshold().

      <li> Added capability to handle subarrays and anisotropic resolution to separableConvolveMultiArray()
           and related Gaussian filters. Added <tt>windowRatio</tt> parameters to \ref vigra::Kernel1D::initGaussian()
           and \ref vigra::Kernel1D::initGaussianDerivative()

      <li> Added \ref vigra::StridedScanOrderIterator and corresponding \ref vigra::MultiArrayView::begin().

      <li> Extended \ref vigra::MultiArrayView. Added vigra::Shape1 ... vigra::Shape5 convenience typedefs.

      <li> Implemented \ref MultiMathModule (arithmetic and algebraic functions for multi-dimensional arrays).

      <li> Extended the \ref vigra::HDF5File class.

      <li> Improved and documented the \ref TimingMacros.

      <li> Added support for the <a href="http://www.openexr.com/">OpenEXR image format</a> and multi-page TIFF. Improved
           support for the SIF format.

      <li> <b>vigranumpy</b>: added <a href="../vigranumpy/index.html#axistags-and-the-vigraarray-data-structure">axistags </a>
           and completely re-implemented VigraArray and the conversion between
           Python and C++ arrays in terms of axistags.

      <li> Minor improvements and bug fixes in the code and documentation.
 </ul>

<b> Changes from Version 1.7.0 to 1.7.1</b>

<ul>
      <li> Fixed the build process for MacOS X.

      <li> Re-activated <tt>vigra-config</tt> (script to query VIGRA installation information)
           and added <tt>VigraConfig.cmake</tt> (query VIGRA installation information from
           within cmake).

      <li> Added CDash support (nightly builds and tests).

      <li> Added \ref convexHull().

      <li> Added \ref vigra::Box.

      <li> Added \ref vigra::Sampler class to sample given data in various ways.

      <li> Added much new functionality to the \ref vigra::RandomForest class
           (e.g. more split strategies, variable importance measures, feature selection)

      <li> Added readSIF() (reader for the Andor SIF file format).

      <li> Added \ref vigra::HDF5File for easier navigation in HDF5 files.

      <li> Added recursive approximation of the Gaussian filter (\ref recursiveGaussianFilterX(),
           \ref recursiveGaussianFilterY())

      <li> vigranumpy: added Gabor filtering.

      <li> Fixed multi-threading bugs at various places.

      <li> Minor improvements and bug fixes in the code and documentation.
 </ul>

<b> Changes from Version 1.6.0 to 1.7.0</b>

<ul>
      <li> Incompatible changes:
      <ul>
           <li> Modified angle convention from counter-clockwise to clockwise
                (see e.g. \ref vigra::Edgel). This fits better with the left-handed coordinate system
                 we use.

            <li> \ref symmetricEigensystem(): sort eigenvalues by decreasing value
                 (was: decreasing abs value)
      </ul>

      <li> Implemented a new build system on the basis of <a href="http://www.cmake.org/">cmake</a>.

      <li> Added \ref vigra::NumpyAnyArray and \ref vigra::NumpyArray, improved \ref vigra::MultiArrayView.

      <li> Added <b><a href="../vigranumpy/index.html">vigranumpy</a></b> (VIGRA Python bindings).

      <li> Added \ref VigraMatlab.

      <li> Added support for <a href="http://www.hdfgroup.org/HDF5/">HDF5</a> import/export of arrays
           (see \ref VigraHDF5Impex).

      <li> Added \ref vigra::RandomForest classifier.

      <li> Added constrained optimization functions: \ref nonnegativeLeastSquares(),
           \ref quadraticProgramming(), \ref leastAngleRegression() (LASSO and non-negative LASSO).

      <li> Added \ref choleskySolve() and improved \ref choleskyDecomposition() (in-place capability).

      <li> Added \ref symmetric2x2Eigenvalues() and \ref symmetric3x3Eigenvalues() for
           fast eigenvalue computation on small matrices.

      <li> Added \ref meshGrid().

      <li> Added \ref vigra::FixedPoint16.

      <li> Minor improvements and bug fixes in the code and documentation.
</ul>

<b> Changes from Version 1.5.0 to 1.6.0</b>

<ul>
      <li> Added functions for arrays of arbitrary dimensions:
      <ul>
          <li> \ref DistanceTransform "Euclidean distance transform"
          <li> \ref MultiArrayMorphology "separable morphology"
          <li> \ref resizeMultiArraySplineInterpolation()
      </ul>

      <li> Added functionality for 3D image analysis: \ref labelVolume(), \ref seededRegionGrowing3D(),
           \ref watersheds3D(), \ref VoxelNeighborhood

      <li> Added \ref RandomNumberGeneration

      <li> Added \ref affineWarpImage() and factory functions for
           affine transformation matrices

      <li> Added linear algebra functionality: \ref choleskyDecomposition(), \ref singularValueDecomposition(),
           \ref determinant(), \ref logDeterminant(),
           \ref leastSquares(), \ref weightedLeastSquares(), \ref ridgeRegression()

      <li> Extended \ref linearSolve(), \ref qrDecomposition(), and \ref inverse() to handle
           rectangular matrices (complete reimplementation of these functions).

      <li> Added matrix functionality: \ref joinVertically(), \ref joinHorizontally(),
           \ref columnStatistics(), \ref rowStatistics(), \ref prepareColumns(), \ref prepareRows()

      <li> Added/fixed \ref vigra::MultiArray and \ref vigra::linalg::Matrix computed assignments

      <li> Extended MultiArrayView::norm() to compute L1, L2 and Linfinity, added MultiArrayView::swapData(),
           MultiArrayView::permuteDimensions(), MultiArrayView::transpose(), and other minor improvements
           to MultiArrayView

      <li> Added typedef \ref vigra::MultiArrayIndex to fix signed/unsigned mismatch problems

      <li> Added \ref vigra::ImagePyramid

      <li> Minor improvements in \ref VigraImpex

      <li> Added sRGB to \ref ColorConversions

      <li> Added weighted operator()s to FindAverage[AndVariance] functors.

      <li> Added \ref log2i() (integer base-2 logarithm), \ref floorPower2(), and \ref ceilPower2()

      <li> Added \ref argMin(), \ref argMax(), \ref argMinIf(), \ref argMaxIf()

      <li> Changed default border treatment of Gaussian filters and derivatives to BORDER_TREATMENT_REFLECT

      <li> Promoted documentation to Doxygen 1.5.6

      <li> Minor improvements and bug fixes in the code and documentation.
</ul>

<b> Changes from Version 1.4.0 to 1.5.0</b>

<ul>
      <li> Added \ref NoiseNormalization

      <li> Added \ref SlantedEdgeMTF

      <li> Added \ref gaussianGradientMagnitude()

      <li> Added \ref fourierTransform() and \ref fourierTransformInverse()

      <li> Added \ref cannyEdgelList3x3()

      <li> Added srcImage(), srcImageRange() etc. with ROI (see \ref ArgumentObjectFactories)

      <li> Improved the \ref VigraImpex (thanks to Pablo d'Angelo, Douglas Wilkins and others):
      <ul>
         <li> Added UINT16 and UINT32 pixel types.
         <li> Added support for obtaining extra bands beyond RGB.
         <li> Added support for a position field that indicates the start of this
                image relative to some global origin  (PNG + TIFF).
         <li> Added support for x and y resolution fields.
         <li> Added support for ICC profiles (TIFF, PNG, and JPEG).
         <li> Added support for deflate compression (PNG + TIFF).
         <li> Added support for .hdr file format (high dynamic range).
      </ul>

      <li> Improved support of 64-bit compilers.

      <li> Added mathematical functions:  elliptic integrals (\ref ellipticIntegralF(), \ref ellipticIntegralE()),
             chi-squared distribution (\ref chi2(), \ref chi2CDF(), \ref noncentralChi2(), \ref noncentralChi2CDF())

      <li> Dropped "vigra/" from \#includes in headers (so compiler will first look in the same directory).

      <li> Switched to relative paths in the MSVC project files. Compile vigraimpex into a DLL.

      <li> Bug fixes in the code and documentation.
</ul>

<b> Changes from Version 1.3.3 to 1.4.0</b>

<ul>
      <li> Switched to the MIT X11 License.

      <li> Introduced \ref FixedSizeInt (UInt8, Int16 etc.) and made VIGRA compile on
           64-bit compilers. Thanks to Hans Ekkehard Plesser
           <a href="mailto:hans.ekkehard.plesser@umb.no">hans.ekkehard.plesser@umb.no</a>)
           for bug reports and other help. Added corresponding typedefs UInt8Image,
           Int16RGBImage etc.

      <li> Added NumericTraits::isSigned. Thanks to Pablo D'Angelo
           <a href="mailto:pablo.dangelo@web.de">pablo.dangelo@web.de</a>)
           for a patch.

      <li> Added watersheds().

      <li> Added \ref cross() (cross product).

      <li> Added \ref cannyEdgeImageWithThinning().

      <li> Added the possibility to choose between 4- and
           8-neighborhood in \ref localMinima() and \ref localMaxima().

      <li> Added \ref vigra::FixedPoint.

      <li> Added \ref SquareRootTraits and sqrti().

      <li> Added \ref vigra::RestrictedNeighborhoodCirculator.

      <li> Extended \ref vigra::SplineImageView to support access outside the image
           border according to reflective boundary conditions. Added partial
           specializations for orders 0 and 1 to speed up computations.

      <li> Extended \ref vigra::RGBValue to have arbitrarily ordered color channels
           (e.g. BGR). Thanks to Paul Furgale
           (<a href="mailto:umfurga1@cc.umanitoba.ca">umfurga1@cc.umanitoba.ca</a>) for the
           suggestion and a first implementation.

      <li> Bug fixes in the code and documentation. Thanks to Holger Friedrich
           (<a href="mailto:holger.friedrich@vsi.cs.uni-frankfurt.de">holger.friedrich@vsi.cs.uni-frankfurt.de</a>)
           for patches.
</ul>

<b> Changes from Version 1.3.2 to 1.3.3</b>

<ul>
      <li> Added \ref NormTraits, norm(), squaredNorm().

      <li> Added \ref gradientEnergyTensor()

      <li> Added the test suite to the distribution
          (see <a href="Installation.html">installation</a> section)

      <li> Bug fixes in the code and documentation.
</ul>

<b> Changes from Version 1.3.1 to 1.3.2</b>

<ul>
      <li> Added \ref vigra::linalg::Matrix "Matrix class".

      <li> Added \ref LinearAlgebraFunctions "Matrix algebra,
           solution of linear systems, eigenvalue computation".

      <li> Bug fixes in the code and documentation.
</ul>

<b> Changes from Version 1.3.0 to 1.3.1</b>

<ul>
      <li> Fixed syntax for dependent types in templates to make VIGRA
           compile with g++ 3.4 (which is very strict in enforcing
           dependent type rules).

      <li> Added \ref vigra::FunctorTraits.

      <li> Added \ref vigra::ReduceFunctor.

      <li> Added reduce and expand modes to the
           \link MultiPointoperators multi-dimensional point operators\endlink.

      <li> Bug fixes in the code and documentation.
</ul>

<b> Changes from Version 1.2.0 to 1.3.0</b>

<ul>
      <li> Added algorithms for multi-dimensional arrays: see
           \ref MultiPointoperators and \ref ConvolutionFilters
           and the \link vigra::MultiArrayNavigator navigator utility\endlink.

      <li> Extended \ref convolveImage() (non-separable convolution)
           to support all \link BorderTreatmentMode border treatment modes\endlink.

      <li> Added \ref vigra::Rational

      <li> Added \ref vigra::Polynomial and \ref polynomialRoots().

      <li> Added more \link MathFunctions mathematical functions and functors\endlink.

      <li> Added \ref vigra::SplineImageView.

      <li> Added \link TensorImaging tensor image processing and analysis\endlink

      <li> Added 2nd order \ref recursiveFilterX() and \ref recursiveFilterY()

      <li> Added \ref ResamplingConvolutionFilters and reimplemented
           \ref resizeImageSplineInterpolation() in terms of them.

      <li> Added \link MultiArrayToImage multiarray to image wrappers\endlink.

      <li> Added \link GeometricTransformations image mirroring and rotation\endlink.

      <li> Added \link FourierTransform fftw3.hxx to support FFTW version 3\endlink
           (unfortunately, this is incompatible to FFTW 2, which is still supported in
           <tt>fftw.hxx</tt> but should no longer be used within VIGRA).

      <li> Added \ref vigra::ArrayVector as a <tt>std::vector</tt> alternative
           whose memory is guaranteed to be one contiguous piece and whose
           iterator is guaranteed to be a <tt>value_type *</tt>.

      <li> Added an <tt>allocator</tt> template parameters to all classes
           that allocate dynamic memory.

      <li> Bug fixes in the code and documentation.
</ul>

<b> Changes from Version 1.1.6 to 1.2.0</b>

<ul>
      <li> Complete redesign of the image import/export library.

      <li> Added support for Microsoft Visual C++ 7.1 (.net 2003).
           This is the first Microsoft compiler that compiles VIGRA without
           special configurations and work-arounds. Work-arounds for older
           MS compilers will probably no longer be maintained.

      <li> Added support for PNG image format.

      <li> Added cygwin support to the build system.

      <li> Added \link PixelNeighborhood pixel neighborhood utilities \endlink
           and \ref vigra::NeighborhoodCirculator.

      <li> Added \ref vigra::CrackContourCirculator

      <li> Added \ref recursiveFilterX() and \ref recursiveFilterY() that
           support negative filter coefficients and all
           \link BorderTreatmentMode BorderTreatmenModes \endlink

      <li> Changed \ref gaussianSmoothing() to use BORDER_TREATMENT_REFLECT

      <li> Added \ref simpleSharpening() and \ref gaussianSharpening()

      <li> Added \ref vigra::Size2D, \ref vigra::Point2D, \ref vigra::Rect2D

      <li> Added \ref vigra::BasicImageView

      <li> Split "utilities.hxx" into "diff2d.hxx",
          "interpolating_accessor.hxx", "iteratortags.hxx", "mathutil.hxx",
          "metaprogramming.hxx", "tuple.hxx". "utilities.hxx" now includes
          these other files.

      <li> Added multi-dimensional arrays and \ref VolumeImpex

      <li> Redesigned \ref vigra::TinyVector, added \ref vigra::TinyVectorView
</ul>

<b> Changes from Version 1.1.5 to 1.1.6</b>

<ul>
      <li> Restored VIGRA compatibility with Microsoft Visual C++ 6.0
           (in addition to C++.net)
</ul>

<b> Changes from Version 1.1.4 to 1.1.5</b>

<ul>
      <li> Added \ref vigra::ImageArray.

      <li> Added more corner detectors (see \ref CornerDetection).

      <li> Added local symmetry detector (see \ref SymmetryDetection).

      <li> Added Gabor filter code (see \ref GaborFilter).

      <li> Extended \link FunctorExpressions functor expression library \endlink.

      <li> Added \ref initImageWithFunctor().

      <li> Improved Gaussian derivative filters (higher accuracy, correct sign,
           see \ref vigra#Kernel1D#initGaussianDerivative()).

      <li> Ported VIGRA to Microsoft VisualC++.net (however, this compiler
           still doesn't support all VIGRA features, because it still
           doesn't implement partial template specialization and
           partial function ordering).

      <li> Finished the new build system.

      <li> Improved the documentation.
</ul>

<b> Changes from Version 1.1.3 to 1.1.4</b>

<ul>
      <li> Added \ref FourierTransform "Fourier transform" support,
           and \ref vigra::FFTWComplex "FFTWComplex" complex number type.

      <li> Added convolution convenience functions (see \ref ConvolutionFilters).

      <li> Added \ref vigra::IteratorAdaptor template for quick and
           easy generation of iterator adaptors.

      <li> Used  \ref vigra::IteratorAdaptor to implement improved
           row and column iterators for images.

      <li> Added rowIterator() and columnIterator() functions
           returning optimized iterator adapters to all 2D iterators
           (e.g. vigra::ImageIterator). Changed algorithms to make use
           of these new members.

      <li> Added rounding and clipping to accessor functions when
           floating point values are converted to intergral numbers.

      <li> Added STL-compatible typedefs to all functors, iterators and
           vigra::BasicImage.

      <li> Removed ConstRowIterator and ConstColumnsIterator. Thanks
           to the new typedefs, RowIterator and ColumnIterator are
           automatically const when the underlying iterator was const. Thus,
           separate const iterators are not necessary.

      <li> Major performance tuning. Many algorithms now actually perform
           as fast as their inflexible C counterparts. Thanks to
           <a href="mailto:viola@merl.com">Paul Viola</a> for doing benchmarks.
</ul>

<b> Changes from Version 1.1.2 to 1.1.3</b>

<ul>
      <li> Switched from obsolete
           <a href="http://www.zib.de/Visual/software/doc++/index.html">doc++</a>
           documentation generator to
           <a href="http://www.doxygen.org">doxygen</a>.

      <li> Improved documentation.

      <li> Minor changes to the code to quiet compiler warnings if compiling with
           "<TT>g++ -Wall -pedantic</TT>".

      <li> Dropped support for rint() as this was not portable enough.

      <li> In error.hxx: replaced snprintf() with sprintf() for portability.

      <li> Renamed CellGridImage into CrackEdgeImage in \ref EdgeDetection.

      <li> Added \ref vigra::TinyVector and made vigra::RGBValue derive from it.

      <li> Added typedefs for TinyVector images.

      <li> Added \ref ColorConversions.

      <li> Added \ref vigra::VectorComponentAccessor.

      <li> Extended \ref vigra::FindMinMax to work with RGB images.

      <li> Minor improvements and bug fixes.
</ul>

<b> Changes from Version 1.1.1 to 1.1.2</b>

<ul>
      <li> Made VIGRA compile under MS Visual C++ 6.0.

      <li> Added \ref vigra::BrightnessContrastFunctor.

      <li> Added \ref gradientBasedTransform() and related
            \ref vigra::MagnitudeFunctor and \ref vigra::RGBGradientMagnitudeFunctor.

      <li> Added \ref nonlinearDiffusion().

      <li> Added more smoothing methods to <a href="ExampleList.html">smooth</a> example.

      <li> Added <a href="ExampleList.html">resize</a> example.

      <li> Minor corrections and bug fixes.
</ul>

<b> Changes from Version 1.1.0 to 1.1.1</b>

<ul>
      <li> Fixed bug with PNM import code.

      <li> added Canny edge detection algorithm (code adapted from
      C implementation by <a href="mailto:utcke@informatik.uni-hamburg.de">Sven Utcke</a>)
</ul>

<b> Changes from Version 1.0 to 1.1.0</b>

<ul>
      <li> Put everything in namespace "vigra".

      <li> Renamed <br>
            VigraStdException => StdException.<br>
            vigraImpexListFormats() => impexListFormats()


      <li> Added expression templates for \ref FunctorExpressions "automated functor creation".

      <li> Added support for input/output of the PNM image file format
       (contributed by
        <a href="mailto:mamchisl@ucdavis.edu">Mikhail Amchislavsky</a>).

      <li> Improved support for the \ref TIFFImpex "TIFF image format".
            VIGRA can now read and create TIFF with various pixel types
            (unsigned byte, short and long int, float, double).

      <li> Renamed Dist2D into \ref vigra::Diff2D, since it represents a difference vector
            rather than a distance. Extended Diff2D so that it can also act as a
            \ref vigra::CoordinateIterator. Note that this
            required renaming <TT>Dist2D::width</TT> and <TT>Dist2D::height</TT> into <TT>Diff2D::x</TT>
            and <TT>Diff2D::y</TT> respectively.

      <li> Changed the documentation layout.

      <li> Improved \ref labelImage() according to ideas of Prof.
            Vladimir Kovalevsky.

      <li> Several minor changes and bug fixes.
</ul>

*/
