[ 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 much 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 much of the Convolution filters for multi-dimensional arrays..

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

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

- Numerous people reported bugs and made suggestions.

Many thanks to all!

Changes from Version 1.5.0 to 1.6.0

- Added functions for arrays of arbitrary dimensions:
  - Euclidean distance transform
  - separable morphology
  - resizeMultiArraySplineInterpolation()

- 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 disrectory).

- 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

- Switched to the MIT X11 License.

- Introduced Fixed Size Integer Types (UInt8, Int16 etc.) and made VIGRA compile on 64-bit compilers. Thanks to Hans Ekkehard Plesser hans.ekkehard.plesser@umb.no) for bug reports and other help. Added corresponding typedefs UInt8Image, Int16RGBImage etc.

- Added NumericTraits::isSigned. Thanks to Pablo D'Angelo pablo.dangelo@web.de) for a patch.

- Added watersheds().

- Added cross() (cross product).

- Added cannyEdgeImageWithThinning().

- Added the possibility to choose between 4- and 8-neighborhood in localMinima() and localMaxima().

- Added vigra::FixedPoint.

- Added template<> struct SquareRootTraits<ArithmeticType> and sqrti().

- Added vigra::RestrictedNeighborhoodCirculator.

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

- Extended vigra::RGBValue to have arbitrarily ordered color channels (e.g. BGR). Thanks to Paul Furgale (umfurga1@cc.umanitoba.ca) for the suggestion and a first implementation.

- Bug fixes in the code and documentation. Thanks to Holger Friedrich (holger.friedrich@vsi.cs.uni-frankfurt.de) for patches.

Changes from Version 1.3.2 to 1.3.3

- Added template<> struct NormTraits<ArithmeticType>, norm(), squaredNorm().

- Added gradientEnergyTensor()

- Added the test suite to the distribution (see installation section)

- Bug fixes in the code and documentation.

Changes from Version 1.3.1 to 1.3.2

- Added Matrix class.

- Added Matrix algrebra, solution of linear systems, eigenvalue computation".

- Bug fixes in the code and documentation.

Changes from Version 1.3.0 to 1.3.1

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

- Added vigra::FunctorTraits.

- Added vigra::ReduceFunctor.

- Added reduce and expand modes to the multi-dimensional point operators.

- Bug fixes in the code and documentation.

Changes from Version 1.2.0 to 1.3.0

- Added algorithms for Multi-Dimensional Arrays and Iterators : Point operators for multi-dimensional arrays. and Convolution filters for multi-dimensional arrays. and the navigator utility.

- Extended convolveImage() (non-separable convolution) to support all border treatment modes.

- Added vigra::Rational

- Added vigra::Polynomial and polynomialRoots().

- Added more mathematical functions and functors.

- Added vigra::SplineImageView.

- Added tensor image processing and analysis

- Added 2nd order recursiveFilterX() and recursiveFilterY()

- Added Resampling Convolution Filters and reimplemented resizeImageSplineInterpolation() in terms of them.

- Added multiarray to image wrappers.

- Added image mirroring and rotation.

- Added fftw3.hxx to support FFTW version 3 (unfortunately, this is incompatible to FFTW 2, which is still supported in `fftw.hxx` but should no longer be used within VIGRA).

- Added vigra::ArrayVector as a `std::vector` alternative whose memory is guaranteed to be one contiguous piece and whose iterator is guaranteed to be a `value_type *`.

- Added an `allocator` template parameters to all classes that allocate dynamic memory.

- Bug fixes in the code and documentation.

Changes from Version 1.1.6 to 1.2.0

- Complete redesign of the image import/export library.

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

- Added support for PNG image format.

- Added cygwin support to the build system.

- Added pixel neighborhood utilities and vigra::NeighborhoodCirculator.

- Added vigra::CrackContourCirculator

- Added recursiveFilterX() and recursiveFilterY() that support negative filter coefficients and all BorderTreatmenModes

- Changed gaussianSmoothing() to use BORDER_TREATMENT_REFLECT

- Added simpleSharpening() and gaussianSharpening()

- Added vigra::Size2D, vigra::Point2D, vigra::Rect2D

- Added vigra::BasicImageView

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

- Added Multi-Dimensional Arrays and Iterators and Import/export of volume data.

- Redesigned vigra::TinyVector, added vigra::TinyVectorView

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

- Added vigra::ImageArray.

- Added more corner detectors (see Corner Detection).

- Added local symmetry detector (see Symmetry Detection).

- Added Gabor filter code (see Gabor Filter).

- Extended functor expression library .

- Added initImageWithFunctor().

- Improved Gaussian derivative filters (higher accuracy, correct sign, see vigra::Kernel1D::initGaussianDerivative()).

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

- Finished the new build system.

- Improved the documentation.

Changes from Version 1.1.3 to 1.1.4

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

- Added convolution convenience functions (see Common 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

- Switched from obsolete doc++ documentation generator to doxygen.

- Improved documentation.

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

- Dropped support for rint() as this was not portable enough.

- In error.hxx: replaced snprintf() with sprintf() for portability.

- Renamed CellGridImage into CrackEdgeImage in Edge Detection.

- Added vigra::TinyVector and made vigra::RGBValue derive from it.

- Added typedefs for TinyVector images.

- Added Color Space Conversions.

- Added vigra::VectorComponentAccessor.

- Extended vigra::FindMinMax to work with RGB images.

- Minor improvements and bug fixes.

Changes from Version 1.1.1 to 1.1.2

- Made VIGRA compile under MS Visual C++ 6.0.

- Added vigra::BrightnessContrastFunctor.

- Added gradientBasedTransform() and related vigra::MagnitudeFunctor and vigra::RGBGradientMagnitudeFunctor.

- Added nonlinearDiffusion().

- Added more smoothing methods to smooth example.

- Added resize example.

- Minor corrections and bug fixes.

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()

- Added expression templates for automated functor creation.

- Added support for input/output of the PNM image file format (contributed by Mikhail Amchislavsky).

- Improved support for the TIFF image format. VIGRA can now read and create TIFF with various pixel types (unsigned byte, short and long int, float, double).

- Renamed Dist2D into vigra::Diff2D, since it represents a difference vector rather than a distance. Extended Diff2D so that it can also act as a vigra::CoordinateIterator. Note that this required renaming `Dist2D::width` and `Dist2D::height` into `Diff2D::x` and `Diff2D::y` respectively.

- Changed the documentation layout.

- Improved labelImage() according to ideas of Prof. Vladimir Kovalevsky.

- 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.6.0 (13 Aug 2008)