[ VIGRA Homepage | Function Index | Class Index | Namespaces | File List | Main Page ]

Credits and Changelog

Credits

  • Ullrich Köthe originated and wrote the library.

  • Mikhail Amchislavsky (mamchisl@ucdavis.edu) contributed code to read and write PNM files.

  • Hans Meine (hans_meine@gmx.net) 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.

  • Gunnar Kedenburg (gunnar@haquebright.de) completely rewrote the image import/export library and implemented the initial version of the vigra::MultiArray functionality.

  • Yevgen Reznichenko (rezniche@kogs.informatik.uni-hamburg.de) added a number of image processing algorithms.

  • Christian Dennis Rahn (rahn@informatik.uni-hamburg.de) implemented initial versions of multi-dimensional convolution filters.

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

  • Pablo d'Angelo, Douglas Wilkins, Lukas Jirkovsky and other members of the Hugin team contributed various extensions of the impex library (UINT16/UINT32 support, ICC profile support, HDR and OpenEXR file types).

  • Rahul Nair implemented the vigra::RandomForest classifier and VIGRA Matlab bindings.

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

  • Nathan Huesken and Christoph Sommer helped a lot in developing vigranumpy, the VIGRA Python bindings.

  • Jens-Malte Gottfried contributed to the cmake-based build system.

  • Joachim Schleicher implemented a reader for the SIF file format.

  • Oliver Gathmann and Michael Held implemented support for the multi-page TIFF format.

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

  • Frank Lenzen contributed his implementations of total variation filters.

  • Patrick Fahner helped writing the tutorial.

  • Stefan Schmidt made major contributions to vigra::GridGraph.

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

  • Thorsten Beier implemented many graph-based image analysis algorithms and parallel versions of important image processing functions.

  • Benjamin Seppke contributed various image registration algorithms.

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

  • Philip Schill implemented version 3 of the Random Forest.

  • David Stöckel contributed the 3D convex hull functionality.

  • Numerous people reported and fixed bugs and made suggestions.

Many thanks to all!

Changes from Version 1.11.0 to 1.11.1

  • Added 3D convex hull computation and features (David Stöckel).

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

  • Improved hierarchical clustering (Cpnstantin Pape).

  • Minor improvements and bug fixes in the code and documentation.

Changes from Version 1.10.0 to 1.11.0

  • Ported vigranumpy to Python 3.5.

  • Added Chunked arrays to store data larger than RAM as a collection of rectangular blocks.

  • Added vigra::ThreadPool and parallel_foreach() for portable algorithm parallelization based on std::thread.

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

  • Added graph-based image analysis, e.g. agglomerative clustering

  • Included the callback mechanism described in "Impossibly Fast C++ Delegates" by Sergey Ryazanov (needed for agglomerative clustering).

  • Added many image registration functions.

  • Extended the collection of multi-dimensional distance transform algorithms by vectorial DT, boundary DT, and eccentricity transform.

  • Added skeletonizeImage(), nonLocalMean(), multi-dimensional integral images.

  • Added new 2D shape features based on skeletonization and the convex hull.

  • Additional arithmetic and algebraic functions for vigra::TinyVector.

  • Added vigra::CountingIterator.

  • Minor improvements and bug fixes in the code and documentation.

