NEWS
mmand 1.6.3 (2023-02-07)
- The package now avoids using std::iterator, which is deprecated in C++17.
mmand 1.6.2 (2022-08-10)
- Too-eager updating of data in-place could lead to errors in some elements of
a multidimensional distance transform. This has been corrected. (Reported by
Fabio Boschetti.)
mmand 1.6.1 (2020-03-03)
- display() tests are now run from the R temporary directory, to avoid
cluttering up the package directory.
- Distance transform tests are now skipped on Solaris, due to irreproducible
failures on CRAN.
mmand 1.6.0 (2020-02-24)
- A separable distance transform is now available through the new
distanceTransform() function. This maps the distances from each array element
to the nearest boundary between foreground and background, and can be useful
for estimating the width of image features. (Hat-tip to Chris Rorden and
Philip Rideout.)
- It is now possible to suppress the creation of a new device by display(), by
setting the "mmand.display.newDevice" option to FALSE.
- Tests have been migrated from the "testthat" framework to "tinytest", and
coverage has been improved.
mmand 1.5.4 (2019-03-17)
- The range attribute is now properly updated when an image is binarised within
the threshold() function. (Reported by @GhostValk, issue #5.)
- Compile-time tweaks to meet updated CRAN requirements.
mmand 1.5.3 (2017-09-14)
- A configure script is now used to check for OpenMP support on non-Windows
platforms. This can be helpful in certain build environments on macOS.
mmand 1.5.2 (2017-08-22)
- Resampling with the box kernel should no longer produce an erroneous
"chequered" pattern. (Reported by Steffen Ehrmann, issue #3.)
mmand 1.5.1 (2017-07-08)
- The connected components algorithm will no longer erroneously wrap around
image boundaries. (Reported by Steffen Ehrmann, issue #2.)
mmand 1.5.0 (2017-05-11)
- The five-lobe Lanczos windowed sinc kernel function is now available through
the lanczosKernel() function, and may be used for resampling.
- The new sketch() function can be used to show a compact ASCII representation
of a 2D greyscale image or other matrix.
- Experimental support for image skeletonisation has been added through the
skeletonise() function and its alias, skeletonize(). Three different
algorithms are available, with different limitations. Please see the README
or ?skeletonise for details.
- Logical data is now accepted by package functions, in addition to integer
and double-valued data.
- The display() function now handles 2D objects of class "array", and respects
image attributes set by the "loder" package.
- The morph() function gains a renormalise option, and some new operators.
- Infinite, NaN and NA values are now ignored by threshold() when using the
k-means method (since kmeans() itself does not handle them gracefully).
Elements with any of these values are replaced with NAs in the result.
- The binary() function now returns the unique value in an attribute, if
applicable.
- The binarise() function may now also be spelled binarize().
- A new binary test image, of an upper-case B, has been added.
- The "loder" package is now used instead of "png" for reading PNG images.
- The package no longer depends on "reportr".
mmand 1.4.1 (2016-09-06)
- A buffer overflow picked up by valgrind has been corrected.
mmand 1.4.0 (2016-09-05)
- 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.
mmand 1.3.0 (2016-01-05)
- 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.
mmand 1.2.0 (2015-08-06)
- 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.
mmand 1.1.0 (2014-09-24)
- 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.
mmand 1.0.0 (2014-06-18)
- 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.
mmand 0.1.2 (2012-08-14)
- 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.
mmand 0.1.1 (2012-05-01)
- A mistake in internal memory management which could lead to a segmentation
fault has been corrected.
mmand 0.1.0 (2012-04-27)