Significant changes to the mmand package are laid out below for each release.

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

VERSION 1.4.0

- The C++ back-end for resample() has been rewritten to improve speed and fix
  implementation issues with cubic spline interpolation. This function (only)
  will now also be parallelised using OpenMP, if your compiler supports it.
- Dilation now works properly with asymmetric kernels. (Reported by
  Marcin Skowronek.)
- The package no longer depends on RcppEigen.

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

VERSION 1.3.0

- The package can now find connected components in images, representing
  contiguous subregions, using the new components() function. The LEMON network
  library is used to solve the associated graph problem.
- The Sobel-Feldman kernel and filter are now available through new functions.
  These can be used to obtain a finite-difference gradient.
- The new symmetric() function reports whether or not an array is symmetric.
- Gaussian smoothing in multiple dimensions has been made much faster by
  exploiting the separability of the kernel. Sigma values of zero may also be
  used in some dimensions. (Hat-tip to Tim Tierney.)
- Erosion and dilation did not work as documented when the kernel had a zero at
  its centre. This has been corrected. (Reported by Scott Flanagan.)
- Zero-sum kernels are now properly handled.

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

VERSION 1.2.0

- A function has been added for thresholding arrays, either using a literal
  threshold value, or implicitly using k-means clustering.
- The display() function now supports multichannel images (e.g., RGB, RGBA).
  Zero values are also now set to NA when adding to an existing image, to make
  those pixels transparent.

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

VERSION 1.1.0

- The README.md file has been expanded into a full tutorial for the package,
  complete with visual examples.
- Calls to the morph() function with merge="sum" previously failed to adjust
  final pixel values when the whole kernel was not used, notably at the edges
  of images. This led to values lower than expected. The bug has now been
  corrected.
- The test image has been replaced by a less traditional, but also less sexist,
  alternative.
- Package tests have been updated to make use of new functionality in version
  0.9 of the "testthat" package.

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

VERSION 1.0.0

- The back-end code for the package has been completely rewritten, using C++
  and Rcpp rather than C.
- The package can now perform image resampling, via resample(). This requires a
  different type of kernel but is conceptually related to the existing
  functions based on morph().
- The morph() function has been generalised to allow for various new
  operations. In the process, the concepts of "brush" and "eraser" kernels have
  been removed.
- 2D arrays (i.e. matrices or 2D images) can now be visualised using the new
  display() function.
- Functions for mean and median filtering have been added.
- There are additional functions for establishing whether an array is binary,
  and for obtaining information about the structure of a neighbourhood within
  an array.
- Kernels now have a plot() method.
- The classical image processing test image, "lena", has been added to the
  package.
- A suite of tests has been added.

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

VERSION 0.1.2

- Brush kernels which include NAs, notably diamond-shaped kernels, are now
  properly handled by the C code. The value of the output array was sometimes
  overwritten by that of the input array when it should not have been.
  
===============================================================================

VERSION 0.1.1

- A mistake in internal memory management which could lead to a segmentation
  fault has been corrected.

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

VERSION 0.1.0

- First public release.

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