447 lines
20 KiB
ReStructuredText
447 lines
20 KiB
ReStructuredText
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 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 been deprecated
|
|
and will be removed in version 0.20. (#4941, #4954)
|
|
- In ``skimage.morphology.selem.rectangle`` the arguments ``width`` and
|
|
``height`` have been deprecated. Use ``nrow`` and ``ncol`` instead.
|
|
- The explicit setting ``threshold_rel=0` was removed from the Examples of the
|
|
following docstrings: ``skimage.feature.BRIEF``,
|
|
``skimage.feature.corner_harris``, ``skimage.feature.corner_shi_tomasi``,
|
|
``skimage.feature.corner_foerstner``, ``skimage.feature.corner_fast``,
|
|
``skimage.feature.corner_subpix``, ``skimage.feature.corner_peaks``,
|
|
``skimage.feature.corner_orientations``, and
|
|
``skimage.feature._detect_octave``.
|
|
- In ``skimage.restoration._denoise``, the warning regarding
|
|
``rescale_sigma=None`` was removed.
|
|
- In ``skimage.restoration._cycle_spin``, the ``# doctest: +SKIP`` was removed.
|
|
|
|
Development process
|
|
-------------------
|
|
|
|
- Fix #3327: Add functionality for benchmark coverage (#3329)
|
|
- Release process notes have been improved. (#4228)
|
|
- ``pyproject.toml`` has been added to the sdist.
|
|
- Build and deploy dev/master documentation using GitHub Actions (#4852)
|
|
- Website now deploys itself (#4870)
|
|
- build doc on circle ci and link artifact (#4881)
|
|
- Benchmarks can now run on older scikit-image commits (#4891)
|
|
- Website analytics are tracked using plausible.io and can be visualized on
|
|
https://plausible.io/scikit-image.org (#4893)
|
|
- Artifacts for the documentation build are now found in each pull request
|
|
(#4881).
|
|
- Documentation source files can now be written in Markdown in addition to
|
|
ReST, thanks to ``myst`` (#4863).
|
|
- update trove classifiers and tests for Python 3.9 + fix pytest config (#5052)
|
|
- fix Azure Pipelines, pytest config, and trove classifiers for Python 3.8 (#5054)
|
|
- Moved our testing from Travis to GitHub Actions (#5074)
|
|
- We now build our wheels on GitHub Actions on the main repo using
|
|
cibuildwheel. Many thanks to the matplotlib and scikit-learn developers for
|
|
paving the way for us! (#5080)
|
|
- Disable Travis-CI builds (#5099, #5111)
|
|
- Improvements to CircleCI build: no parallelization and caching) (#5097, #5119)
|
|
|
|
Other Pull Requests
|
|
-------------------
|
|
|
|
- Manage iradon input and output data type (#4298)
|
|
- random walker: Display a warning when the probability is outsite [0,1] for a given tol (#4631)
|
|
- MAINT: remove unused cython file (#4633)
|
|
- Forget legacy data dir (#4662)
|
|
- Setup longdesc markdown and switch to 0.18dev (#4663)
|
|
- Optional pooch dependency (#4666)
|
|
- Adding new default values to functions on doc/examples/segmentation/plot_ncut (#4676)
|
|
- Reintroduced convert with a strong deprecation warning (#4681)
|
|
- In release notes, better describe skimage's relationship to ecosystem (#4689)
|
|
- Perform some todo tasks for 0.18 (#4690)
|
|
- Perform todo tasks for 0.17! (#4691)
|
|
- suppressing warnings from gallery examples (#4692)
|
|
- release notes for 0.17.2 (#4702)
|
|
- Fix gallery example mentioning deprecated argument (#4706)
|
|
- Specify the encoding of files opened in the setup phase (#4713)
|
|
- Remove duplicate fused type definition (#4724)
|
|
- Blacklist cython version 0.29.18 (#4730)
|
|
- Fix CI failures related to conversion of np.floating to dtype (#4731)
|
|
- Fix Ci failures related to array ragged input numpy deprecation (#4735)
|
|
- Unwrap decorators before resolving link to source (sphinx.ext.linkcode) (#4740)
|
|
- Fix plotting error in j-invariant denoising tutorial (#4744)
|
|
- Highlight all source lines with HTML doc "source" links (sphinx.ext.linkcode) (#4746)
|
|
- Turn checklist boxes into bullet points inside the pull request template (#4747)
|
|
- Deprecate (min_distance < 1) and (footprint.size < 2) in peak_local_max (#4753)
|
|
- forbid dask 2.17.0 to fix CI (#4758)
|
|
- try to fix ci which is broken because of pyqt5 last version (#4788)
|
|
- Remove unused variable in j invariant docs (#4792)
|
|
- include all md files in manifest.in (#4793)
|
|
- Remove additional "::" to make plot directive work. (#4798)
|
|
- Use optipng to compress images/thumbnails in our gallery (#4800)
|
|
- Fix runtime warning in blob.py (#4803)
|
|
- Add TODO task for sphinx-gallery>=0.9.0 to remove enforced thumbnail_size (#4804)
|
|
- Change SSIM code example to use real MSE (#4807)
|
|
- Let biomed example load image data with Pooch. (#4809)
|
|
- Tweak threshold_otsu error checking - closes #4811 (#4812)
|
|
- Ensure assert messages from Cython rank filters are informative (#4815)
|
|
- Simplify equivalent_diameter function (#4819)
|
|
- DOC: update subpackage descriptions (#4825)
|
|
- style: be explicit when stacking arrays (#4826)
|
|
- MAINT: import Iterable from collections.abc (Python 3.9 compatibility) (#4834)
|
|
- Silence several warnings in the test suite (#4837)
|
|
- Silence a few RuntimeWarnings in the test suite (#4838)
|
|
- handle color string mapping correctly (#4840)
|
|
- DOC: Autoformat docstrings in ``io.*.py`` (#4845)
|
|
- Update min req for pillow due to CVE-2020-10379 and co. (#4861)
|
|
- DOC: First pass at format conversion, rst -> myst (#4863)
|
|
- Fixed typo in comment (#4867)
|
|
- Alternative wording for install guide PR #4750 (#4871)
|
|
- DOC: Clarify condition on unique vertices returned by marching cubes (#4872)
|
|
- Remove unmaintained wiki page link in contributor guidelines (#4873)
|
|
- new matomo config (#4879)
|
|
- Fix Incorrect documentation for skimage.util.img_as_int Issue (#4888)
|
|
- Minor edit for proper doc rendering (#4897)
|
|
- Changelog back-log (#4898)
|
|
- minor refactoring in phase_cross_correlation (#4901)
|
|
- Fix draw.circle/disk deprecation message, fixes #4884 (#4908)
|
|
- Add versionchanged tag for new opt param in measure.find_contours() (#4909)
|
|
- Declare build dependencies (#4920)
|
|
- Replace words with racial connotations (#4921)
|
|
- Fixes to apply_parallel for functions working with multichannel data (#4927)
|
|
- Improve description of h_maxima and h_minima functions (#4928) (#4929)
|
|
- CI: Skip doc build for PYTHONOPTIMIZE=2 (#4930)
|
|
- MAINT: Remove custom fused type in skimage/morphology/_max_tree.pyx (#4931)
|
|
- MAINT: remove numpydoc option, issue fixed in numpydoc 1.0 (#4932)
|
|
- modify development version string to allow use with NumpyVersion (#4947)
|
|
- CI: Add verbose option to avoid travis timeout for OSX install script (#4956)
|
|
- Fix CI: ban sphinx-gallery 0.8.0 (#4960)
|
|
- Alias for data.chelsea: data.cat() (#4962)
|
|
- Fix typo. (#4963)
|
|
- CI: Use Travis wait improved to avoid timeout for OSX builds (#4965)
|
|
- Small enhancement in "Contour finding" example: Removed unused variable n (#4967)
|
|
- MAINT: remove unused imports (#4968)
|
|
- MAINT: Remove conditional import on networkx (#4970)
|
|
- forbid latest version of pyqt (#4973)
|
|
- Remove warnings/explicit settings on feature, restoration (#4974)
|
|
- Docstring improvements for label and regionprops_label (#4983)
|
|
- try to fix timeout problem with circleci (#4986)
|
|
- improve Euler number example (#4989)
|
|
- [website] Standardize Documentation index page. (#4990)
|
|
- Proofread INSTALL file. (#4991)
|
|
- Catch leftover typos in INSTALL file. (#4992)
|
|
- Let tifffile.imread handle additional keyword arguments (#4997)
|
|
- Update docstring for random_noise function (#5001)
|
|
- Update sphinx mapping for sklearn and numpy (#5003)
|
|
- Update docstring slic superpixels (#5014)
|
|
- Bump numpy versions to match scipy (kinda) (#5016)
|
|
- Fix usage of numpy.pad for old versions of numpy (#5017)
|
|
- [MRG] Update documentation to new data.camera() (#5018)
|
|
- bumped plotly requirement for docs (#5021)
|
|
- Fix IndexError when calling hough_line_peaks with too few angles (#5024)
|
|
- Code simplification after latest numpy bump (#5027)
|
|
- Fixes broken link to CODE_OF_CONDUCT.md (#5030)
|
|
- Specify whether core dev should merge right after second approving review. (#5040)
|
|
- Update pytest configuration to include ``test_`` functions (#5044)
|
|
- MAINT Build fix for pyodide (#5059)
|
|
- reduce OSX build time so that Travis is happy (#5067)
|
|
- DOC: document the normalized kernel in prewitt_h, prewitt_v (#5076)
|
|
- Some minor tweaks to CI (#5079)
|
|
- removed usage of numpy's private functions from util.arraycrop (#5081)
|
|
- peak_local_max: remove deprecated `indices` argument from examples (#5082)
|
|
- Replace np.bool, np.float, and np.int with bool, float, and int (#5103, #5108)
|
|
- change plausible script to track outbound links (#5115, #5123)
|
|
- Remove Python 3.6 support (#5117, #5125)
|
|
- Optimize ensure_spacing (#5062, #5135)
|
|
|
|
|
|
52 authors added to this release [alphabetical by first name or login]
|
|
----------------------------------------------------------------------
|
|
|
|
A warm thank you to all contributors who added to this release. A fraction of contributors were first-time contributors to open source and a much larger fraction first-time contributors to scikit-image. It's a great feeling for maintainers to welcome new contributors, and the diversity of scikit-image contributors is surely a big strength of the package.
|
|
|
|
- Abhishek Arya
|
|
- Abhishek Patil
|
|
- Alexandre de Siqueira
|
|
- Ben Nathanson
|
|
- Cameron Blocker
|
|
- Chris Roat
|
|
- Christoph Gohlke
|
|
- Clement Ng
|
|
- Corey Harris
|
|
- David McMahon
|
|
- David Mellert
|
|
- Devi Sandeep
|
|
- Egor Panfilov
|
|
- Emmanuelle Gouillart
|
|
- François Boulogne
|
|
- Genevieve Buckley
|
|
- Gregory R. Lee
|
|
- Harry Kwon
|
|
- iofall (cedarfall)
|
|
- Jan Funke
|
|
- Juan Nunez-Iglesias
|
|
- Julian Gilbey
|
|
- Julien Jerphanion
|
|
- kalpana
|
|
- kolibril13 (kolibril13)
|
|
- Kushaan Gupta
|
|
- Lars Grüter
|
|
- Marianne Corvellec
|
|
- Mark Harfouche
|
|
- Marvin Albert
|
|
- Matthias Bussonnier
|
|
- Max Frei
|
|
- Nathan
|
|
- neeraj3029 (neeraj3029)
|
|
- Nick
|
|
- notmatthancock (matt)
|
|
- OGordon100 (OGordon100)
|
|
- Owen Solberg
|
|
- Riadh Fezzani
|
|
- Robert Haase
|
|
- Roman Yurchak
|
|
- Ronak Sharma
|
|
- Ross Barnowski
|
|
- Ruby Werman
|
|
- ryanlu41 (ryanlu41)
|
|
- Sebastian Wallkötter
|
|
- Shyam Saladi
|
|
- Stefan van der Walt
|
|
- Terence Honles
|
|
- Volker Hilsenstein
|
|
- Wendy Mak
|
|
- Yogendra Sharma
|
|
|
|
41 reviewers added to this release [alphabetical by first name or login]
|
|
------------------------------------------------------------------------
|
|
|
|
- Abhishek Arya
|
|
- Abhishek Patil
|
|
- Alexandre de Siqueira
|
|
- Ben Nathanson
|
|
- Chris Roat
|
|
- Clement Ng
|
|
- Corey Harris
|
|
- Cris Luengo
|
|
- David Mellert
|
|
- Egor Panfilov
|
|
- Emmanuelle Gouillart
|
|
- François Boulogne
|
|
- Gregory R. Lee
|
|
- Harry Kwon
|
|
- Jan Funke
|
|
- Juan Nunez-Iglesias
|
|
- Julien Jerphanion
|
|
- kalpana
|
|
- Kushaan Gupta
|
|
- Lars Grüter
|
|
- Marianne Corvellec
|
|
- Mark Harfouche
|
|
- Marvin Albert
|
|
- neeraj3029
|
|
- Nick
|
|
- OGordon100
|
|
- Riadh Fezzani
|
|
- Robert Haase
|
|
- Ross Barnowski
|
|
- Ruby Werman
|
|
- ryanlu41
|
|
- Scott Trinkle
|
|
- Sebastian Wallkötter
|
|
- Stanley_Wang
|
|
- Stefan van der Walt
|
|
- Steven Brown
|
|
- Stuart Mumford
|
|
- Terence Honles
|
|
- Volker Hilsenstein
|
|
- Wendy Mak
|