Changes from Version 1.9.0 to 1.10.0

  • VIGRA got a Tutorial !

  • Significant simplification of the API: MultiArrayView arguments can now be passed to functions directly:

    MultiArray<float> src(Shape2(200,100)), dest(src.shape());
    gaussianSmoothing(src, dest, 2.0);
    void gaussianSmoothing(...)
    Perform isotropic Gaussian convolution.

    The old syntax with Argument Object Factories (srcImageRange(), srcMultiArray() and relatives) remains valid, but is only required when the arguments are old-style BasicImages.

  • Made StridedArrayTag the default for vigra::MultiArrayView .

  • Added an efficient multi-dimensional vigra::GridGraph class which support both the LEMON and boost::graph APIs.

  • Generalized various algorithms to arbitrary dimensions (gaussianGradientMultiArray(), hessianOfGaussianMultiArray(), gaussianDivergenceMultiArray(), localMinima(), localMaxima(), labelMultiArray(), watershedsMultiArray()).

  • Added slicSuperpixels() for arbitrary dimensions.

  • Added automatic differentiation (see vigra::autodiff::DualVector).

  • Added nonlinearLeastSquares() using the Levenberg-Marquardt algorithm and automatic differentiation.

  • Added a function setCoordinateOffset() to the feature accumulator classes to enable block-wise computation of coordinate-based features.

  • Added vigra::MultiCoordinateIterator to enumerate the grid coordinates of a multi-dimensional array.

  • Fixed thread-safety of RandomForest::learn() (random seeding) and RandomForest::predictLebels().

  • Improved HDF5 I/O for strided MultiArrayViews and HDF5 on-the-fly compression.

  • Added support for multi-page TIFF to importVolume() and exportVolume(). Added support for Andor SIF to importVolume().

  • Added VigranumpyConfig.cmake to simplify cmake-based compilation of custom vigranumpy modules.

  • Minor improvements and bug fixes in the code and documentation.

Changes from Version 1.8.0 to 1.9.0

Changes from Version 1.7.1 to 1.8.0

Changes from Version 1.7.0 to 1.7.1

  • Fixed the build process for MacOS X.

  • Re-activated vigra-config (script to query VIGRA installation information) and added VigraConfig.cmake (query VIGRA installation information from within cmake).

  • Added CDash support (nightly builds and tests).

  • Added convexHull().

  • Added vigra::Box.

  • Added vigra::Sampler class to sample given data in various ways.

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

  • Added readSIF() (reader for the Andor SIF file format).

  • Added vigra::HDF5File for easier navigation in HDF5 files.

  • Added recursive approximation of the Gaussian filter (recursiveGaussianFilterX(), recursiveGaussianFilterY())

  • vigranumpy: added Gabor filtering.

  • Fixed multi-threading bugs at various places.

  • Minor improvements and bug fixes in the code and documentation.

Changes from Version 1.6.0 to 1.7.0

  • Incompatible changes:

    • Modified angle convention from counter-clockwise to clockwise (see e.g. vigra::Edgel). This fits better with the left-handed coordinate system we use.

    • symmetricEigensystem(): sort eigenvalues by decreasing value (was: decreasing abs value)

  • Implemented a new build system on the basis of cmake.

  • Added vigra::NumpyAnyArray and vigra::NumpyArray, improved vigra::MultiArrayView.

  • Added vigranumpy (VIGRA Python bindings).

  • Added Vigra Matlab.

  • Added support for HDF5 import/export of arrays (see Import/Export of Images and Arrays in HDF5 Format).

  • Added vigra::RandomForest classifier.

  • Added constrained optimization functions: nonnegativeLeastSquares(), quadraticProgramming(), leastAngleRegression() (LASSO and non-negative LASSO).

  • Added choleskySolve() and improved choleskyDecomposition() (in-place capability).

  • Added symmetric2x2Eigenvalues() and symmetric3x3Eigenvalues() for fast eigenvalue computation on small matrices.

  • Added meshGrid().

  • Added vigra::FixedPoint16.

  • Minor improvements and bug fixes in the code and documentation.

