fixed compilation errors on Solaris
'abind()' method for combining Image arrays
'floodFill()' has been vectorized over its arguments 'pt' and 'col' allowing to specify multiple start points and different fill colors
'display()' "browser" mode has been updated to use the htmlwidgets infrastructure
'filter2()' does not require filter dimensions to be odd numbers when filter size equals image size
fixed issues with 'normalize()' (https://github.com/aoles/EBImage/issues/25)
various improvements to the 'clahe()' function
new arguments to 'display()' enabling control over layout and appearance of image grid in "raster" mode: 'nx' (number of frames in a row), 'drawGrid' (draw lines between frames), 'spacing' (separation between frames) and 'margin' (outer margin around the image)
new function 'clahe()' for improving local contrast in images by performing Contrast Limited Adaptive Histogram Equalization
re-introduced 'output.origin' argument to 'rotate()'
object masks returned by 'bwlabel()', 'propagate()', and 'watershed()', as well as the result of thresh() are now of storage mode integer rather than double
binary kernels constructed by 'makeBrush()' have storage mode integer (previously double)
'rmObjects()' and 'reenumerate()' now require input of storage mode integer
'untile()' and morphology operations preserve data storage mode
modified boundary behaviour of 'thresh()' to reduce artifacts at image borders and to match the output of a corresponding call to 'filter2()'
added the ability for different boundary values for different frames in 'filter2()' linear mode (https://github.com/aoles/EBImage/pull/11)
removed defunct '...GreyScale' family morphological functions
significantly improved performance of 'transpose()', 'getFrame()' and 'getFrames()' by using C implementation
numerous small improvements to execution time and memory consumption across the whole package, mostly by avoiding storage mode conversion and object duplication in C
proper origin handling in 'resize()'
import 'methods::slot' (fixes https://github.com/rstudio/blogdown/issues/17)
fixed a bug in 'filter2()' (https://github.com/aoles/EBImage/issues/8)
proper check of filter size in 'thresh()' and rectified behavior when filter dimensions are equal to image dimensions
correct computation of 'selfComplementaryTopHat()'
address PROTECT errors reported by Tomas Kalibera's 'maacheck' tool (https://stat.ethz.ch/pipermail/bioc-devel/2017-April/010771.html)
fixed class retention in 'colorLabels()', 'colormap()', 'rgbImage()', 'stackObjects()', 'tile() and untile()'
made defunct deprecated '...GreyScale' family morphological functions; use common functions 'dilate', 'erode', 'opening', 'closing', 'whiteTopHat', 'blackTopHat' and 'selfComplementaryTopHat' for filtering both binary and grayscale images
removed defunct 'getNumberOfFrames' function
'readImage': use 'vapply' instead of 'abind' to reduce memory footprint
'boundary' argument to 'filter2()' for specifying behaviour at image boundaries
the 'hist' method now returns a (list of) "histogram"" object(s) (http://stackoverflow.com/q/33831331/2792099 and http://stackoverflow.com/a/35838861/2792099)
'colormap()' function for mapping a greyscale image to color using a color palette
'as.raster.Image': increased performance by not transposing the image twice and improved support for Color images with less than 3 channels
fixed the 'log' method for Image objects (https://support.bioconductor.org/p/74236/)
'affine': fixed handling of images containing an alpha channel (https://support.bioconductor.org/p/74876/)
retain NA's in morphological operations: 'dilate', 'erode', 'opening', 'closing', 'whiteTopHat', 'blackTopHat', 'selfComplementaryTopHat' (https://support.bioconductor.org/p/77295/)
fix to potential unsafe code in C function 'affine()' (thanks Tomas Kalibera)
medianFilter.c: use proper rounding rather than truncation during float to int coercion
'antialias' argument to the function 'affine' allowing to switch off bilinear filtering around image borders
deprecated '...GreyScale' morphological functions; use common functions 'dilate', 'erode', 'opening', 'closing', 'whiteTopHat', 'blackTopHat' and 'selfComplementaryTopHat' for filtering both binary and grayscale images
'resize' doesn't perform bilinear filtering at image borders anymore in order to prevent the blending of image edges with the background when the image is upscaled; to switch on bilinear sampling at image borders use the function argument 'antialias = TRUE'
'floodFill' and 'fillHull' preserve storage mode
all morphological operations use the efficient Urbach-Wilkinson algorithm (up to 3x faster compared to the previous implementation)
'rotate': perform lossless 90/180/270 degree rotations by disabling bilinear filtering
reimplemented the Urbach-Wilkinson algorithm used to perform grayscale morphological transformations
improved pixel-level accuracy of spatial linear transformations: 'affine', 'resize', 'rotate' and 'translate'
'display(..., method = "raster")': displaying of single-channel color images
'drawCircle': corrected x-y offset
'equalize': in case of a single-valued histogram issue a warning and return its argument
'hist': accept images with 'colorMode = Color' containing less than three color channels
'image': corrected handling of image frames
'medianFilter': filter size check
'normalize': normalization of a flat image when the argument 'separate' is set to 'FALSE'
'reenumerate': corrected handling of images without background
'stackObjects': corrected handling of blank images without any objects
'tile': reset dimnames
'rgbImage' and 'combine' use dimnames if present
'makeBrush(..., shape = "line")': the line is drawn symmetrically around the center of the kernel, and the argument 'size' sets the maximum x-y dimension of kernel rather than the line length
'drawCircle' and 'stackObjects': corrected handling of color channels
'ocontour': doubled the size of the temporary buffer to accommodate longer contours and fixed indexing issue
'paintObjects' allows control over behavior at image edges
'getFrames' function returning a list of Image objects
default 'display' method can be set by options("EBImage.display")
'short' argument to the Image 'print' method
'equalize' function performing histogram equalization
'translate' moves the image in the opposite direction as before
'rotate' returns an image centered in a recalculated bounding box
'as.Image' coerces subclasses to Image objects
'getFrame' returns individual channels of a Color image as Grayscale frames
'display' method defaults to 'raster' unless used interactively
'combine' allows to combine images of the same color mode only
'filter2': calculate FFT using methods from the 'fftwtools' package
'as.nativeRaster': now implemented in C
'medianFilter': double to integer conversion moved to C code
'hist': fixed binning issues and improved performance
'medianFilter': fixed multi-channel image handling; preserve original object class
'as.nativeRaster': allow for an arbitrary number of color channels
'display': set missing color channels to blank
'paintObjects': the body of an object with ID=1 was not highlighted when option thick
was set
Clip images in 'as.nativeRaster'
New sample PNG images
'otsu' thresholding method (contributed by Philip A. Marais, University of Pretoria, South Africa)
Support for dimnames in Image objects
'bg.col' argument to 'affine' transformations
'reenumerate' argument to 'rmObjects'
'names' argument to 'readImage'
'as.array' method for Image objects
'as.nativeRaster' function
Performance improvements to 'Image', 'selectChannel', 'combine ' and 'reenumerate'
Use a more efficient 'nativeRaster' representation in 'displayRaster'
Cleaner output of the 'show-Image' method; print true object class name and dimorder (if set)
'readImage' sets Image dimnames to corresponding file names
'filter2' and 'affine' return object of the same class as input
Renamed 'getNumberOfFrames' to 'numberOfFrames'
Handling of dimensions of character arrays
Drawing of grid lines in 'displayRaster'
Passing of '...' arguments in 'readImage'
'toRGB' function for convenient grayscale to RGB conversion
'luminance' mode in 'channel' for luminance-preserving RGB to grayscale conversion
Performance improvements to: 'Image', 'is.Image', 'readImage', 'writeImage', 'show', 'normalize', 'getFrame', 'selectChannel', 'rgbImage', 'colorLabels', 'flip'/'flop'
Reduced memory footprint of 'readImage'
When called on an 'Image' object, 'as.Image' returns its argument rather than the Grayscale-coerced copy
'displayRaster' sets 'par$usr' coordinates to image pixel coordinates easing up plot annotation
'getFrame', 'getNumberOfFrames' and 'colorLabels' support multi-dimensional images
Proper handling of multi-dimensional character arrays by the 'Image' constructor
Fixed 'getFrame' and 'combine' in case of single-channel Color Images
Fixed color mode check in 'validImageObject'
Proper 'fg.col' and 'bg.col' color handling in 'tile'
Updates to documentation
New 'colorLabels' function for color-coding labels of object masks by a random permutation (Bernd Fisher)
Additional 'inputRange' argument to 'normalize' allowing for presetting a limited input intensity range
Additional 'thick' argument to 'paintObjects' controlling the thickness of boundary contours
'normalize' and 'combine' use the generics from BiocGenerics
Removed the 'along' argument from 'combine'
Re-introduced calculation of 's.radius.sd' (standard deviation of the mean radius) in cell features
XY dimensions equal 1 were dropped by 'getFrame'
'localCurvature' function for computing local curvature along a line (J. Barry)
The range of pixel coordinates displayed in the JavaScript viewer is now (1,1):(w,h) rather than (0,0):(w-1,h-1) and matches the indices of the corresponding Image array
'erode'/'dilate': fixed a bug introduced in the previous version (4.0.0)
'resize': new image width was calculated incorrectly when only height was provided (reported by B. Fischer)
'medianFilter': incorrect [0:1] <-> integer range conversion (thanks to K. Johnson)
'transpose' function for transposing an image by swapping its spatial dimensions
Grayscale functions for computing the self-complementary top-hat (I. Kats)
Median filter based on Perreault's constant time median filter (J. Barry)
Removed all dependencies towards GTK+ and ImageMagick
Replaced the former GTK+ based 'display' function by a new one displaying images using either a JavaScript image viewer, or R's built-in raster graphics
'readImage' and 'writeImage' now rely on 'jpeg', 'png' and 'tiff' packages and do not depend on ImageMagick any more
Added support for images containing an alpha channel; both grayscale and color images with an alpha channel are stored as an Image with 'colormode = Color'
Re-factored the functions, not using ImageMagick any longer: 'translate', 'affine', 'rotate', 'resize'
Deprecated: 'blur', 'equalize', 'drawtext', 'drawfont', 'getFeatures', 'hullFeatures', 'zernikeMoments', 'edgeProfile', 'edgeFeatures', 'haralickFeatures', 'haralickMatrix', 'moments', 'smoments', 'rmoments', 'cmoments', 'animate',
Improved 'getFrame': better performance by reassigning array dimension only when needed
Modified 'as.raster'
'inst/images/lena.gif' is now 'inst/images/lena.png'
Overhauled the testing procedure in 'tests/test.R'
Added 'NEWS.Rd'
'erode'/'dilate': incorrect range of loop indices caused memory reads from outside the kernel vector