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