<div dir="ltr">Hi All,<div><br><div>On behalf of the scikit-image<span class="gmail-il"></span> team I am pleased to announce that scikit-image 0.16.1 has been <span class="gmail-il">released</span> (0.16.0 was never released due to necessary last minute fixes). This <span class="gmail-il">release</span> contains many bugs fixes and new features!</div><div><br></div><div>Please note that we have dropped support for Python 3.5.</div><div><br></div><div>Announcement: scikit-image 0.16.1<br>=================================<br><br>We're happy to announce the release of scikit-image v0.16.1!<br><br>scikit-image is an image processing toolbox for SciPy that includes algorithms<br>for segmentation, geometric transformations, color space manipulation,<br>analysis, filtering, morphology, feature detection, and more.<br><br>For more information, examples, and documentation, please visit our website:<br><br><a href="https://scikit-image.org">https://scikit-image.org</a><br><br>Starting from this release, scikit-image will follow the recently<br>introduced NumPy deprecation policy, `NEP 29<br><<a href="https://github.com/numpy/numpy/blob/master/doc/neps/nep-0029-deprecation_policy.rst">https://github.com/numpy/numpy/blob/master/doc/neps/nep-0029-deprecation_policy.rst</a>>__`.<br>Accordingly, scikit-image 0.16 drops support for Python 3.5.<br>This release of scikit-image officially supports Python 3.6 and 3.7.<br><br>Special thanks to Matthias Bussonnier for `Frappuccino<br><<a href="https://github.com/Carreau/frappuccino">https://github.com/Carreau/frappuccino</a>>`__, which helped us catch all API<br>changes and nail down the APIs for new features.<br><br>New Features<br>------------<br>- New `skimage.evaluate` module containing simple metrics (mse,<br>  nrme, psd) and segmentation metrics (adapted rand error, variation of<br>  information) (#4025)<br>- n-dimensional TV-L1 optical flow algorithm for registration --<br>  `skimage.registration.optical_flow_tvl1` (#3983)<br>- Draw a line in an n-dimensional array -- `skimage.draw.line_nd`<br>  (#2043)<br>- 2D Farid & Simoncelli edge filters - `skimage.filters.farid`,<br>  `skimage.filters.farid_h`, and `skimage.filters.farid_v` (#3775)<br>- 2D majority voting filter assigning to each pixel the most commonly<br>  occurring value within its neighborhood -- `skimage.filters.majority`<br>  (#3836, #3839)<br>- Multi-level threshold "multi-Otsu" method, a thresholding algorithm<br>  used to separate the pixels of an input image into several classes by<br>  maximizing the variances between classes --<br>  `skimage.filters.threshold_multiotsu` (#3872, #4174)<br>- New example data -- `skimage.data.shepp_logan_phantom`, `skimage.data.colorwheel`,<br>  `skimage.data.brick`, `skimage.data.grass`, `skimage.data.roughwall`, `skimage.data.cell`<br>  (#3958, #3966)<br>- Compute and format image region properties as a table --<br>  `skimage.measure.regionprops_table` (#3959)<br>- Convert a polygon into a mask -- `skimage.draw.poly2mask`  (#3971, #3977)<br>- Visual image comparison helper `skimage.util.compare_images`,<br>  that returns an image showing the difference between two input images (#4089)<br>- `skimage.transform.warp_polar` to remap image into<br>  polar or log-polar coordinates. (#4097)<br><br>Improvements<br>------------<br><br>- RANSAC: new option to set initial samples selected for initialization (#2992)<br>- Better repr and str for `skimage.transform.ProjectiveTransform` (#3525,<br>  #3967)<br>- Better error messages and data type stability to<br>  `skimage.segmentation.relabel_sequential` (#3740)<br>- Improved compatibility with dask arrays in some image thresholding methods (#3823)<br>- `skimage.io.ImageCollection` can now receive lists of patterns (#3928)<br>- Speed up `skimage.feature.peak_local_max` (#3984)<br>- Better error message when incorrect value for keyword argument `kind` in<br>  `skimage.color.label2rgb` (#4055)<br>- All functions from `skimage.drawing` now supports multi-channel 2D images (#4134)<br><br>API Changes<br>-----------<br>- Deprecated subpackage ``skimage.novice`` has been removed.<br>- Default value of ``multichannel`` parameters has been set to False in<br>  `skimage.transform.rescale`, `skimage.transform.pyramid_reduce`,<br>  `skimage.transform.pyramid_laplacian`,<br>  `skimage.transform.pyramid_gaussian`, and<br>  `skimage.transform.pyramid_expand`. Guessing is no longer performed for 3D<br>  arrays.<br>- Deprecated argument ``visualise`` has been removed from<br>  `skimage.feature.hog`. Use ``visualize`` instead.¨<br>- `skimage.transform.seam_carve` has been completely removed from the<br>  library due to licensing restrictions.<br>- Parameter ``as_grey`` has been removed from `skimage.data.load` and<br>  `skimage.io.imread`. Use ``as_gray`` instead.<br>- Parameter ``min_size`` has been removed from<br>  `skimage.morphology.remove_small_holes`. Use ``area_threshold`` instead.<br>- Deprecated ``correct_mesh_orientation`` in `skimage.measure` has been<br>  removed.<br>- `skimage.measure._regionprops` has been completely switched to using<br>  row-column coordinates. Old x-y interface is not longer available.<br>- Default value of ``behavior`` parameter has been set to ``ndimage`` in<br>  `skimage.filters.median`.<br>- Parameter ``flatten`` in `skimage.io.imread` has been removed in<br>  favor of ``as_gray``.<br>- Parameters ``Hxx, Hxy, Hyy`` have been removed from<br>  `skimage.feature.corner.hessian_matrix_eigvals` in favor of ``H_elems``.<br>- Default value of ``order`` parameter has been set to ``rc`` in<br>  `skimage.feature.hessian_matrix`.<br>- ``skimage.util.img_as_*`` functions no longer raise precision and/or loss warnings.<br><br>Bugfixes<br>--------<br><br>- Corrected error with scales attribute in ORB.detect_and_extract (#2835)<br>  The scales attribute wasn't taking into account the mask, and thus was using<br>  an incorrect array size.<br>- Correct for bias in Inverse Randon Transform (`skimage.transform.irandon`) (#3067)<br>  Fixed by using the Ramp filter equation in the spatial domain as described<br>  in the reference<br>- Fix a rounding issue that caused  a rotated image to have a<br>  different size than the input (`skimage.transform.rotate`)  (#3173)<br>- RANSAC uses random subsets of the original data and not bootstraps. (#3901,<br>  #3915)<br>- Canny now produces the same output regardless of dtype (#3919)<br>- Geometry Transforms: avoid division by zero & some degenerate cases (#3926)<br>- Fixed float32 support in denoise_bilateral and denoise_tv_bregman (#3936)<br>- Fixed computation of Meijering filter and avoid ZeroDivisionError (#3957)<br>- Fixed `skimage.filters.threshold_li` to prevent being stuck on stationnary<br>  points, and thus at local minima or maxima (#3966)<br>- Edited `skimage.exposure.rescale_intensity` to return input image instead of<br>  nans when all 0 (#4015)<br>- Fixed `skimage.morphology.medial_axis`. A wrong indentation in Cython<br>  caused the function to not behave as intended. (#4060)<br>- Fixed `skimage.restoration.denoise_bilateral` by correcting the padding in<br>  the gaussian filter(#4080)<br>- Fixed `skimage.measure.find_contours` when input image contains NaN.<br>  Contours interesting NaN will be left open (#4150)<br>- Fixed `skimage.feature.blob_log` and `skimage.feature.blob_dog` for 3D<br>  images and anisotropic data (#4162)<br>- Fixed `skimage.exposure.adjust_gamma`, `skimage.exposure.adjust_log`,<br>  and `skimage.exposure.adjust_sigmoid` such that when provided with a 1 by<br>  1 ndarray, it returns 1 by 1 ndarrays and not single number floats (#4169)<br><br>Deprecations<br>------------<br>- Parameter ``neighbors`` in `skimage.measure.convex_hull_object` has been<br>  deprecated in favor of ``connectivity`` and will be removed in version 0.18.0.<br>- The following functions are deprecated in favor of the `skimage.metrics`<br>  module (#4025):<br><br>    - `skimage.measure.compare_mse`<br>    - `skimage.measure.compare_nrmse`<br>    - `skimage.measure.compare_psnr`<br>    - `skimage.measure.compare_ssim`<br><br>- The function `skimage.color.guess_spatial_dimensions` is deprecated and<br>  will be removed in 0.18 (#4031)<br>- The argument ``bc`` in `skimage.segmentation.active_contour` is<br>  deprecated.<br>- The function `skimage.data.load` is deprecated and will be removed in 0.18<br>  (#4061)<br>- The function `skimage.transform.match_histogram` is deprecated in favor of<br>  `skimage.exposure.match_histogram` (#4107)<br>- The parameter ``neighbors`` of `skimage.morphology.convex_hull_object` is<br>  deprecated. <br>- The `skimage.transform.randon_tranform` function will convert input image<br>  of integer type to float by default in 0.18. To preserve current behaviour,<br>  set the new argument ``preserve_range`` to True. (#4131)<br><br><br>Documentation improvements<br>--------------------------<br><br>- DOC: Improve the documentation of transform.resize with respect to the anti_aliasing_sigma parameter (#3911)<br>- Fix URL for stain deconvolution reference (#3862)<br>- Fix doc for denoise guassian (#3869)<br>- DOC: various enhancements (cross links, gallery, ref...), mainly for corner detection (#3996)<br>- [DOC] clarify that the inertia_tensor may be nD in documentation (#4013)<br>- [DOC] How to test and write benchmarks (#4016)<br>- Spellcheck @CONTRIBUTING.txt (#4008)<br>- Spellcheck @doc/examples/segmentation/plot_watershed.py (#4009)<br>- Spellcheck @doc/examples/segmentation/plot_thresholding.py (#4010)<br>- Spellcheck @skimage/morphology/binary.py (#4011)<br>- Spellcheck @skimage/morphology/extrema.py (#4012)<br>- docs update for downscale_local_mean and N-dimensional images (#4079)<br>- Remove fancy language from 0.15 release notes (#3827)<br>- Documentation formatting / compilation fixes (#3838)<br>- Remove duplicated section in INSTALL.txt. (#3876)<br>- ENH: doc of ridge functions (#3933)<br>- Fix docstring for Threshold Niblack (#3917)<br>- adding docs to circle_perimeter_aa (#4155)<br>- Update link to NumPy docstring standard in Contribution Guide (replaces #4191) (#4192)<br>- DOC: Improve downscale_local_mean() docstring (#4180)<br>- DOC: enhance the result display in ransac gallery example (#4109)<br>- Gallery: use fstrings for better readability (#4110)<br>- MNT: Document stacklevel parameter in contribution guide (#4066)<br>- Fix minor typo (#3988)<br>- MIN: docstring improvements in canny functions (#3920)<br>- Minor docstring fixes for #4150 (#4184)<br>- Fix `full` parameter description in compare_ssim (#3860)<br>- State Bradley threshold equivalence in Niblack docstring (#3891)<br>- Add plt.show() to example-code for consistency. (#3908)<br>- CC0 is not equivalent to public domain. Fix the note of the horse image (#3931)<br>- Update the joblib link in tutorial_parallelization.rst (#3943)<br>- Fix plot_edge_filter.py references (#3946)<br>- Add missing argument to docstring of PaintTool (#3970)<br>- Improving documentation and tests for directional filters (#3956)<br>- Added new thorough examples on the inner working of<br>  ``skimage.filters.threshold_li`` (#3966)<br>- matplotlib: remove interpolation=nearest, none in our examples (#4002)<br>- fix URL encoding for wikipedia references in filters.rank.entropy and filters.rank.shannon_entropy docstring (#4007)<br>- Fixup integer division in examples (#4032)<br>- Update the links the installation guide (#4118)<br>- Gallery hough line transform (#4124)<br>- Cross-linking between function documentation should now be much improved! (#4188)<br>- Better documentation of the ``num_peaks`` of `skimage.feature.corner_peaks` (#4195)<br><br><br>Other Pull Requests<br>-------------------<br>- Add benchmark suite for exposure module (#3312)<br>- Remove precision and sign loss warnings from ``skimage.util.img_as_`` (#3575)<br>- Propose SKIPs and add mission/vision/values, governance (#3585)<br>- Use user-installed tifffile if available (#3650)<br>- Simplify benchmarks pinnings (#3711)<br>- Add project_urls to setup for PyPI and other services (#3834)<br>- Address deprecations for 0.16 release (#3841)<br>- Followup deprecations for 0.16 (#3851)<br>- Build and test the docs in Azure (#3873)<br>- Pin numpydoc to pre-0.8 to fix dev docs formatting (#3893)<br>- Change all HTTP links to HTTPS (#3896)<br>- Skip extra deps on OSX (#3898)<br>- Add location for Sphinx 2.0.1 search results; clean up templates (#3899)<br>- Fix CSS styling of Sphinx 2.0.1 + numpydoc 0.9 rendered docs (#3900)<br>- Travis CI: The sudo: tag is deprcated in Travis (#4164)<br>- MNT Preparing the 0.16 release (#4204)<br>- FIX generate_release_note when contributor_set contains None (#4205)<br>- Specify that travis should use Ubuntu xenial (14.04) not trusty (16.04) (#4082)<br>- MNT: set stack level accordingly in lab2xyz (#4067)<br>- MNT: fixup stack level for filters ridges (#4068)<br>- MNT: remove unused import `deprecated` from filters.thresholding (#4069)<br>- MNT: Set stacklevel correctly in io matplotlib plugin (#4070)<br>- MNT: set stacklevel accordingly in felzenszwalb_cython (#4071)<br>- MNT: Set stacklevel accordingly in img_as_* (convert) (#4072)<br>- MNT: set stacklevel accordingly in util.shape (#4073)<br>- MNT: remove extreneous matplotlib warning (#4074)<br>- Suppress warnings in tests for viewer (#4017)<br>- Suppress warnings in test suite regarding measure.label (#4018)<br>- Suppress warnings in test_rank due to type conversion (#4019)<br>- Add todo item for imread plugin testing (#3907)<br>- Remove matplotlib agg warning when using the sphinx gallery. (#3897)<br>- Forward-port release notes for 0.14.4 (#4137)<br>- Add tests for pathological arrays in threshold_li (#4143)<br>- setup.py: Fail gracefully when NumPy is not installed (#4181)<br>- Drop Python 3.5 support (#4102)<br>- Force imageio reader to return NumPy arrays (#3837)<br>- Fixing connecting to GitHub with SSH info. (#3875)<br>- Small fix to an error message of `skimage.measure.regionprops` (#3884)<br>- Unify skeletonize and skeletonize 3D APIs (#3904)<br>- Add location for Sphinx 2.0.1 search results; clean up templates (#3910)<br>- Pin numpy version forward (#3925)<br>- Replacing pyfits with Astropy to read FITS (#3930)<br>- Add warning for future dtype kwarg removal (#3932)<br>- MAINT: cleanup regionprop add PYTHONOPTIMIZE=2 to travis array (#3934)<br>- Adding complexity and new tests for filters.threshold_multiotsu (#3935)<br>- Fixup dtype kwarg warning in certain image plugins (#3948)<br>- don't cast integer to float before using it as integer in numpy logspace (#3949)<br>- avoid low contrast image save in a doctest. (#3953)<br>- MAINT: Remove unused _convert_input from filters._gaussian (#4001)<br>- Set minimum version for imread so that it compiles from source on linux in test builds (#3960)<br>- Cleanup plugin utilization in data.load and testsuite (#3961)<br>- Select minimum imageio such that it is compatible with pathlib (#3969)<br>- Remove pytest-faulthandler from test dependencies (#3987)<br>- Fix tifffile and __array_function__ failures in our CI (#3992)<br>- MAINT: Do not use assert in code, raise an exception instead. (#4006)<br>- Enable packagers to disable failures on warnings. (#4021)<br>- Fix numpy 117 rc and dask in thresholding filters (#4022)<br>- silence r,c  warnings when property does not depend on r,c (#4027)<br>- remove warning filter, fix doc wrt r,c (#4028)<br>- Import Iterable from collections.abc (#4033)<br>- Import Iterable from collections.abc in vendored tifffile code (#4034)<br>- Correction of typos after #4025 (#4036)<br>- Rename internal function called assert_* -> check_* (#4037)<br>- Improve import time (#4039)<br>- Remove .meeseeksdev.yml (#4045)<br>- Fix mpl deprecation on grid() (#4049)<br>- Fix gallery after deprecation from #4025 (#4050)<br>- fix mpl future deprecation normed -> density (#4053)<br>- Add shape= to circle perimeter in hough_circle example (#4047)<br>- Critical: address internal warnings in test suite related to metrics 4025 (#4063)<br>- Use functools instead of a real function for the internal warn function (#4062)<br>- Test rank capture warnings in threadsafe manner (#4064)<br>- Make use of FFTs more consistent across the library (#4084)<br>- Fixup region props test (#4099)<br>- Turn single backquotes to double backquotes in filters (#4127)<br>- Refactor radon transform module (#4136)<br>- Fix broken import of rgb2gray in benchmark suite (#4176)<br>- Fix doc building issues with SKIPs (#4182)<br>- Remove several __future__ imports (#4198)<br>- Restore deprecated coordinates arg to regionprops (#4144)<br>- Refactor/optimize threshold_multiotsu (#4167)<br>- Remove Python2-specific code (#4170)<br>- `view_as_windows` incorrectly assumes that a contiguous array is needed  (#4171)<br>- Handle case in which NamedTemporaryFile fails (#4172)<br>- Fix incorrect resolution date on SKIP1 (#4183)<br>- API updates before 0.16 (#4187)<br>- Fix conversion to float32 dtype (#4193)<br><br><br>Contributors to this release<br>----------------------------<br><br>- Abhishek Arya<br>- Alexandre de Siqueira<br>- Alexis Mignon<br>- Anthony Carapetis<br>- Bastian Eichenberger<br>- Bharat Raghunathan<br>- Christian Clauss<br>- Clement Ng<br>- David Breuer<br>- David Haberthür<br>- Dominik Kutra<br>- Dominik Straub<br>- Egor Panfilov<br>- Emmanuelle Gouillart<br>- Etienne Landuré<br>- François Boulogne<br>- Genevieve Buckley<br>- Gregory R. Lee<br>- Hadrien Mary<br>- Hamdi Sahloul<br>- Holly Gibbs<br>- Huang-Wei Chang<br>- i3v (i3v)<br>- Jarrod Millman<br>- Jirka Borovec<br>- Johan Jeppsson<br>- Johannes Schönberger<br>- Jon Crall<br>- Josh Warner<br>- Juan Nunez-Iglesias<br>- Kaligule (Kaligule)<br>- kczimm (kczimm)<br>- Lars Grueter<br>- Shachar Ben Harim<br>- Luis F. de Figueiredo<br>- Mark Harfouche<br>- Mars Huang<br>- Dave Mellert<br>- Nelle Varoquaux<br>- Ollin Boer Bohan<br>- Patrick J Zager<br>- Riadh Fezzani<br>- Ryan Avery<br>- Srinath Kailasa<br>- Stefan van der Walt<br>- Stuart Berg<br>- Uwe Schmidt<br><br><br>Reviewers for this release<br>--------------------------<br><br>- Alexandre de Siqueira<br>- Anthony Carapetis<br>- Bastian Eichenberger<br>- Clement Ng<br>- David Breuer<br>- Egor Panfilov<br>- Emmanuelle Gouillart<br>- Etienne Landuré<br>- François Boulogne<br>- Genevieve Buckley<br>- Gregory R. Lee<br>- Hadrien Mary<br>- Hamdi Sahloul<br>- Holly Gibbs<br>- Jarrod Millman<br>- Jirka Borovec<br>- Johan Jeppsson<br>- Johannes Schönberger<br>- Jon Crall<br>- Josh Warner<br>- jrmarsha<br>- Juan Nunez-Iglesias<br>- kczimm<br>- Lars Grueter<br>- leGIT-bot<br>- Mark Harfouche<br>- Mars Huang<br>- Dave Mellert<br>- Paul Müller<br>- Phil Starkey<br>- Ralf Gommers<br>- Riadh Fezzani<br>- Ryan Avery<br>- Sebastian Berg<br>- Stefan van der Walt<br>- Uwe Schmidt<br></div></div></div>