Skip to content

Releases: scikit-image/scikit-image

v0.19.0

03 Dec 08:07
v0.19.0
Compare
Choose a tag to compare

Announcement: scikit-image 0.19.0

We're happy to announce scikit-image v0.19.0!

scikit-image is an image processing toolbox for SciPy that includes algorithms for segmentation, geometric transformations, color space manipulation, analysis, filtering, morphology, feature detection, and more.

For more information, examples, and documentation, please visit our website: https://scikit-image.org

A highlight of this release is the addition of the popular scale-invariant feature transform (SIFT) feature detector and descriptor. This release also
introduces a perceptual blur metric, new pixel graph algorithms, and most functions now operate in single-precision when single-precision inputs are provided. Many other bug fixes, enhancements and performance improvements are detailed below.

A significant change in this release is in the treatment of multichannel images. The existing multichannel argument to functions has been deprecated in favor of a new channel_axis argument. channel_axis can be used to specify which axis of an array contains channel information (with channel_axis=None indicating a grayscale image).

scikit-image now uses "lazy loading", which enables users to access the functions from all skimage submodules without the overhead of eagerly importing all submodules. As a concrete example, after calling "import skimage" a user can directly call a function such as skimage.transform.warp whereas previously it would have been required to first "import skimage.transform".

An exciting change on the development side is the introduction of support for Pythran as an alternative to Cython for generating compiled code. We plan to keep Cython support as well going forward, so developers are free to use either one as appropriate. For those curious about Pythran, a good overview was given in the SciPy 2021 presentation, "Building SciPy Kernels with Pythran" (https://www.youtube.com/watch?v=6a9D9WL6ZjQ).

This release now supports 3.7-3.10. Apple M1 architecture (arm64) support is new to this release. MacOS 12 wheels are provided for Python 3.8-3.10.

New Features

  • Added support for processing images with channels located along any array axis. This is in contrast to previous releases where channels were required to be the last axis of an image. See more info on the new channel_axis argument under the API section of the release notes.
  • A no-reference measure of perceptual blur was added (skimage.measure.blur_effect).
  • Non-local means (skimage.restoration.denoise_nl_means) now supports 3D multichannel, 4D and 4D multichannel data when fast_mode=True.
  • An n-dimensional Fourier-domain Butterworth filter (skimage.filters.butterworth) was added.
  • Color conversion functions now have a new channel_axis keyword argument that allows specification of which axis of an array corresponds to channels. For backwards compatibility, this parameter defaults to channel_axis=-1, indicating that channels are along the last axis.
  • Added a new keyword only parameter random_state to morphology.medial_axis and restoration.unsupervised_wiener.
  • Seeding random number generators will not give the same results as the underlying generator was updated to use numpy.random.Generator.
  • Added saturation parameter to skimage.color.label2rgb
  • Added normalized mutual information metric skimage.metrics.normalized_mutual_information
  • threshold_local now supports n-dimensional inputs and anisotropic block_size
  • New skimage.util.label_points function for assigning labels to points.
  • Added nD support to several geometric transform classes
  • Added skimage.metrics.hausdorff_pair to find points separated by the Hausdorff distance.
  • Additional colorspace illuminants and observers parameter options were added to skimage.color.lab2rgb, skimage.color.rgb2lab,
    skimage.color.xyz2lab, skimage.color.lab2xyz, skimage.color.xyz2luv and skimage.color.luv2xyz.
  • skimage.filters.threshold_multiotsu has a new hist keyword argument to allow use with a user-supplied histogram. (gh-5543)
  • skimage.restoration.denoise_bilateral added support for images containing negative values. (gh-5527)
  • The skimage.feature functions blob_dog, blob_doh and blob_log now support a threshold_rel keyword argument that can be used to specify a relative threshold (in range [0, 1]) rather than an absolute one. (gh-5517)
  • Implement lazy submodule importing (gh-5101)
  • Implement weighted estimation of geometric transform matrices (gh-5601)
  • Added new pixel graph algorithms in skimage.graph: pixel_graph generates a graph (network) of pixels according to their adjacency, and central_pixel finds the geodesic center of the pixels. (gh-5602)
  • scikit-image now supports use of Pythran in contributed code. (gh-3226)

Improvements

  • Many more functions throughout the library now have single precision (float32) support.
  • Biharmonic inpainting (skimage.restoration.inpaint_biharmonic) was refactored and is orders of magnitude faster than before.
  • Salt-and-pepper noise generation with skimage.util.random_noise is now faster.
  • The performance of the SLIC superpixels algorithm (skimage.segmentation.slice) was improved for the case where a mask is supplied by the user (gh-4903). The specific superpixels produced by masked SLIC will not be identical to those produced by prior releases.
  • exposure.adjust_gamma has been accelerated for uint8 images thanks to a LUT (gh-4966).
  • measure.label has been accelerated for boolean input images, by using scipy.ndimage's implementation for this case (gh-4945).
  • util.apply_parallel now works with multichannel data (gh-4927).
  • skimage.feature.peak_local_max supports now any Minkowski distance.
  • Fast, non-Cython implementation for skimage.filters.correlate_sparse.
  • For efficiency, the histogram is now precomputed within skimage.filters.try_all_threshold.
  • Faster skimage.filters.find_local_max when given a finite num_peaks.
  • All filters in the skimage.filters.rank module now release the GIL, enabling multithreaded use.
  • skimage.restoration.denoise_tv_bregman and
    skimage.restoration.denoise_bilateral now release the GIL, enabling multithreaded use.
  • A skimage.color.label2rgb performance regression was addressed.
  • Improve numerical precision in CircleModel.estimate. (gh-5190)
  • Add default keyword argument values to skimage.restoration.denoise_tv_bregman, skimage.measure.block_reduce, and skimage.filters.threshold_local. (gh-5454)
  • Make matplotlib an optional dependency (gh-5990)
  • single precision support in skimage.filters (gh-5354)
  • Support nD images and labels in label2rgb (gh-5550)
  • Regionprops table performance refactor (gh-5576)
  • add regionprops benchmark script (gh-5579)
  • remove use of apply_along_axes from greycomatrix & greycoprops (gh-5580)
  • refactor gabor_kernel for efficiency (gh-5582)
  • remove need for channel_as_last_axis decorator in skimage.filters (gh-5584)
  • replace use of scipy.ndimage.gaussian_filter with skimage.filters.gaussian (gh-5872)
  • add channel_axis argument to quickshift (gh-5987)
  • add MacOS arm64 wheels (gh-6068)

API Changes

  • The multichannel boolean argument has been deprecated. All functions with multichannel support now use an integer channel_axis to specify which axis corresponds to channels. Setting channel_axis to None is used to indicate that the image is grayscale. Specifically, existing code with multichannel=True should be updated to use channel_axis=-1 and code with multichannel=False should now specify channel_axis=None.
  • Most functions now return float32 images when the input has float32 dtype.
  • A default value has been added to measure.find_contours, corresponding to the half distance between the min and max values of the image (gh-4862).
  • data.cat has been introduced as an alias of data.chelsea for a more descriptive name.
  • The level parameter of measure.find_contours is now a keyword argument, with a default value set to (max(image) - min(image)) / 2.
  • p_norm argument was added to skimage.feature.peak_local_max to add support for Minkowski distances.
  • skimage.transforms.integral_image now promotes floating point inputs to double precision by default (for accuracy). A new dtype keyword argument can be used to override this behavior when desired.
  • Color conversion functions now have a new channel_axis keyword argument (see New Features section).
  • SLIC superpixel segmentation outputs may differ from previous versions for data that was not already scaled to [0, 1] range. There is now an automatic internal rescaling of the input to [0, 1] so that the compactness parameter has an effect that is independent of the input image's scaling.
  • A bug fix to the phase normalization applied within skimage.register.phase_cross_correlation may result in a different result as compared to prior releases. The prior behavior of "unnormalized" cross correlation is still available by explicitly setting normalization=None. There is no change to the masked cross-correlation case, which uses a different algorithm.

Bugfixes

  • Input labels argument renumbering in skimage.feature.peak_local_max is avoided (gh-5047).
  • fix clip bug in resize when anti_aliasing is applied (gh-5202)
  • Nonzero values at the image edge are no longer incorrectly marked as a boundary when using find_bounaries with mode='subpixel' (gh-5447).
  • Fix return dtype of _label2rgb_avg function.
  • Ensure skimage.color.separate_stains does not return negative values.
  • Prevent integer overflow in ``Ellips...
Read more

v0.19.0rc0

22 Nov 06:25
v0.19.0rc0
Compare
Choose a tag to compare
v0.19.0rc0 Pre-release
Pre-release

Announcement: scikit-image 0.19.0rc0

We're happy to announce a release-candidate for scikit-image v0.19.0!

scikit-image is an image processing toolbox for SciPy that includes algorithms for segmentation, geometric transformations, color space manipulation, analysis, filtering, morphology, feature detection, and more.

For more information, examples, and documentation, please visit our website: https://scikit-image.org

A highlight of this release is the addition of the popular scale-invariant feature transform (SIFT) feature detector and descriptor. This release also
introduces a perceptual blur metric, new pixel graph algorithms, and most functions now operate in single-precision when single-precision inputs are provided. Many other bug fixes, enhancements and performance improvements are detailed below.

A significant change in this release is in the treatment of multichannel images. The existing multichannel argument to functions has been deprecated in favor of a new channel_axis argument. channel_axis can be used to specify which axis of an array contains channel information (with channel_axis=None indicating a grayscale image).

scikit-image now uses "lazy loading", which enables users to access the functions from all skimage submodules without the overhead of eagerly importing all submodules. As a concrete example, after calling "import skimage" a user can directly call a function such as skimage.transform.warp whereas previously it would have been required to first "import skimage.transform".

An exciting change on the development side is the introduction of support for Pythran as an alternative to Cython for generating compiled code. We plan to keep Cython support as well going forward, so developers are free to use either one as appropriate. For those curious about Pythran, a good overview was given in the SciPy 2021 presentation, "Building SciPy Kernels with Pythran" (https://www.youtube.com/watch?v=6a9D9WL6ZjQ).

New Features

  • Added support for processing images with channels located along any array axis. This is in contrast to previous releases where channels were required to be the last axis of an image. See more info on the new channel_axis argument under the API section of the release notes.
  • A no-reference measure of perceptual blur was added (skimage.measure.blur_effect).
  • Non-local means (skimage.restoration.denoise_nl_means) now supports 3D multichannel, 4D and 4D multichannel data when fast_mode=True.
  • An n-dimensional Fourier-domain Butterworth filter (skimage.filters.butterworth) was added.
  • Color conversion functions now have a new channel_axis keyword argument that allows specification of which axis of an array corresponds to channels. For backwards compatibility, this parameter defaults to channel_axis=-1, indicating that channels are along the last axis.
  • Added a new keyword only parameter random_state to morphology.medial_axis and restoration.unsupervised_wiener.
  • Seeding random number generators will not give the same results as the underlying generator was updated to use numpy.random.Generator.
  • Added saturation parameter to skimage.color.label2rgb
  • Added normalized mutual information metric skimage.metrics.normalized_mutual_information
  • threshold_local now supports n-dimensional inputs and anisotropic block_size
  • New skimage.util.label_points function for assigning labels to points.
  • Added nD support to several geometric transform classes
  • Added skimage.metrics.hausdorff_pair to find points separated by the Hausdorff distance.
  • Additional colorspace illuminants and observers parameter options were added to skimage.color.lab2rgb, skimage.color.rgb2lab,
    skimage.color.xyz2lab, skimage.color.lab2xyz, skimage.color.xyz2luv and skimage.color.luv2xyz.
  • skimage.filters.threshold_multiotsu has a new hist keyword argument to allow use with a user-supplied histogram. (gh-5543)
  • skimage.restoration.denoise_bilateral added support for images containing negative values. (gh-5527)
  • The skimage.feature functions blob_dog, blob_doh and blob_log now support a threshold_rel keyword argument that can be used to specify a relative threshold (in range [0, 1]) rather than an absolute one. (gh-5517)
  • Implement lazy submodule importing (gh-5101)
  • Implement weighted estimation of geometric transform matrices (gh-5601)
  • Added new pixel graph algorithms in skimage.graph: pixel_graph generates a graph (network) of pixels according to their adjacency, and central_pixel finds the geodesic center of the pixels. (gh-5602)
  • scikit-image now supports use of Pythran in contributed code. (gh-3226)

Improvements

  • Many more functions throughout the library now have single precision (float32) support.
  • Biharmonic inpainting (skimage.restoration.inpaint_biharmonic) was refactored and is orders of magnitude faster than before.
  • Salt-and-pepper noise generation with skimage.util.random_noise is now faster.
  • The performance of the SLIC superpixels algorithm (skimage.segmentation.slice) was improved for the case where a mask is supplied by the user (gh-4903). The specific superpixels produced by masked SLIC will not be identical to those produced by prior releases.
  • exposure.adjust_gamma has been accelerated for uint8 images thanks to a LUT (gh-4966).
  • measure.label has been accelerated for boolean input images, by using scipy.ndimage's implementation for this case (gh-4945).
  • util.apply_parallel now works with multichannel data (gh-4927).
  • skimage.feature.peak_local_max supports now any Minkowski distance.
  • Fast, non-Cython implementation for skimage.filters.correlate_sparse.
  • For efficiency, the histogram is now precomputed within skimage.filters.try_all_threshold.
  • Faster skimage.filters.find_local_max when given a finite num_peaks.
  • All filters in the skimage.filters.rank module now release the GIL, enabling multithreaded use.
  • skimage.restoration.denoise_tv_bregman and
    skimage.restoration.denoise_bilateral now release the GIL, enabling multithreaded use.
  • A skimage.color.label2rgb performance regression was addressed.
  • Improve numerical precision in CircleModel.estimate. (gh-5190)
  • Add default keyword argument values to skimage.restoration.denoise_tv_bregman, skimage.measure.block_reduce, and skimage.filters.threshold_local. (gh-5454)
  • Make matplotlib an optional dependency (gh-5990)
  • single precision support in skimage.filters (gh-5354)
  • Support nD images and labels in label2rgb (gh-5550)
  • Regionprops table performance refactor (gh-5576)
  • add regionprops benchmark script (gh-5579)
  • remove use of apply_along_axes from greycomatrix & greycoprops (gh-5580)
  • refactor gabor_kernel for efficiency (gh-5582)
  • remove need for channel_as_last_axis decorator in skimage.filters (gh-5584)
  • replace use of scipy.ndimage.gaussian_filter with skimage.filters.gaussian (gh-5872)
  • add channel_axis argument to quickshift (gh-5987)

API Changes

  • The multichannel boolean argument has been deprecated. All functions with multichannel support now use an integer channel_axis to specify which axis corresponds to channels. Setting channel_axis to None is used to indicate that the image is grayscale. Specifically, existing code with multichannel=True should be updated to use channel_axis=-1 and code with multichannel=False should now specify channel_axis=None.
  • Most functions now return float32 images when the input has float32 dtype.
  • A default value has been added to measure.find_contours, corresponding to the half distance between the min and max values of the image (gh-4862).
  • data.cat has been introduced as an alias of data.chelsea for a more descriptive name.
  • The level parameter of measure.find_contours is now a keyword argument, with a default value set to (max(image) - min(image)) / 2.
  • p_norm argument was added to skimage.feature.peak_local_max to add support for Minkowski distances.
  • skimage.transforms.integral_image now promotes floating point inputs to double precision by default (for accuracy). A new dtype keyword argument can be used to override this behavior when desired.
  • Color conversion functions now have a new channel_axis keyword argument (see New Features section).
  • SLIC superpixel segmentation outputs may differ from previous versions for data that was not already scaled to [0, 1] range. There is now an automatic internal rescaling of the input to [0, 1] so that the compactness parameter has an effect that is independent of the input image's scaling.
  • A bug fix to the phase normalization applied within skimage.register.phase_cross_correlation may result in a different result as compared to prior releases. The prior behavior of "unnormalized" cross correlation is still available by explicitly setting normalization=None. There is no change to the masked cross-correlation case, which uses a different algorithm.

Bugfixes

  • Input labels argument renumbering in skimage.feature.peak_local_max is avoided (gh-5047).
  • fix clip bug in resize when anti_aliasing is applied (gh-5202)
  • Nonzero values at the image edge are no longer incorrectly marked as a boundary when using find_bounaries with mode='subpixel' (gh-5447).
  • Fix return dtype of _label2rgb_avg function.
  • Ensure skimage.color.separate_stains does not return negative values.
  • Prevent integer overflow in EllipseModel.
  • Fixed off-by one error in pixel bins in Hough line transform, skimage.transform.hough_line.
  • Handle 1D arrays properly in ``skimage....
Read more

v0.18.3

24 Aug 18:20
v0.18.3
Compare
Choose a tag to compare

scikit-image 0.18.3

This is a small bugfix release for compatibility with Pooch 1.5 and SciPy 1.7.

Bug fixes

  • Only import from Pooch's public API. This resolves an import failure with
    Pooch 1.5.0. (#5531, backport of #5529)
  • Do not use deprecated scipy.linalg.pinv2 in random_walker when
    using the multigrid solver. (#5531, backport of #5437)

v0.18.1

19 Jan 08:17
Compare
Choose a tag to compare

scikit-image 0.18.1

This is a bug fix release and contains the following two bug fixes:

  • Fix indexing error for labelling in large (>2GB) arrays (#5143, #5151)
  • Only use retry_if_failed with recent pooch (#5148)

See below for the new features and API changes in 0.18.0.

Announcement: scikit-image 0.18.0

We're happy to announce the release of scikit-image v0.18.0!

scikit-image is an image processing toolbox for SciPy that includes algorithms
for segmentation, geometric transformations, color space manipulation,
analysis, filtering, morphology, feature detection, and more.

This release of scikit-image drops support for Python 3.6 in accordance with
the NEP-29 Python and Numpy version support community standard <https://numpy.org/neps/nep-0029-deprecation_policy.html>_: Python 3.7 or
newer is required to run this version.

For more information, examples, and documentation, please visit our website:

https://scikit-image.org

New Features

  • Add the iterative Lucas-Kanade (iLK) optical flow method (#4161)
  • Add Feret diameter in region properties (#4379, #4820)
  • Add functions to compute Euler number and Crofton perimeter estimation (#4380)
  • Add a function to compute the Hausdorff distance (#4382)
  • Added 3D support for many filters in skimage.filters.rank.
  • An experimental implementation of trainable pixel segmentation, aiming for
    compatibility with the scikit-learn API, has been added to
    skimage.future. Try it out! (#4739)
  • Add a new function segmentation.expand_labels to dilate labels while
    preventing overlap (#4795)
  • It is now possible to pass extra measurement functions to
    measure.regionprops and regionprops_table (#4810)
  • Add rolling ball algorithm for background subtraction (#4851)
  • New sample images have been added in the data subpackage: data.eagle
    (#4922), data.human_mitosis (#4939), data.cells3d (#4951), and
    data.vortex (#5041). Also note that the image for data.camera has
    been changed due to copyright issues (#4913).
  • skimage.feature.structure_tensor now supports 3D (and nD) images as input
    (#5002)
  • Many thresholding methods can now receive a precomputed histogram as input,
    resulting in significant speedups if multiple methods are tried on the same
    image, or if a fast histogram method is used. (#5006)
  • measure.regionprops now supports multichannel intensity images (#5037)

Documentation

  • Add an example to the flood fill tutorial (#4619)
  • Docstring enhancements for marching cubes and find_contours (#4641)
  • A new tutorial presenting a cell biology example has been added to the
    gallery (#4648). Special thanks to Pierre Poulain and Fred Bernard
    (Université de Paris and Institut Jacques Monod) for scientific review of
    this example!
  • Improve register rotation example with notes and references (#4723)
  • Add versionadded for new scalar type support for "scale" param in
    transform.AffineTransform (#4733)
  • New tutorial on visualizing 3D data <https://scikit-image.org/docs/dev/auto_examples/applications/plot_3d_image_processing.html>_ (#4850)
  • Add example for 3D adaptive histogram equalization (AHE) (#4658)
  • Automatic formatting of docstrings for improved consistency (#4849)
  • Improved docstring for rgb2lab (#4839) and marching_cubes (#4846)
  • Improved docstring for measure.marching_cubes, mentioning how to decimate a
    mesh using mayavi (#4846)
  • Document how to contribute a gallery example. (#4857)
  • Fix and improve entropy example (#4904)
  • expand the benchmarking section of the developer docs (#4905)
  • Improved docstring for util.random_noise (#5001)
  • Improved docstrings for morphology.h_maxima and morphology.h_minima
    (#4929).
  • Improved docstring for util.img_as_int (#4888).
  • A new example demonstrates interactive exploration of regionprops results
    using the PyData stack (pandas, seaborn) at
    https://scikit-image.org/docs/dev/auto_examples/segmentation/plot_regionprops.html`_
    (#5010).
  • Documentation has been added to explain
    how to download example datasets <https://scikit-image.org/docs/dev/install.html#downloading-all-demo-datasets>_
    which are not installed with scikit-image (#4984). Similarly, the contributor
    guide has been updated to mention how to host new datasets in a gitlab
    repository (#4892).
  • The benchmarking section of the developer documentation <https://scikit-image.org/docs/dev/contribute.html#benchmarks>_
    has been expanded (#4905).
  • Added links to the image.sc forum in example pages (#5094, #5096)
  • Added missing datasets to gallery examples (#5116, #5118)
  • Add farid filters in all, to populate the documentation (#5128, #5129)
  • Proofread gallery example for rank filters. (#5126, #5136)

Improvements

  • float32 support for SLIC (#4683), ORB (#4684, #4697), BRIEF (#4685),
    pyramid_gaussian (#4696), Richardson-Lucy deconvolution (#4880)
  • In skimage.restoration.richardson_lucy, computations are now done in
    single-precision when the input image is single-precision. This can give a
    substantial performance improvement when working with single precision data.
  • Richardson-Lucy deconvolution now has a filter_epsilon keyword argument
    to avoid division by very small numbers (#4823)
  • Add default level parameter (max-min) / 2 in measure.find_contours (#4862)
  • The performance of the SLIC superpixels algorithm
    (skimage.segmentation.slice) was improved for the case where a mask
    is supplied by the user (#4903). The specific superpixels produced by
    masked SLIC will not be identical to those produced by prior releases.
  • exposure.adjust_gamma has been accelerated for uint8 images by using
    a look-up table (LUT) (#4966).
  • measure.label has been accelerated for boolean input images, by using
    scipy.ndimage's implementation for this case (#4945).
  • util.apply_parallel now works with multichannel data (#4927).
  • skimage.feature.peak_local_max supports now any Minkowski distance.
  • We now use sparse cross-correlation to accelerate local thresholding
    functions (#4912)
  • morphology.convex_hull_image now uses much less memory by checking hull
    inequalities in sequence (#5020)
  • Polygon rasterization is more precise and will no longer potentially exclude
    input vertices. (#5029)
  • Add data optional requirements to allow pip install scikit-image[data]
    (#5105, #5111)
  • OpenMP support in MSVC (#4924, #5111)
  • Restandardize handling of Multi-Image files (#2815, #5132)
  • Consistent zoom boundary behavior across SciPy versions (#5131, #5133)

API Changes

  • skimage.restoration.richardson_lucy returns a single-precision output
    when the input is single-precision. Prior to this release, double-precision
    was always used. (#4880)
  • The default value of threshold_rel in skimage.feature.corner has
    changed from 0.1 to None, which corresponds to letting
    skimage.feature.peak_local_max decide on the default. This is currently
    equivalent to threshold_rel=0.
  • In measure.label, the deprecated neighbors parameter has been
    removed. (#4942)
  • The image returned by data.camera has changed because of copyright
    issues (#4913).

Bug fixes

  • A bug in label2rgb has been fixed when the input image had np.uint8
    dtype (#4661)
  • Fixed incorrect implementation of skimage.color.separate_stains (#4725)
  • Many bug fixes have been made in peak_local_max (#2592, #4756, #4760,
    #5047)
  • Fix bug in random_walker when input labels have negative values (#4771)
  • PSF flipping is now correct for Richardson-Lucy deconvolution work in >2D (#4823)
  • Fix equalize_adapthist (CLAHE) for clip value 1.0 (#4828)
  • For the RANSAC algorithm, improved the case where all data points are
    outliers, which was previously raising an error
    (#4844)
  • An error-causing bug has been corrected for the bg_color parameter in
    label2rgb when its value is a string (#4840)
  • A normalization bug was fixed in metrics.variation_of_information
    (#4875)
  • Euler characteristic property of skimage.measure.regionprops was erroneous
    for 3D objects, since it did not take tunnels into account. A new implementation
    based on integral geometry fixes this bug (#4380).
  • In skimage.morphology.selem.rectangle the height argument
    controlled the width and the width argument controlled the height.
    They have been replaced with nrow and ncol. (#4906)
  • skimage.segmentation.flood_fill and skimage.segmentation.flood
    now consistently handle negative values for seed_point.
  • Segmentation faults in segmentation.flood have been fixed (#4948, #4972)
  • A segfault in draw.polygon for the case of 0-d input has been fixed
    (#4943).
  • In registration.phase_cross_correlation, a ValueError is raised when
    NaNs are found in the computation (as a result of NaNs in input images).
    Before this fix, an incorrect value could be returned where the input images
    had NaNs (#4886).
  • Fix edge filters not respecting padding mode (#4907)
  • Use v{} for version tags with pooch (#5104, #5110)
  • Fix compilation error in XCode 12 (#5107, #5111)

Deprecations

  • The indices argument in skimage.feature.peak_local_max has been
    deprecated. Indices will always be returned. (#4752)
  • In skimage.feature.structure_tensor, an order argument has been
    introduced which will default to 'rc' starting in version 0.20. (#4841)
  • skimage.feature.structure_tensor_eigvals has been deprecated and will be
    removed in version 0.20. Use skimage.feature.structure_tensor_eigenvalues
    instead.
  • The skimage.viewer subpackage an...
Read more

v0.18.0

19 Jan 08:16
Compare
Choose a tag to compare

Announcement: scikit-image 0.18.0

We're happy to announce the release of scikit-image v0.18.0!

scikit-image is an image processing toolbox for SciPy that includes algorithms
for segmentation, geometric transformations, color space manipulation,
analysis, filtering, morphology, feature detection, and more.

This release of scikit-image drops support for Python 3.6 in accordance with
the NEP-29 Python and Numpy version support community standard <https://numpy.org/neps/nep-0029-deprecation_policy.html>_: Python 3.7 or
newer is required to run this version.

For more information, examples, and documentation, please visit our website:

https://scikit-image.org

New Features

  • Add the iterative Lucas-Kanade (iLK) optical flow method (#4161)
  • Add Feret diameter in region properties (#4379, #4820)
  • Add functions to compute Euler number and Crofton perimeter estimation (#4380)
  • Add a function to compute the Hausdorff distance (#4382)
  • Added 3D support for many filters in skimage.filters.rank.
  • An experimental implementation of trainable pixel segmentation, aiming for
    compatibility with the scikit-learn API, has been added to
    skimage.future. Try it out! (#4739)
  • Add a new function segmentation.expand_labels to dilate labels while
    preventing overlap (#4795)
  • It is now possible to pass extra measurement functions to
    measure.regionprops and regionprops_table (#4810)
  • Add rolling ball algorithm for background subtraction (#4851)
  • New sample images have been added in the data subpackage: data.eagle
    (#4922), data.human_mitosis (#4939), data.cells3d (#4951), and
    data.vortex (#5041). Also note that the image for data.camera has
    been changed due to copyright issues (#4913).
  • skimage.feature.structure_tensor now supports 3D (and nD) images as input
    (#5002)
  • Many thresholding methods can now receive a precomputed histogram as input,
    resulting in significant speedups if multiple methods are tried on the same
    image, or if a fast histogram method is used. (#5006)
  • measure.regionprops now supports multichannel intensity images (#5037)

Documentation

  • Add an example to the flood fill tutorial (#4619)
  • Docstring enhancements for marching cubes and find_contours (#4641)
  • A new tutorial presenting a cell biology example has been added to the
    gallery (#4648). Special thanks to Pierre Poulain and Fred Bernard
    (Université de Paris and Institut Jacques Monod) for scientific review of
    this example!
  • Improve register rotation example with notes and references (#4723)
  • Add versionadded for new scalar type support for "scale" param in
    transform.AffineTransform (#4733)
  • New tutorial on visualizing 3D data <https://scikit-image.org/docs/dev/auto_examples/applications/plot_3d_image_processing.html>_ (#4850)
  • Add example for 3D adaptive histogram equalization (AHE) (#4658)
  • Automatic formatting of docstrings for improved consistency (#4849)
  • Improved docstring for rgb2lab (#4839) and marching_cubes (#4846)
  • Improved docstring for measure.marching_cubes, mentioning how to decimate a
    mesh using mayavi (#4846)
  • Document how to contribute a gallery example. (#4857)
  • Fix and improve entropy example (#4904)
  • expand the benchmarking section of the developer docs (#4905)
  • Improved docstring for util.random_noise (#5001)
  • Improved docstrings for morphology.h_maxima and morphology.h_minima
    (#4929).
  • Improved docstring for util.img_as_int (#4888).
  • A new example demonstrates interactive exploration of regionprops results
    using the PyData stack (pandas, seaborn) at
    https://scikit-image.org/docs/dev/auto_examples/segmentation/plot_regionprops.html`_
    (#5010).
  • Documentation has been added to explain
    how to download example datasets <https://scikit-image.org/docs/dev/install.html#downloading-all-demo-datasets>_
    which are not installed with scikit-image (#4984). Similarly, the contributor
    guide has been updated to mention how to host new datasets in a gitlab
    repository (#4892).
  • The benchmarking section of the developer documentation <https://scikit-image.org/docs/dev/contribute.html#benchmarks>_
    has been expanded (#4905).
  • Added links to the image.sc forum in example pages (#5094, #5096)
  • Added missing datasets to gallery examples (#5116, #5118)
  • Add farid filters in all, to populate the documentation (#5128, #5129)
  • Proofread gallery example for rank filters. (#5126, #5136)

Improvements

  • float32 support for SLIC (#4683), ORB (#4684, #4697), BRIEF (#4685),
    pyramid_gaussian (#4696), Richardson-Lucy deconvolution (#4880)
  • In skimage.restoration.richardson_lucy, computations are now done in
    single-precision when the input image is single-precision. This can give a
    substantial performance improvement when working with single precision data.
  • Richardson-Lucy deconvolution now has a filter_epsilon keyword argument
    to avoid division by very small numbers (#4823)
  • Add default level parameter (max-min) / 2 in measure.find_contours (#4862)
  • The performance of the SLIC superpixels algorithm
    (skimage.segmentation.slice) was improved for the case where a mask
    is supplied by the user (#4903). The specific superpixels produced by
    masked SLIC will not be identical to those produced by prior releases.
  • exposure.adjust_gamma has been accelerated for uint8 images by using
    a look-up table (LUT) (#4966).
  • measure.label has been accelerated for boolean input images, by using
    scipy.ndimage's implementation for this case (#4945).
  • util.apply_parallel now works with multichannel data (#4927).
  • skimage.feature.peak_local_max supports now any Minkowski distance.
  • We now use sparse cross-correlation to accelerate local thresholding
    functions (#4912)
  • morphology.convex_hull_image now uses much less memory by checking hull
    inequalities in sequence (#5020)
  • Polygon rasterization is more precise and will no longer potentially exclude
    input vertices. (#5029)
  • Add data optional requirements to allow pip install scikit-image[data]
    (#5105, #5111)
  • OpenMP support in MSVC (#4924, #5111)
  • Restandardize handling of Multi-Image files (#2815, #5132)
  • Consistent zoom boundary behavior across SciPy versions (#5131, #5133)

API Changes

  • skimage.restoration.richardson_lucy returns a single-precision output
    when the input is single-precision. Prior to this release, double-precision
    was always used. (#4880)
  • The default value of threshold_rel in skimage.feature.corner has
    changed from 0.1 to None, which corresponds to letting
    skimage.feature.peak_local_max decide on the default. This is currently
    equivalent to threshold_rel=0.
  • In measure.label, the deprecated neighbors parameter has been
    removed. (#4942)
  • The image returned by data.camera has changed because of copyright
    issues (#4913).

Bug fixes

  • A bug in label2rgb has been fixed when the input image had np.uint8
    dtype (#4661)
  • Fixed incorrect implementation of skimage.color.separate_stains (#4725)
  • Many bug fixes have been made in peak_local_max (#2592, #4756, #4760,
    #5047)
  • Fix bug in random_walker when input labels have negative values (#4771)
  • PSF flipping is now correct for Richardson-Lucy deconvolution work in >2D (#4823)
  • Fix equalize_adapthist (CLAHE) for clip value 1.0 (#4828)
  • For the RANSAC algorithm, improved the case where all data points are
    outliers, which was previously raising an error
    (#4844)
  • An error-causing bug has been corrected for the bg_color parameter in
    label2rgb when its value is a string (#4840)
  • A normalization bug was fixed in metrics.variation_of_information
    (#4875)
  • Euler characteristic property of skimage.measure.regionprops was erroneous
    for 3D objects, since it did not take tunnels into account. A new implementation
    based on integral geometry fixes this bug (#4380).
  • In skimage.morphology.selem.rectangle the height argument
    controlled the width and the width argument controlled the height.
    They have been replaced with nrow and ncol. (#4906)
  • skimage.segmentation.flood_fill and skimage.segmentation.flood
    now consistently handle negative values for seed_point.
  • Segmentation faults in segmentation.flood have been fixed (#4948, #4972)
  • A segfault in draw.polygon for the case of 0-d input has been fixed
    (#4943).
  • In registration.phase_cross_correlation, a ValueError is raised when
    NaNs are found in the computation (as a result of NaNs in input images).
    Before this fix, an incorrect value could be returned where the input images
    had NaNs (#4886).
  • Fix edge filters not respecting padding mode (#4907)
  • Use v{} for version tags with pooch (#5104, #5110)
  • Fix compilation error in XCode 12 (#5107, #5111)

Deprecations

  • The indices argument in skimage.feature.peak_local_max has been
    deprecated. Indices will always be returned. (#4752)
  • In skimage.feature.structure_tensor, an order argument has been
    introduced which will default to 'rc' starting in version 0.20. (#4841)
  • skimage.feature.structure_tensor_eigvals has been deprecated and will be
    removed in version 0.20. Use skimage.feature.structure_tensor_eigenvalues
    instead.
  • The skimage.viewer subpackage and the skivi script have been
    deprecated and will be removed in version 0.20. For interactive visualization
    we recommend using dedicated tools such as napari <https://napari.org>_ or
    plotly <https://plotly.com>_. In a similar vein, the qt and skivi
    plugins of skimage.io have...
Read more

v0.17.2

06 Jul 09:37
Compare
Choose a tag to compare
tag v0.17.2

scikit-image 0.16.2

22 Oct 06:37
@jni jni
Compare
Choose a tag to compare

Announcement: scikit-image 0.16.2

We're happy to announce the release of scikit-image v0.16.2!

scikit-image is an image processing toolbox for SciPy that includes algorithms
for segmentation, geometric transformations, color space manipulation,
analysis, filtering, morphology, feature detection, and more.

This is a bug fix release that addresses several critical issues from 0.16.1.

Bug fixes


  • Migrate to networkx 2.x (#4236, #4237)
  • Sync required numpy and dask to runtime versions (#4233, #4239)
  • Fix wrong argument parsing in structural_similarity (#4246, #4247)
  • Fix active contour gallery example after change to rc coordinates (#4257, #4262)

4 authors added to this release [alphabetical by first name or login]

  • François Boulogne
  • Jarrod Millman
  • Mark Harfouche
  • Ondrej Pesek

6 reviewers added to this release [alphabetical by first name or login]

  • Alexandre de Siqueira
  • Egor Panfilov
  • François Boulogne
  • Juan Nunez-Iglesias
  • Mark Harfouche
  • Nelle Varoquaux

Announcement: scikit-image 0.16.1

We're happy to announce the release of scikit-image v0.16.1!

scikit-image is an image processing toolbox for SciPy that includes algorithms
for segmentation, geometric transformations, color space manipulation,
analysis, filtering, morphology, feature detection, and more.

For more information, examples, and documentation, please visit our website:

https://scikit-image.org

Starting from this release, scikit-image will follow the recently
introduced NumPy deprecation policy, NEP 29 <https://github.com/numpy/numpy/blob/master/doc/neps/nep-0029-deprecation_policy.rst>__.
Accordingly, scikit-image 0.16 drops support for Python 3.5.
This release of scikit-image officially supports Python 3.6 and 3.7.

Special thanks to Matthias Bussonnier for Frappuccino <https://github.com/Carreau/frappuccino>__, which helped us catch all API
changes and nail down the APIs for new features.

New Features

  • New skimage.evaluate module containing simple metrics (mse,
    nrme, psd) and segmentation metrics (adapted rand error, variation of
    information) (#4025)
  • n-dimensional TV-L1 optical flow algorithm for registration --
    skimage.registration.optical_flow_tvl1 (#3983)
  • Draw a line in an n-dimensional array -- skimage.draw.line_nd
    (#2043)
  • 2D Farid & Simoncelli edge filters - skimage.filters.farid,
    skimage.filters.farid_h, and skimage.filters.farid_v (#3775)
  • 2D majority voting filter assigning to each pixel the most commonly
    occurring value within its neighborhood -- skimage.filters.majority
    (#3836, #3839)
  • Multi-level threshold "multi-Otsu" method, a thresholding algorithm
    used to separate the pixels of an input image into several classes by
    maximizing the variances between classes --
    skimage.filters.threshold_multiotsu (#3872, #4174)
  • New example data -- skimage.data.shepp_logan_phantom, skimage.data.colorwheel,
    skimage.data.brick, skimage.data.grass, skimage.data.roughwall, skimage.data.cell
    (#3958, #3966)
  • Compute and format image region properties as a table --
    skimage.measure.regionprops_table (#3959)
  • Convert a polygon into a mask -- skimage.draw.poly2mask (#3971, #3977)
  • Visual image comparison helper skimage.util.compare_images,
    that returns an image showing the difference between two input images (#4089)
  • skimage.transform.warp_polar to remap image into
    polar or log-polar coordinates. (#4097)

Improvements

  • RANSAC: new option to set initial samples selected for initialization (#2992)
  • Better repr and str for skimage.transform.ProjectiveTransform (#3525,
    #3967)
  • Better error messages and data type stability to
    skimage.segmentation.relabel_sequential (#3740)
  • Improved compatibility with dask arrays in some image thresholding methods (#3823)
  • skimage.io.ImageCollection can now receive lists of patterns (#3928)
  • Speed up skimage.feature.peak_local_max (#3984)
  • Better error message when incorrect value for keyword argument kind in
    skimage.color.label2rgb (#4055)
  • All functions from skimage.drawing now supports multi-channel 2D images (#4134)

API Changes

  • Deprecated subpackage skimage.novice has been removed.
  • Default value of multichannel parameters has been set to False in
    skimage.transform.rescale, skimage.transform.pyramid_reduce,
    skimage.transform.pyramid_laplacian,
    skimage.transform.pyramid_gaussian, and
    skimage.transform.pyramid_expand. Guessing is no longer performed for 3D
    arrays.
  • Deprecated argument visualise has been removed from
    skimage.feature.hog. Use visualize instead.¨
  • skimage.transform.seam_carve has been completely removed from the
    library due to licensing restrictions.
  • Parameter as_grey has been removed from skimage.data.load and
    skimage.io.imread. Use as_gray instead.
  • Parameter min_size has been removed from
    skimage.morphology.remove_small_holes. Use area_threshold instead.
  • Deprecated correct_mesh_orientation in skimage.measure has been
    removed.
  • skimage.measure._regionprops has been completely switched to using
    row-column coordinates. Old x-y interface is not longer available.
  • Default value of behavior parameter has been set to ndimage in
    skimage.filters.median.
  • Parameter flatten in skimage.io.imread has been removed in
    favor of as_gray.
  • Parameters Hxx, Hxy, Hyy have been removed from
    skimage.feature.corner.hessian_matrix_eigvals in favor of H_elems.
  • Default value of order parameter has been set to rc in
    skimage.feature.hessian_matrix.
  • skimage.util.img_as_* functions no longer raise precision and/or loss warnings.

Bugfixes

  • Corrected error with scales attribute in ORB.detect_and_extract (#2835)
    The scales attribute wasn't taking into account the mask, and thus was using
    an incorrect array size.
  • Correct for bias in Inverse Randon Transform (skimage.transform.irandon) (#3067)
    Fixed by using the Ramp filter equation in the spatial domain as described
    in the reference
  • Fix a rounding issue that caused a rotated image to have a
    different size than the input (skimage.transform.rotate) (#3173)
  • RANSAC uses random subsets of the original data and not bootstraps. (#3901,
    #3915)
  • Canny now produces the same output regardless of dtype (#3919)
  • Geometry Transforms: avoid division by zero & some degenerate cases (#3926)
  • Fixed float32 support in denoise_bilateral and denoise_tv_bregman (#3936)
  • Fixed computation of Meijering filter and avoid ZeroDivisionError (#3957)
  • Fixed skimage.filters.threshold_li to prevent being stuck on stationnary
    points, and thus at local minima or maxima (#3966)
  • Edited skimage.exposure.rescale_intensity to return input image instead of
    nans when all 0 (#4015)
  • Fixed skimage.morphology.medial_axis. A wrong indentation in Cython
    caused the function to not behave as intended. (#4060)
  • Fixed skimage.restoration.denoise_bilateral by correcting the padding in
    the gaussian filter(#4080)
  • Fixed skimage.measure.find_contours when input image contains NaN.
    Contours interesting NaN will be left open (#4150)
  • Fixed skimage.feature.blob_log and skimage.feature.blob_dog for 3D
    images and anisotropic data (#4162)
  • Fixed skimage.exposure.adjust_gamma, skimage.exposure.adjust_log,
    and skimage.exposure.adjust_sigmoid such that when provided with a 1 by
    1 ndarray, it returns 1 by 1 ndarrays and not single number floats (#4169)

Deprecations

  • Parameter neighbors in skimage.measure.convex_hull_object has been
    deprecated in favor of connectivity and will be removed in version 0.18.0.

  • The following functions are deprecated in favor of the skimage.metrics
    module (#4025):

    • skimage.measure.compare_mse
    • skimage.measure.compare_nrmse
    • skimage.measure.compare_psnr
    • skimage.measure.compare_ssim
  • The function skimage.color.guess_spatial_dimensions is deprecated and
    will be removed in 0.18 (#4031)

  • The argument bc in skimage.segmentation.active_contour is
    deprecated.

  • The function skimage.data.load is deprecated and will be removed in 0.18
    (#4061)

  • The function skimage.transform.match_histogram is deprecated in favor of
    skimage.exposure.match_histogram (#4107)

  • The parameter neighbors of skimage.morphology.convex_hull_object is
    deprecated.

  • The skimage.transform.randon_tranform function will convert input image
    of integer type to float by default in 0.18. To preserve current behaviour,
    set the new argument preserve_range to True. (#4131)

Documentation improvements

  • DOC: Improve the documentation of transform.resize with respect to the anti_aliasing_sigma parameter (#3911)
  • Fix URL for stain deconvolution reference (#3862)
  • Fix doc for denoise guassian (#3869)
  • DOC: various enhancements (cross links, gallery, ref...), mainly for corner detection (#3996)
  • [DOC] clarify that the inertia_tensor may be nD in documentation (#4013)
  • [DOC] How to test and write benchmarks (#4016)
  • Spellcheck @CONTRIBUTING.txt (#4008)
  • Spellcheck @doc/examples/segmentation/plot_watershed.py (#4009)
  • Spellcheck @doc/examples/segmentation/plot_thresholding.py (#4010)
  • Spellcheck @skimage/morphology/binary.py (#4011)
  • Spellcheck @skimage/morphology/extrema.py (#4012)
  • docs update for downscale_local_mean and N-dimensional images (#4079)
  • Remove fancy language from 0.15 release notes (#3827)
  • D...
Read more

scikit-image 0.16.1

14 Oct 11:14
v0.16.1
Compare
Choose a tag to compare

Announcement: scikit-image 0.16.1

We're happy to announce the release of scikit-image v0.16.1!

scikit-image is an image processing toolbox for SciPy that includes algorithms
for segmentation, geometric transformations, color space manipulation,
analysis, filtering, morphology, feature detection, and more.

For more information, examples, and documentation, please visit our website:

https://scikit-image.org

Starting from this release, scikit-image will follow the recently
introduced NumPy deprecation policy, NEP 29 <https://github.com/numpy/numpy/blob/master/doc/neps/nep-0029-deprecation_policy.rst>__.
Accordingly, scikit-image 0.16 drops support for Python 3.5.
This release of scikit-image officially supports Python 3.6 and 3.7.

Special thanks to Matthias Bussonnier for Frappuccino <https://github.com/Carreau/frappuccino>__, which helped us catch all API
changes and nail down the APIs for new features.

New Features

  • New skimage.evaluate module containing simple metrics (mse,
    nrme, psd) and segmentation metrics (adapted rand error, variation of
    information) (#4025)
  • n-dimensional TV-L1 optical flow algorithm for registration --
    skimage.registration.optical_flow_tvl1 (#3983)
  • Draw a line in an n-dimensional array -- skimage.draw.line_nd
    (#2043)
  • 2D Farid & Simoncelli edge filters - skimage.filters.farid,
    skimage.filters.farid_h, and skimage.filters.farid_v (#3775)
  • 2D majority voting filter assigning to each pixel the most commonly
    occurring value within its neighborhood -- skimage.filters.majority
    (#3836, #3839)
  • Multi-level threshold "multi-Otsu" method, a thresholding algorithm
    used to separate the pixels of an input image into several classes by
    maximizing the variances between classes --
    skimage.filters.threshold_multiotsu (#3872, #4174)
  • New example data -- skimage.data.shepp_logan_phantom, skimage.data.colorwheel,
    skimage.data.brick, skimage.data.grass, skimage.data.roughwall, skimage.data.cell
    (#3958, #3966)
  • Compute and format image region properties as a table --
    skimage.measure.regionprops_table (#3959)
  • Convert a polygon into a mask -- skimage.draw.poly2mask (#3971, #3977)
  • Visual image comparison helper skimage.util.compare_images,
    that returns an image showing the difference between two input images (#4089)
  • skimage.transform.warp_polar to remap image into
    polar or log-polar coordinates. (#4097)

Improvements

  • RANSAC: new option to set initial samples selected for initialization (#2992)
  • Better repr and str for skimage.transform.ProjectiveTransform (#3525,
    #3967)
  • Better error messages and data type stability to
    skimage.segmentation.relabel_sequential (#3740)
  • Improved compatibility with dask arrays in some image thresholding methods (#3823)
  • skimage.io.ImageCollection can now receive lists of patterns (#3928)
  • Speed up skimage.feature.peak_local_max (#3984)
  • Better error message when incorrect value for keyword argument kind in
    skimage.color.label2rgb (#4055)
  • All functions from skimage.drawing now supports multi-channel 2D images (#4134)

API Changes

  • Deprecated subpackage skimage.novice has been removed.
  • Default value of multichannel parameters has been set to False in
    skimage.transform.rescale, skimage.transform.pyramid_reduce,
    skimage.transform.pyramid_laplacian,
    skimage.transform.pyramid_gaussian, and
    skimage.transform.pyramid_expand. Guessing is no longer performed for 3D
    arrays.
  • Deprecated argument visualise has been removed from
    skimage.feature.hog. Use visualize instead.¨
  • skimage.transform.seam_carve has been completely removed from the
    library due to licensing restrictions.
  • Parameter as_grey has been removed from skimage.data.load and
    skimage.io.imread. Use as_gray instead.
  • Parameter min_size has been removed from
    skimage.morphology.remove_small_holes. Use area_threshold instead.
  • Deprecated correct_mesh_orientation in skimage.measure has been
    removed.
  • skimage.measure._regionprops has been completely switched to using
    row-column coordinates. Old x-y interface is not longer available.
  • Default value of behavior parameter has been set to ndimage in
    skimage.filters.median.
  • Parameter flatten in skimage.io.imread has been removed in
    favor of as_gray.
  • Parameters Hxx, Hxy, Hyy have been removed from
    skimage.feature.corner.hessian_matrix_eigvals in favor of H_elems.
  • Default value of order parameter has been set to rc in
    skimage.feature.hessian_matrix.
  • skimage.util.img_as_* functions no longer raise precision and/or loss warnings.

Bugfixes

  • Corrected error with scales attribute in ORB.detect_and_extract (#2835)
    The scales attribute wasn't taking into account the mask, and thus was using
    an incorrect array size.
  • Correct for bias in Inverse Randon Transform (skimage.transform.irandon) (#3067)
    Fixed by using the Ramp filter equation in the spatial domain as described
    in the reference
  • Fix a rounding issue that caused a rotated image to have a
    different size than the input (skimage.transform.rotate) (#3173)
  • RANSAC uses random subsets of the original data and not bootstraps. (#3901,
    #3915)
  • Canny now produces the same output regardless of dtype (#3919)
  • Geometry Transforms: avoid division by zero & some degenerate cases (#3926)
  • Fixed float32 support in denoise_bilateral and denoise_tv_bregman (#3936)
  • Fixed computation of Meijering filter and avoid ZeroDivisionError (#3957)
  • Fixed skimage.filters.threshold_li to prevent being stuck on stationnary
    points, and thus at local minima or maxima (#3966)
  • Edited skimage.exposure.rescale_intensity to return input image instead of
    nans when all 0 (#4015)
  • Fixed skimage.morphology.medial_axis. A wrong indentation in Cython
    caused the function to not behave as intended. (#4060)
  • Fixed skimage.restoration.denoise_bilateral by correcting the padding in
    the gaussian filter(#4080)
  • Fixed skimage.measure.find_contours when input image contains NaN.
    Contours interesting NaN will be left open (#4150)
  • Fixed skimage.feature.blob_log and skimage.feature.blob_dog for 3D
    images and anisotropic data (#4162)
  • Fixed skimage.exposure.adjust_gamma, skimage.exposure.adjust_log,
    and skimage.exposure.adjust_sigmoid such that when provided with a 1 by
    1 ndarray, it returns 1 by 1 ndarrays and not single number floats (#4169)

Deprecations

  • Parameter neighbors in skimage.measure.convex_hull_object has been
    deprecated in favor of connectivity and will be removed in version 0.18.0.

  • The following functions are deprecated in favor of the skimage.metrics
    module (#4025):

    • skimage.measure.compare_mse
    • skimage.measure.compare_nrmse
    • skimage.measure.compare_psnr
    • skimage.measure.compare_ssim
  • The function skimage.color.guess_spatial_dimensions is deprecated and
    will be removed in 0.18 (#4031)

  • The argument bc in skimage.segmentation.active_contour is
    deprecated.

  • The function skimage.data.load is deprecated and will be removed in 0.18
    (#4061)

  • The function skimage.transform.match_histogram is deprecated in favor of
    skimage.exposure.match_histogram (#4107)

  • The parameter neighbors of skimage.morphology.convex_hull_object is
    deprecated.

  • The skimage.transform.randon_tranform function will convert input image
    of integer type to float by default in 0.18. To preserve current behaviour,
    set the new argument preserve_range to True. (#4131)

Documentation improvements

  • DOC: Improve the documentation of transform.resize with respect to the anti_aliasing_sigma parameter (#3911)
  • Fix URL for stain deconvolution reference (#3862)
  • Fix doc for denoise guassian (#3869)
  • DOC: various enhancements (cross links, gallery, ref...), mainly for corner detection (#3996)
  • [DOC] clarify that the inertia_tensor may be nD in documentation (#4013)
  • [DOC] How to test and write benchmarks (#4016)
  • Spellcheck @CONTRIBUTING.txt (#4008)
  • Spellcheck @doc/examples/segmentation/plot_watershed.py (#4009)
  • Spellcheck @doc/examples/segmentation/plot_thresholding.py (#4010)
  • Spellcheck @skimage/morphology/binary.py (#4011)
  • Spellcheck @skimage/morphology/extrema.py (#4012)
  • docs update for downscale_local_mean and N-dimensional images (#4079)
  • Remove fancy language from 0.15 release notes (#3827)
  • Documentation formatting / compilation fixes (#3838)
  • Remove duplicated section in INSTALL.txt. (#3876)
  • ENH: doc of ridge functions (#3933)
  • Fix docstring for Threshold Niblack (#3917)
  • adding docs to circle_perimeter_aa (#4155)
  • Update link to NumPy docstring standard in Contribution Guide (replaces #4191) (#4192)
  • DOC: Improve downscale_local_mean() docstring (#4180)
  • DOC: enhance the result display in ransac gallery example (#4109)
  • Gallery: use fstrings for better readability (#4110)
  • MNT: Document stacklevel parameter in contribution guide (#4066)
  • Fix minor typo (#3988)
  • MIN: docstring improvements in canny functions (#3920)
  • Minor docstring fixes for #4150 (#4184)
  • Fix full parameter description in compare_ssim (#3860)
  • State Bradley threshold equivalence in Niblack docstring (#3891)
  • Add plt.show() to example-code for consistency. (#3908)
  • CC0 is not equivalent to public domain. Fix the note of the horse image (#3931)
  • Update the joblib link in tutorial_parallelization.rst (#3943)
  • Fix plot_edge_filter.py references (#3946)
  • Add missing argument to docstring of PaintTool (#3970)
  • Improving documentation and tests for directional filters (#3956...
Read more

scikit-image 0.14.3

23 May 02:12
a90fd22
Compare
Choose a tag to compare

Announcement: scikit-image 0.14.3

As a reminder, 0.14.x is the final version of scikit-image with support for
Python 2.7, and will receive critical bug fixes until Jan 1, 2020. If you
are using Python 3.5 or later, you should upgrade to scikit-image 0.15.x.

This is a bugfix release, and contains the following changes from v0.14.2:

API Changes

  • morphology.local_maxima now returns a boolean array instead of uint8 (#3749,
    #3752)

Bug Fixes

  • _marching_cubes_lewiner_cy: mark char as signed (#3587, #3678)
  • Fix potential use of NULL pointer (#3696)
  • pypi: explicitly exclude Python 3.1, 3.2, and 3.3 (#3726)
  • Reduce default tolerance in threshold_li (#3622) (#3781)
  • Denoising functions now accept float32 images (#3449) (#3486) (#3880)

Other Pull Requests

  • BLD: pin cython's language_level (#3716)
  • Build tools: Upgrade xcode to 9.4 on v0.14.x branch (#3724)
  • Get rid of the requirements-parser dependency (#3534, #3727)
  • Add small galleries in the API (#2940, #3728)
  • Correctly ignore release notes auto-generated for docs (#3656, #3737)
  • Fix qt 5.12 pinning for 0.14.x branch. (#3744, #3753)
  • Minor fixes to documentation and testing infrastructure - backports #3870 and #3869 (#3881)
  • Set astropy minimum requirement to 1.2 to help the CIs. (#3767, #3770)
  • Avoid NumPy warning while stacking arrays. (#3768, #3771)
  • Fix human readable error message on a bad build. (#3223, #3790)
  • Unify LICENSE files for easier interpretation (#3791, #3792)
  • Documentation formatting / compilation fixes - Backport of #3838 to v0.14.x (#3885)
  • Fix build by using latest wheel package (scikit-image/scikit-image-wheels#10)

12 authors added to this release [alphabetical by first name]

  • Andrew Murray
  • Christoph Gohlke
  • Egor Panfilov
  • François Boulogne
  • Johannes Schönberger
  • Juan Nunez-Iglesias
  • Lars Grueter
  • Mark Harfouche
  • Matthew Bowden
  • Nehal J Wani
  • Nelle Varoquaux
  • Stefan van der Walt
  • Thomas A Caswell

... and, as always, a special mention to Matthias Bussonnier's Meeseeks Box,
which remains invaluable for our backports.

4 committers added to this release [alphabetical by first name or login]

  • Josh Warner
  • Juan Nunez-Iglesias
  • Mark Harfouche
  • Stefan van der Walt

5 reviewers added to this release [alphabetical by first name or login]

  • Egor Panfilov
  • François Boulogne
  • Juan Nunez-Iglesias
  • Mark Harfouche
  • Stefan van der Walt