doc/source/release_notes/release_0.20.rst
scikit-image is an image processing toolbox built on 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
With this release, many of the functions in skimage.measure now support
anisotropic images with different voxel spacings.
Many performance improvements were made, such as support for footprint
decomposition in skimage.morphology
Four new gallery examples were added to the documentation, including the new interactive example "Track solidification of a metallic alloy".
This release completes the transition to a more flexible
channel_axis parameter for indicating multi-channel images, and
includes several other deprecations that make the API more consistent and
expressive.
Finally, in preparation for the removal of distutils in the upcoming
Python 3.12 release, we replaced our build system with meson and a
static pyproject.toml specification.
This release supports Python 3.8–3.11.
skimage.morphology.
By decomposing a footprint into several smaller ones, morphological operations can potentially be sped up.
The decomposed footprint can be generated with the new decomposition parameter of the functions rectangle, diamond, disk, cube, octahedron, ball, and octagon in skimage.morphology.
The footprint parameter of the functions binary_erosion, binary_dilation, binary_opening, binary_closing, erosion, dilation, opening, closing, white_tophat, and black_tophat in skimage.morphology now accepts a sequence of 2-element tuples (footprint_i, num_iter_i) where each entry, i, of the sequence contains a footprint and the number of times it should be iteratively applied. This is the form produced by the footprint decompositions mentioned above
(#5482 <https://github.com/scikit-image/scikit-image/pull/5482>, #6151 <https://github.com/scikit-image/scikit-image/pull/6151>).spacing of the following functions in skimage.measure: regionprops, regionprops_table, moments, moments_central, moments_normalized, centroid, inertia_tensor, and inertia_tensor_eigvals.
Voxel spacing is taken into account for the following existing properties in skimage.measure.regionprops: area, area_bbox, centroid, area_convex, extent, feret_diameter_max, area_filled, inertia_tensor, moments, moments_central, moments_hu, moments_normalized, perimeter, perimeter_crofton, solidity, moments_weighted_central, and moments_weighted_hu.
The new properties num_pixels and coords_scaled are available as well.
See the respective docstrings for more details
(#6296 <https://github.com/scikit-image/scikit-image/pull/6296>_).isotropic_closing, isotropic_dilation, isotropic_erosion, and isotropic_opening in skimage.morphology.
These functions return the same results as their non-isotropic counterparts but perform faster for large circular structuring elements
(#6492 <https://github.com/scikit-image/scikit-image/pull/6492>_).pearson_corr_coeff, manders_coloc_coeff, manders_overlap_coeff and intersection_coeff to skimage.measure
(#6189 <https://github.com/scikit-image/scikit-image/pull/6189>_).skimage.metrics.hausdorff_distance via the new parameter method.
The MHD can be more robust against outliers than the directed Hausdorff Distance (HD)
(#5581 <https://github.com/scikit-image/scikit-image/pull/5581>_).skimage.data.protein_transport and skimage.data.nickel_solidification
(#6087 <https://github.com/scikit-image/scikit-image/pull/6087>_).use_gaussian_derivatives to skimage.feature.hessian_matrix which allows the computation of the Hessian matrix by convolving with Gaussian derivatives
(#6149 <https://github.com/scikit-image/scikit-image/pull/6149>_).squared_butterworth and npad to skimage.filters.butterworth, which support traditional or squared filtering and edge padding, respectively
(#6251 <https://github.com/scikit-image/scikit-image/pull/6251>_).skimage.io.ImageCollection from a load_pattern with an arbitrary sequence as long as a matching load_func is provided
(#6276 <https://github.com/scikit-image/scikit-image/pull/6276>_).alpha to skimage.metrics.adapted_rand_error allowing control over the weight given to precision and recall
(#6472 <https://github.com/scikit-image/scikit-image/pull/6472>_).binarize to skimage.measure.grid_points_in_poly to optionally return labels that tell whether a pixel is inside, outside, or on the border of the polygon
(#6515 <https://github.com/scikit-image/scikit-image/pull/6515>_).include_borders to skimage.measure.convex_hull_image to optionally exclude vertices or edges from the final hull mask
(#6515 <https://github.com/scikit-image/scikit-image/pull/6515>_).offsets to skimage.measure.regionprops that optionally allows specifying the coordinates of the origin and affects the properties coords_scaled and coords
(#3706 <https://github.com/scikit-image/scikit-image/pull/3706>_).disambiguate to skimage.registration.phase_cross_correlation to optionally disambiguate periodic shifts
(#6617 <https://github.com/scikit-image/scikit-image/pull/6617>_).skimage.filters.farid (Farid & Simoncelli filter)
(#6257 <https://github.com/scikit-image/scikit-image/pull/6257>_).skimage.restoration.wiener
(#6454 <https://github.com/scikit-image/scikit-image/pull/6454>_).rotation and translation in skimage.transform.EuclideanTransform as well as for skimage.transform.SimilarityTransform.scale
(#6367 <https://github.com/scikit-image/scikit-image/pull/6367>_).skimage.morphology.flood_fill
(#6236 <https://github.com/scikit-image/scikit-image/pull/6236>_).AffineTransform, EssentialMatrixTransform, EuclideanTransform, FundamentalMatrixTransform, GeometricTransform, PiecewiseAffineTransform, PolynomialTransform, ProjectiveTransform, SimilarityTransform, estimate_transform, and matrix_transform in skimage.transform
(#6270 <https://github.com/scikit-image/scikit-image/pull/6270>_).Performance ^^^^^^^^^^^
skimage.feature.canny by porting a part of its implementation to Cython
(#6387 <https://github.com/scikit-image/scikit-image/pull/6387>_).skimage.feature.hessian_matrix_eigvals and 2D skimage.feature.structure_tensor_eigenvalues
(#6441 <https://github.com/scikit-image/scikit-image/pull/6441>_).skimage.measure.moments_central by avoiding redundant computations
(#6188 <https://github.com/scikit-image/scikit-image/pull/6188>_).skimage.io by loading the matplotlib plugin only when required
(#6550 <https://github.com/scikit-image/scikit-image/pull/6550>_).skimage.measure.ransac which decrease the number of iterations
(#6046 <https://github.com/scikit-image/scikit-image/pull/6046>_).skimage.exposure.match_histograms.
(#6209 <https://github.com/scikit-image/scikit-image/pull/6209>, #6354 <https://github.com/scikit-image/scikit-image/pull/6354>).meijering, sato, frangi, and hessian in skimage.filters
(#6509 <https://github.com/scikit-image/scikit-image/pull/6509>_).blob_dog, blob_log, and blob_doh in skimage.feature
(#6597 <https://github.com/scikit-image/scikit-image/pull/6597>_).skimage.morphology.reconstruction which allows to operate the function with higher precision or on larger arrays.
Previously, int32 was used.
(#6342 <https://github.com/scikit-image/scikit-image/pull/6342>_).skimage.filters.rank_order which allows to operate the function with higher precision or on larger arrays.
Previously, the returned labels and original_values were always of type uint32.
(#6342 <https://github.com/scikit-image/scikit-image/pull/6342>_).#6679 <https://github.com/scikit-image/scikit-image/pull/6679>_).skimage.filters.meijering, skimage.filters.sato,
skimage.filters.frangi, and skimage.filters.hessian to match the published algorithms more closely.
This change is backward incompatible and will lead to different output values compared to the previous implementation.
The Hessian matrix calculation is now done more accurately.
The filters will now be correctly set to zero whenever one of the Hessian eigenvalues has a sign which is incompatible with a ridge of the desired polarity.
The gamma constant of the Frangi filter is now set adaptively based on the maximum Hessian norm
(#6446 <https://github.com/scikit-image/scikit-image/pull/6446>_).skimage.future.graph to skimage.graph. This affects cut_threshold, cut_normalized, merge_hierarchical, rag_mean_color, RAG, show_rag, and rag_boundary
(#6674 <https://github.com/scikit-image/scikit-image/pull/6674>_).False in skimage.measure.LineModelND.estimate instead of raising an error if the model is under-determined
(#6453 <https://github.com/scikit-image/scikit-image/pull/6453>_).False in skimage.measure.CircleModel.estimate instead of warning if the model is under-determined
(#6453 <https://github.com/scikit-image/scikit-image/pull/6453>_).skimage.filters.inverse to skimage.filters.inverse_filter.
skimage.filters.inverse is deprecated and will be removed in the next release
(#6418 <https://github.com/scikit-image/scikit-image/pull/6418>, #6701 <https://github.com/scikit-image/scikit-image/pull/6701>).numpy>=1.20
(#6565 <https://github.com/scikit-image/scikit-image/pull/6565>_).scipy>=1.8
(#6564 <https://github.com/scikit-image/scikit-image/pull/6564>_).networkx>=2.8
(#6564 <https://github.com/scikit-image/scikit-image/pull/6564>_).pillow>=9.0.1
(#6402 <https://github.com/scikit-image/scikit-image/pull/6402>_).setuptools 67
(#6754 <https://github.com/scikit-image/scikit-image/pull/6754>_).matplotlib>=3.3
(#6383 <https://github.com/scikit-image/scikit-image/pull/6383>_).skimage.feature.local_binary_pattern.
Applying the function to floating-point images may give unexpected results when small numerical differences between adjacent pixels are present
(#6272 <https://github.com/scikit-image/scikit-image/pull/6272>_).skimage.registration.phase_cross_correlation returns only the shift vector.
Starting with the next release this function will always return a tuple of three (shift vector, error, phase difference).
Use return_error="always" to silence this warning and switch to this new behavior
(#6543 <https://github.com/scikit-image/scikit-image/pull/6543>_).skimage.metrics.structural_similarity, if data_range is not specified in case of floating point data
(#6612 <https://github.com/scikit-image/scikit-image/pull/6612>_).skimage.filters.gaussian and a warning is emitted if the parameter channel_axis is not set explicitly
(#6583 <https://github.com/scikit-image/scikit-image/pull/6583>_).skimage.viewer which was scheduled for removal in the postponed version 1.0
(#6160 <https://github.com/scikit-image/scikit-image/pull/6160>_).indices from skimage.feature.peak_local_max
(#6161 <https://github.com/scikit-image/scikit-image/pull/6161>_).skimage.feature.structure_tensor_eigvals (it was replaced by skimage.feature.structure_tensor_eigenvalues) and change the default parameter value in skimage.feature.structure_tensor to order="rc"
(#6162 <https://github.com/scikit-image/scikit-image/pull/6162>_).array in favor of image from skimage.measure.find_contours
(#6163 <https://github.com/scikit-image/scikit-image/pull/6163>_).skivi console script
(#6164 <https://github.com/scikit-image/scikit-image/pull/6164>_).method='_lorensen' in skimage.measure.marching_cubes
(#6230 <https://github.com/scikit-image/scikit-image/pull/6230>_).multichannel; use channel_axis instead.
This affects skimage.draw.random_shapes, skimage.exposure.match_histograms, skimage.feature.multiscale_basic_features, skimage.feature.hog, skimage.feature.difference_of_gaussians, skimage.filters.unsharp_mask, and skimage.metrics.structural_similarity.
In skimage.restoration, this affects cycle_spin, denoise_bilateral, denoise_tv_bregman, denoise_tv_chambolle, denoise_wavelet, estimate_sigma, inpaint_biharmonic, and denoise_nl_means.
In skimage.segmentation, this affects felzenszwalb, random_walker, and slic.
In skimage.transform, this affects rescale, warp_polar, pyramid_reduce, pyramid_expand, pyramid_gaussian, and pyramid_laplacian.
In skimage.util, this affects montage and apply_parallel
(#6583 <https://github.com/scikit-image/scikit-image/pull/6583>_).selem; use footprint instead.
In skimage.filters, this affects median, autolevel_percentile, gradient_percentile, mean_percentile, subtract_mean_percentile, enhance_contrast_percentile, percentile, pop_percentile, sum_percentile, threshold_percentile, mean_bilateral, pop_bilateral, sum_bilateral, autolevel, equalize, gradient, maximum, mean, geometric_mean, subtract_mean, median, minimum, modal, enhance_contrast, pop, sum, threshold, noise_filter, entropy, otsu, windowed_histogram, and majority.
In skimage.morphology, this affects flood_fill, flood, binary_erosion, binary_dilation, binary_opening, binary_closing, h_maxima, h_minima, local_maxima, local_minima, erosion, dilation, opening, closing, white_tophat, black_tophat, and reconstruction
(#6583 <https://github.com/scikit-image/scikit-image/pull/6583>_).max_iter from skimage.filters.threshold_minimum, skimage.morphology.thin, and skimage.segmentation.chan_vese;
use max_num_iter instead
(#6583 <https://github.com/scikit-image/scikit-image/pull/6583>_).max_iterations from skimage.segmentation.active_contour;
use max_num_iter instead
(#6583 <https://github.com/scikit-image/scikit-image/pull/6583>_).input from skimage.measure.label;
use label_image instead
(#6583 <https://github.com/scikit-image/scikit-image/pull/6583>_).coordinates from skimage.measure.regionprops and skimage.segmentation.active_contour
(#6583 <https://github.com/scikit-image/scikit-image/pull/6583>_).neighbourhood from skimage.measure.perimeter;
use neighborhood instead
(#6583 <https://github.com/scikit-image/scikit-image/pull/6583>_).height and width from skimage.morphology.rectangle;
use ncols and nrows instead
(#6583 <https://github.com/scikit-image/scikit-image/pull/6583>_).in_place from skimage.morphology.remove_small_objects, skimage.morphology.remove_small_holes, and skimage.segmentation.clear_border; use out instead
(#6583 <https://github.com/scikit-image/scikit-image/pull/6583>_).iterations from skimage.restoration.richardson_lucy, skimage.segmentation.morphological_chan_vese, and skimage.segmentation.morphological_geodesic_active_contour; use num_iter instead
(#6583 <https://github.com/scikit-image/scikit-image/pull/6583>_)."min_iter" and "max_iter" in skimage.restoration.unsupervised_wiener's parameter user_params; use "min_num_iter" and "max_num_iter" instead
(#6583 <https://github.com/scikit-image/scikit-image/pull/6583>_).greycomatrix and greycoprops from skimage.feature
(#6583 <https://github.com/scikit-image/scikit-image/pull/6583>_).skimage.morphology.grey and skimage.morphology.greyreconstruct; use skimage.morphology instead
(#6583 <https://github.com/scikit-image/scikit-image/pull/6583>_).skimage.morphology.selem; use skimage.morphology.footprints instead
(#6583 <https://github.com/scikit-image/scikit-image/pull/6583>_).skimage.future.graph.ncut (it was replaced by skimage.graph.cut_normalized)
(#6685 <https://github.com/scikit-image/scikit-image/pull/6685>_).skimage.exposure.adjust_gamma
(#6285 <https://github.com/scikit-image/scikit-image/pull/6285>_).skimage.draw.rectangle to int even if the input coordinates use float.
This fix ensures that the output can be used for indexing similar to other draw functions
(#6501 <https://github.com/scikit-image/scikit-image/pull/6501>_).skimage.feature.peak_local_max if the peak value is smaller 0
(#6502 <https://github.com/scikit-image/scikit-image/pull/6502>_).skimage.transform.resize by default when using nearest neighbor interpolation (order == 0) with an integer input data type
(#6503 <https://github.com/scikit-image/scikit-image/pull/6503>_).skimage.segmentation.slic.
Previously, the mask was ignored when rescaling the image to make choice of compactness insensitive to the image values.
The new behavior makes it possible to mask values such as numpy.nan or numpy.infinity.
Additionally, raise an error if the input image has two dimensions and a channel_axis is specified - indicating that the image is multi-channel
(#6525 <https://github.com/scikit-image/scikit-image/pull/6525>_).exclude_border in skimage.feature.blog_dog and skimage.feature.blob_log
(#6533 <https://github.com/scikit-image/scikit-image/pull/6533>_).skimage.segmentation.random_walker if no seeds are provided as positive values in the parameter labels
(#6562 <https://github.com/scikit-image/scikit-image/pull/6562>_).skimage.measure.regionprops when the required intensity_image is unavailable
(#6584 <https://github.com/scikit-image/scikit-image/pull/6584>_).skimage.feature.ORB.detect_and_extract by breaking early if the octave image is too small
(#6590 <https://github.com/scikit-image/scikit-image/pull/6590>_).skimage.restoration.inpaint_biharmonic for images with Fortran-ordered memory layout
(#6263 <https://github.com/scikit-image/scikit-image/pull/6263>_).skimage.filters.gaussian (this behavior is deprecated, see new deprecations)
(#6583 <https://github.com/scikit-image/scikit-image/pull/6583>_).skimage.color.lab2rgb
(#6616 <https://github.com/scikit-image/scikit-image/pull/6616>_).skimage.feature.hessian_matrix and raise an error if order='xy' is requested for images with more than 2 dimensions
(#6624 <https://github.com/scikit-image/scikit-image/pull/6624>_).skimage.filters.rank that did
not mention that 2D images are also supported
(#6666 <https://github.com/scikit-image/scikit-image/pull/6666>_).skimage.graph.RAG.merge_nodes
(#6692 <https://github.com/scikit-image/scikit-image/pull/6692>_).heappush function
(#6727 <https://github.com/scikit-image/scikit-image/pull/6727>_).Cascade.detect_multi_scale
(#6728 <https://github.com/scikit-image/scikit-image/pull/6728>_).New ^^^
#6151 <https://github.com/scikit-image/scikit-image/pull/6151>_).skimage.filters.butterworth
(#6251 <https://github.com/scikit-image/scikit-image/pull/6251>_).#6431 <https://github.com/scikit-image/scikit-image/pull/6431>_).#6469 <https://github.com/scikit-image/scikit-image/pull/6469>_).#6189 <https://github.com/scikit-image/scikit-image/pull/6189>_)..github/SUPPORT.md) to help users from GitHub find appropriate support resources
(#6171 <https://github.com/scikit-image/scikit-image/pull/6171>, #6575 <https://github.com/scikit-image/scikit-image/pull/6575>).CITATION.bib to repository to help with citing scikit-image
(#6195 <https://github.com/scikit-image/scikit-image/pull/6195>_).dev.py
(#6600 <https://github.com/scikit-image/scikit-image/pull/6600>_).Improved & updated ^^^^^^^^^^^^^^^^^^
#6200 <https://github.com/scikit-image/scikit-image/pull/6200>, #6121 <https://github.com/scikit-image/scikit-image/pull/6121>).#6293 <https://github.com/scikit-image/scikit-image/pull/6293>_).#4953 <https://github.com/scikit-image/scikit-image/pull/4953>_).weights term and rewrite docstrings of skimage.restoration.denoise_tv_bregman and skimage.restoration.denoise_tv_chambolle
(#6544 <https://github.com/scikit-image/scikit-image/pull/6544>_).skimage.io.MultiImage more precisely in its docstring
(#6290 <https://github.com/scikit-image/scikit-image/pull/6290>, #6292 <https://github.com/scikit-image/scikit-image/pull/6292>).watershed_line parameter will not catch borders between adjacent marker regions in skimage.segmentation.watershed
(#6280 <https://github.com/scikit-image/scikit-image/pull/6280>_).skimage.morphology.skeletonize accepts an image of any input type
(#6322 <https://github.com/scikit-image/scikit-image/pull/6322>_).skimage.data
(#6298 <https://github.com/scikit-image/scikit-image/pull/6298>, #6300 <https://github.com/scikit-image/scikit-image/pull/6300>, #6301 <https://github.com/scikit-image/scikit-image/pull/6301>_).balance in the docstring example of skimage.restoration.wiener for a less blurry result
(#6265 <https://github.com/scikit-image/scikit-image/pull/6265>_).skimage.io.imread and skimage.io.imsave
(#6361 <https://github.com/scikit-image/scikit-image/pull/6361>_).skimage.filters.threshold_multiotsu if the discretized image cannot be thresholded
(#6375 <https://github.com/scikit-image/scikit-image/pull/6375>_).#6396 <https://github.com/scikit-image/scikit-image/pull/6396>_).grey* to skimage.feature.graymatrix and skimage.feature.graycoprops in the release 0.19
(#6420 <https://github.com/scikit-image/scikit-image/pull/6420>_).#6488 <https://github.com/scikit-image/scikit-image/pull/6488>_).#6535 <https://github.com/scikit-image/scikit-image/pull/6535>_).#6554 <https://github.com/scikit-image/scikit-image/pull/6554>, #6576 <https://github.com/scikit-image/scikit-image/pull/6576>).#6208 <https://github.com/scikit-image/scikit-image/pull/6208>_).#6578 <https://github.com/scikit-image/scikit-image/pull/6578>_).skimage.metricts.structural_similarity
(#6595 <https://github.com/scikit-image/scikit-image/pull/6595>_).imshow in gallery example "Measure fluorescence intensity at the nuclear envelope"
(#6599 <https://github.com/scikit-image/scikit-image/pull/6599>_).scikit-image[data] and pooch in INSTALL.rst
(#6619 <https://github.com/scikit-image/scikit-image/pull/6619>_).#6672 <https://github.com/scikit-image/scikit-image/pull/6672>_).lab2xyz, rgb2lab, lab2lch, and lch2lab in skimage.color
(#6688 <https://github.com/scikit-image/scikit-image/pull/6688>, #6697 <https://github.com/scikit-image/scikit-image/pull/6697>, #6719 <https://github.com/scikit-image/scikit-image/pull/6719>_).skimage.feature.local_binary_pattern
(#6736 <https://github.com/scikit-image/scikit-image/pull/6736>_).Fixes, spelling & minor tweaks ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
skimage.measure.marching_cubes in gallery example "Marching Cubes"
(#6377 <https://github.com/scikit-image/scikit-image/pull/6377>_).#6557 <https://github.com/scikit-image/scikit-image/pull/6557>, #6560 <https://github.com/scikit-image/scikit-image/pull/6560>).connectivity parameter in the docstring of skimage.morphology.flood
(#6534 <https://github.com/scikit-image/scikit-image/pull/6534>_).skimage.metrics.hausdorff_distance
(#6203 <https://github.com/scikit-image/scikit-image/pull/6203>_).skimage.measure.moments_hu
(#6016 <https://github.com/scikit-image/scikit-image/pull/6016>_).skimage.util.random_noise
(#6532 <https://github.com/scikit-image/scikit-image/pull/6532>_).#6445 <https://github.com/scikit-image/scikit-image/pull/6445>_).skimage.filters.sobel
(#6474 <https://github.com/scikit-image/scikit-image/pull/6474>_).#6204 <https://github.com/scikit-image/scikit-image/pull/6204>_).#6419 <https://github.com/scikit-image/scikit-image/pull/6419>_).skimage.morphology.footprint_from_sequence in the public API documentation
(#6555 <https://github.com/scikit-image/scikit-image/pull/6555>_).skimage.exposure.rescale_intensity
(#6582 <https://github.com/scikit-image/scikit-image/pull/6582>_).git:// connection protocol and remove references to it
(#6201 <https://github.com/scikit-image/scikit-image/pull/6201>, #6283 <https://github.com/scikit-image/scikit-image/pull/6283>).#6255 <https://github.com/scikit-image/scikit-image/pull/6255>_).doc/source/user_guide/getting_help.rst
(#6575 <https://github.com/scikit-image/scikit-image/pull/6575>_).#6421 <https://github.com/scikit-image/scikit-image/pull/6421>, #6422 <https://github.com/scikit-image/scikit-image/pull/6422>).api_changes.rst with release_dev.rst
(#6495 <https://github.com/scikit-image/scikit-image/pull/6495>_).#6508 <https://github.com/scikit-image/scikit-image/pull/6508>_).skimage.measure.regionprops
(#6545 <https://github.com/scikit-image/scikit-image/pull/6545>_).#6537 <https://github.com/scikit-image/scikit-image/pull/6537>_).#6549 <https://github.com/scikit-image/scikit-image/pull/6549>_).skimage.morphology.isotropic_ functions
(#6628 <https://github.com/scikit-image/scikit-image/pull/6628>_).plot_thresholding.py
(#6644 <https://github.com/scikit-image/scikit-image/pull/6644>_).plot_equalize
(#6650 <https://github.com/scikit-image/scikit-image/pull/6650>_).plot_rank_filters
(#6652 <https://github.com/scikit-image/scikit-image/pull/6652>_).in plot_log_gamma.py
(#6655 <https://github.com/scikit-image/scikit-image/pull/6655>_).#6656 <https://github.com/scikit-image/scikit-image/pull/6656>_).#6675 <https://github.com/scikit-image/scikit-image/pull/6675>_).skimage.data.coffee
(#6740 <https://github.com/scikit-image/scikit-image/pull/6740>_).skimage.graph.merge_nodes
(#6741 <https://github.com/scikit-image/scikit-image/pull/6741>_).skimage.metrics.variation_of_information
(#6768 <https://github.com/scikit-image/scikit-image/pull/6768>_).Governance & planning ^^^^^^^^^^^^^^^^^^^^^
#6339 <https://github.com/scikit-image/scikit-image/pull/6339>, #6353 <https://github.com/scikit-image/scikit-image/pull/6353>).Maintenance ^^^^^^^^^^^
#6556 <https://github.com/scikit-image/scikit-image/pull/6556>, #6766 <https://github.com/scikit-image/scikit-image/pull/6766>).#6536 <https://github.com/scikit-image/scikit-image/pull/6536>_).cnp.float32_t and cnp.float64_t over float and double in Cython code
(#6303 <https://github.com/scikit-image/scikit-image/pull/6303>_).skimage/measure/mc_meta folder into tools/precompute/ folder to avoid its unnecessary distribution to users
(#6294 <https://github.com/scikit-image/scikit-image/pull/6294>_).getLutNames in tools/precompute/mc_meta/createluts.py
(#6294 <https://github.com/scikit-image/scikit-image/pull/6294>_).#6297 <https://github.com/scikit-image/scikit-image/pull/6297>_).#6302 <https://github.com/scikit-image/scikit-image/pull/6302>_).'python_to_notebook' in doc/ext/notebook_doc.py
(#6307 <https://github.com/scikit-image/scikit-image/pull/6307>_).skimage.measure.tests.test_moments
(#6323 <https://github.com/scikit-image/scikit-image/pull/6323>_).skimage.morphology.skeletonize and update code style and tests
(#6327 <https://github.com/scikit-image/scikit-image/pull/6327>_)._probabilistic_hough_line
(#6373 <https://github.com/scikit-image/scikit-image/pull/6373>_).skimage.measure._regionprops
(#6389 <https://github.com/scikit-image/scikit-image/pull/6389>_).loadtxt of NumPy 1.23 with skimage/feature/orb_descriptor_positions.txt
(#6400 <https://github.com/scikit-image/scikit-image/pull/6400>_).#6384 <https://github.com/scikit-image/scikit-image/pull/6384>_).#6409 <https://github.com/scikit-image/scikit-image/pull/6409>_).#6253 <https://github.com/scikit-image/scikit-image/pull/6253>_).#6416 <https://github.com/scikit-image/scikit-image/pull/6416>_).doc.* from package install
(#6428 <https://github.com/scikit-image/scikit-image/pull/6428>_).vertices with simplices in skimage.transform._geometric
(#6430 <https://github.com/scikit-image/scikit-image/pull/6430>_).skimage.filters.sato
(#6434 <https://github.com/scikit-image/scikit-image/pull/6434>_).#6440 <https://github.com/scikit-image/scikit-image/pull/6440>_).TODO.txt
(#6442 <https://github.com/scikit-image/scikit-image/pull/6442>_).skimage.feature._canny
(#6457 <https://github.com/scikit-image/scikit-image/pull/6457>_).with open(...) as f instead of f = open(...)
(#6458 <https://github.com/scikit-image/scikit-image/pull/6458>_).#6484 <https://github.com/scikit-image/scikit-image/pull/6484>_).broadcast_to instead of as_strided to generate broadcasted arrays
(#6476 <https://github.com/scikit-image/scikit-image/pull/6476>_).moving_image in docstring of skimage.registration._optical_flow._tvl1
(#6480 <https://github.com/scikit-image/scikit-image/pull/6480>_).pyplot.get_cmap instead of deprecated cm.get_cmap in skimage.future.graph.show_rag for compatibility with matplotlib 3.3 to 3.6
(#6483 <https://github.com/scikit-image/scikit-image/pull/6483>, #6490 <https://github.com/scikit-image/scikit-image/pull/6490>).plot_euler_number.py for maplotlib 3.6 compatibility
(#6522 <https://github.com/scikit-image/scikit-image/pull/6522>_).#6528 <https://github.com/scikit-image/scikit-image/pull/6528>_).license_file to license_files in setup.cfg
(#6529 <https://github.com/scikit-image/scikit-image/pull/6529>_).#6539 <https://github.com/scikit-image/scikit-image/pull/6539>_).FUNDING.yml in preference of org version
(#6553 <https://github.com/scikit-image/scikit-image/pull/6553>_).tifffile.imwrite defaults and avoid test warnings
(#6460 <https://github.com/scikit-image/scikit-image/pull/6460>_).networkx.to_scipy_sparse_array
(#6564 <https://github.com/scikit-image/scikit-image/pull/6564>_).#6385 <https://github.com/scikit-image/scikit-image/pull/6385>_).#6568 <https://github.com/scikit-image/scikit-image/pull/6568>_).#6577 <https://github.com/scikit-image/scikit-image/pull/6577>_).#6579 <https://github.com/scikit-image/scikit-image/pull/6579>_).pyproject.toml to support Python 3.11 and to fix 32-bit pinned packages on Windows
(#6519 <https://github.com/scikit-image/scikit-image/pull/6519>_).#6639 <https://github.com/scikit-image/scikit-image/pull/6639>_).#6637 <https://github.com/scikit-image/scikit-image/pull/6637>_).pyproject.toml
(#6634 <https://github.com/scikit-image/scikit-image/pull/6634>_).>=0.11.0
(#6627 <https://github.com/scikit-image/scikit-image/pull/6627>_).skimage.color.lab2xyz
(#6613 <https://github.com/scikit-image/scikit-image/pull/6613>_).#6607 <https://github.com/scikit-image/scikit-image/pull/6607>, #6610 <https://github.com/scikit-image/scikit-image/pull/6610>).#6609 <https://github.com/scikit-image/scikit-image/pull/6609>_).check: true for run_command in skimage/meson.build
(#6606 <https://github.com/scikit-image/scikit-image/pull/6606>_).dev.py and setup commands
(#6600 <https://github.com/scikit-image/scikit-image/pull/6600>_).dev.py commands into sections
(#6629 <https://github.com/scikit-image/scikit-image/pull/6629>_).#6647 <https://github.com/scikit-image/scikit-image/pull/6647>_).skimage.transform.resize
(#6669 <https://github.com/scikit-image/scikit-image/pull/6669>_).#6671 <https://github.com/scikit-image/scikit-image/pull/6671>_).#6677 <https://github.com/scikit-image/scikit-image/pull/6677>_).#6678 <https://github.com/scikit-image/scikit-image/pull/6678>, #6681 <https://github.com/scikit-image/scikit-image/pull/6681>).#6680 <https://github.com/scikit-image/scikit-image/pull/6680>_).#6683 <https://github.com/scikit-image/scikit-image/pull/6683>_).gtk_plugin.ini
(#6686 <https://github.com/scikit-image/scikit-image/pull/6686>_).#6706 <https://github.com/scikit-image/scikit-image/pull/6706>_).#6709 <https://github.com/scikit-image/scikit-image/pull/6709>_).#6715 <https://github.com/scikit-image/scikit-image/pull/6715>_).#6716 <https://github.com/scikit-image/scikit-image/pull/6716>_).skimage/__init__.py in skimage/meson.build
(#6723 <https://github.com/scikit-image/scikit-image/pull/6723>_).#6725 <https://github.com/scikit-image/scikit-image/pull/6725>_).#6726 <https://github.com/scikit-image/scikit-image/pull/6726>_).uintptr_t to calculate new heap ptr positions
(#6734 <https://github.com/scikit-image/scikit-image/pull/6734>_).#6738 <https://github.com/scikit-image/scikit-image/pull/6738>_).#6753 <https://github.com/scikit-image/scikit-image/pull/6753>_).setuptools 65.6+
(#6751 <https://github.com/scikit-image/scikit-image/pull/6751>_).setup.cfg, use pyproject.toml instead
(#6758 <https://github.com/scikit-image/scikit-image/pull/6758>_).pyproject.toml to use meson-python>=0.13.0rc0
(#6759 <https://github.com/scikit-image/scikit-image/pull/6759>_).Benchmarks ^^^^^^^^^^
morphology.local_maxima
(#3255 <https://github.com/scikit-image/scikit-image/pull/3255>_).skimage.morphology.reconstruction
(#6342 <https://github.com/scikit-image/scikit-image/pull/6342>_).#6511 <https://github.com/scikit-image/scikit-image/pull/6511>_).CI & automation ^^^^^^^^^^^^^^^
actions/stale to label "dormant" issues and PRs
(#6506 <https://github.com/scikit-image/scikit-image/pull/6506>, #6546 <https://github.com/scikit-image/scikit-image/pull/6546>, #6552 <https://github.com/scikit-image/scikit-image/pull/6552>_).#6075 <https://github.com/scikit-image/scikit-image/pull/6075>_).#6085 <https://github.com/scikit-image/scikit-image/pull/6085>_).#6091 <https://github.com/scikit-image/scikit-image/pull/6091>_).#6315 <https://github.com/scikit-image/scikit-image/pull/6315>_).tools/github/before_install.sh
(#6379 <https://github.com/scikit-image/scikit-image/pull/6379>_).#6382 <https://github.com/scikit-image/scikit-image/pull/6382>_).#6401 <https://github.com/scikit-image/scikit-image/pull/6401>_).#6407 <https://github.com/scikit-image/scikit-image/pull/6407>_).#6417 <https://github.com/scikit-image/scikit-image/pull/6417>_).#6426 <https://github.com/scikit-image/scikit-image/pull/6426>, #6504 <https://github.com/scikit-image/scikit-image/pull/6504>).#6478 <https://github.com/scikit-image/scikit-image/pull/6478>_).benchmarks.yaml workflow
(#6520 <https://github.com/scikit-image/scikit-image/pull/6520>_).#6563 <https://github.com/scikit-image/scikit-image/pull/6563>_).#6566 <https://github.com/scikit-image/scikit-image/pull/6566>_).#6567 <https://github.com/scikit-image/scikit-image/pull/6567>_).#6580 <https://github.com/scikit-image/scikit-image/pull/6580>_).azure-pipelines.yml
(#6626 <https://github.com/scikit-image/scikit-image/pull/6626>_).#6581 <https://github.com/scikit-image/scikit-image/pull/6581>_).#6646 <https://github.com/scikit-image/scikit-image/pull/6646>_).#6668 <https://github.com/scikit-image/scikit-image/pull/6668>_).#6673 <https://github.com/scikit-image/scikit-image/pull/6673>_).tools/github/before_install.sh wheels workflow
(#6718 <https://github.com/scikit-image/scikit-image/pull/6718>_).#6729 <https://github.com/scikit-image/scikit-image/pull/6729>_).#6731 <https://github.com/scikit-image/scikit-image/pull/6731>_).skimage._shared._warnings.expected_warnings
(#6733 <https://github.com/scikit-image/scikit-image/pull/6733>_).#6743 <https://github.com/scikit-image/scikit-image/pull/6743>_).#6749 <https://github.com/scikit-image/scikit-image/pull/6749>_).#6750 <https://github.com/scikit-image/scikit-image/pull/6750>_).#6757 <https://github.com/scikit-image/scikit-image/pull/6757>_).#6762 <https://github.com/scikit-image/scikit-image/pull/6762>_).#6763 <https://github.com/scikit-image/scikit-image/pull/6763>_).