Changes from Version 1.5.0 to 1.6.0

  • Added functions for arrays of arbitrary dimensions:

  • Added functionality for 3D image analysis: labelVolume(), seededRegionGrowing3D(), watersheds3D(), Utilities to manage voxel neighborhoods

  • Added Random Number Generation

  • Added affineWarpImage() and and factory functions for affine transformation matrices

  • Added linear algebra functionality: choleskyDecomposition(), singularValueDecomposition(), determinant(), logDeterminant(), leastSquares(), weightedLeastSquares(), ridgeRegression()

  • Extended linearSolve(), qrDecomposition(), and inverse() to handle rectangular matrices (complete reimplementation of these functions).

  • Added matrix functionality: joinVertically(), joinHorizontally(), columnStatistics(), rowStatistics(), prepareColumns(), prepareRows()

  • Added/fixed vigra::MultiArray and vigra::linalg::Matrix computed assignments

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

  • Added typedef vigra::MultiArrayIndex to fix signed/unsigned mismatch problems

  • Added vigra::ImagePyramid

  • Minor improvements in Image Import/Export Facilities

  • Added sRGB to Color Space Conversions

  • Added weighted operator()s to FindAverage[AndVariance] functors.

  • Added log2i() (integer base-2 logarithm), floorPower2(), and ceilPower2()

  • Added argMin(), argMax(), argMinIf(), argMaxIf()

  • Changed default border treatment of Gaussian filters and derivatives to BORDER_TREATMENT_REFLECT

  • Promoted documentation to Doxygen 1.5.6

  • Minor improvements and bug fixes in the code and documentation.

Changes from Version 1.4.0 to 1.5.0

  • Added Noise Normalization

  • Added Camera MTF Estimation

  • Added gaussianGradientMagnitude()

  • Added fourierTransform() and fourierTransformInverse()

  • Added cannyEdgelList3x3()

  • Added srcImage(), srcImageRange() etc. with ROI (see Argument Object Factories)

  • Improved the Image Import/Export Facilities (thanks to Pablo d'Angelo, Douglas Wilkins and others):

    • Added UINT16 and UINT32 pixel types.
    • Added support for obtaining extra bands beyond RGB.
    • Added support for a position field that indicates the start of this image relative to some global origin (PNG + TIFF).
    • Added support for x and y resolution fields.
    • Added support for ICC profiles (TIFF, PNG, and JPEG).
    • Added support for deflate compression (PNG + TIFF).
    • Added support for .hdr file format (high dynamic range).

  • Improved support of 64-bit compilers.

  • Added mathematical functions: elliptic integrals (ellipticIntegralF(), ellipticIntegralE()), chi-squared distribution (chi2(), chi2CDF(), noncentralChi2(), noncentralChi2CDF())

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

  • Switched to relative paths in the MSVC project files. Compile vigraimpex into a DLL.

  • Bug fixes in the code and documentation.

Changes from Version 1.3.3 to 1.4.0

Changes from Version 1.3.2 to 1.3.3

Changes from Version 1.3.1 to 1.3.2

  • Added Matrix class.

  • Added Matrix algebra, solution of linear systems, eigenvalue computation".

  • Bug fixes in the code and documentation.

Changes from Version 1.3.0 to 1.3.1

Changes from Version 1.2.0 to 1.3.0

Changes from Version 1.1.6 to 1.2.0

Changes from Version 1.1.5 to 1.1.6

  • Restored VIGRA compatibility with Microsoft Visual C++ 6.0 (in addition to C++.net)

Changes from Version 1.1.4 to 1.1.5

Changes from Version 1.1.3 to 1.1.4

  • Added Fourier transform support, and FFTWComplex complex number type.

  • Added convolution convenience functions (see Convolution Filters).

  • Added vigra::IteratorAdaptor template for quick and easy generation of iterator adaptors.

  • Used vigra::IteratorAdaptor to implement improved row and column iterators for images.

  • 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.

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

  • Added STL-compatible typedefs to all functors, iterators and vigra::BasicImage.

  • 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.

  • Major performance tuning. Many algorithms now actually perform as fast as their inflexible C counterparts. Thanks to Paul Viola for doing benchmarks.

Changes from Version 1.1.2 to 1.1.3

Changes from Version 1.1.1 to 1.1.2

Changes from Version 1.1.0 to 1.1.1

  • Fixed bug with PNM import code.

  • added Canny edge detection algorithm (code adapted from C implementation by Sven Utcke)

Changes from Version 1.0 to 1.1.0

  • Put everything in namespace "vigra".

  • Renamed
    VigraStdException => StdException.
    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.
    

© Ullrich Köthe (ullrich.koethe@iwr.uni-heidelberg.de)
Heidelberg Collaboratory for Image Processing, University of Heidelberg, Germany

html generated using doxygen and Python
vigra 1.11.1