scikit-image 0.20.0 (2023-02-28)#
scikit-image 是一个基于 SciPy 的图像处理工具箱,包含用于分割、几何变换、颜色空间操作、分析、滤波、形态学、特征检测等算法的实现。
更多信息、示例和文档,请访问我们的网站:https://scikit-image.org
通过此版本,skimage.measure
中的许多功能现在支持具有不同体素间距的各向异性图像。
进行了许多性能改进,例如在 skimage.morphology
中支持足迹分解。
文档中新增了四个画廊示例,包括新的交互式示例“跟踪金属合金的凝固过程”。
此版本完成了向更灵活的 channel_axis
参数的过渡,用于指示多通道图像,并包括其他几个使API更加一致和富有表现力的弃用。
最后,为了准备即将发布的 Python 3.12 版本中移除 distutils
,我们将构建系统替换为 meson 和一个静态的 pyproject.toml 规范。
此版本支持 Python 3.8–3.11。
新功能和改进#
支持将足迹分解为
skimage.morphology
中的多个生成和消费函数。通过将一个足迹分解为几个较小的足迹,形态学操作可能会加速。分解后的足迹可以通过skimage.morphology
中的函数rectangle
、diamond
、disk
、cube
、octahedron
、ball
和octagon
的新decomposition
参数生成。skimage.morphology
中的函数binary_erosion
、binary_dilation
、binary_opening
、binary_closing
、erosion
、dilation
、opening
、closing
、white_tophat
和black_tophat
的footprint
参数现在接受一个由 2 元素元组(footprint_i, num_iter_i)
组成的序列,其中序列的每个条目i
包含一个足迹和它应迭代应用的次数。这是上述足迹分解产生的形式 (#5482, #6151)。支持具有不同体素间距的各向异性图像。间距可以通过
skimage.measure
中以下函数的spacing
参数来定义:regionprops
、regionprops_table
、moments
、moments_central
、moments_normalized
、centroid
、inertia_tensor
和inertia_tensor_eigvals
。体素间距被考虑用于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
和moments_weighted_hu
。新的属性num_pixels
和coords_scaled
也可用。更多详情请参阅各自的文档字符串 (#6296)。在
skimage.morphology
中添加各向同性二值形态学操作isotropic_closing
、isotropic_dilation
、isotropic_erosion
和isotropic_opening
。这些函数返回的结果与其非各向同性对应函数相同,但对于大型圆形结构元素执行速度更快(#6492)。向
skimage.measure
添加新的共定位指标pearson_corr_coeff
、manders_coloc_coeff
、manders_overlap_coeff
和intersection_coeff
(#6189)。在
skimage.metrics.hausdorff_distance
中通过新参数method
支持 Modified Hausdorff Distance (MHD) 度量。与 directed Hausdorff Distance (HD) 相比,MHD 对异常值更具鲁棒性 (#5581)。添加两个数据集
skimage.data.protein_transport
和skimage.data.nickel_solidification
(#6087).为
skimage.feature.hessian_matrix
添加新参数use_gaussian_derivatives
,该参数允许通过与高斯导数卷积来计算 Hessian 矩阵 (#6149)。向
skimage.filters.butterworth
添加新参数squared_butterworth
和npad
,分别支持传统或平方滤波和边缘填充 (#6251)。支持从
load_pattern
构建skimage.io.ImageCollection
,只要提供匹配的load_func
,就可以使用任意序列 (#6276)。向
skimage.metrics.adapted_rand_error
添加新参数alpha
,允许控制给予精确度和召回率的权重(#6472)。为
skimage.measure.grid_points_in_poly
添加新参数binarize
,以选择性地返回标签,指示像素是在多边形内部、外部还是边界上 (#6515)。为
skimage.measure.convex_hull_image
添加新参数include_borders
,以选择性地从最终的凸包掩码中排除顶点或边 (#6515)。为
skimage.measure.regionprops
添加新参数offsets
,该参数可选地允许指定原点的坐标,并影响属性coords_scaled
和coords
(#3706)。向
skimage.registration.phase_cross_correlation
添加新参数disambiguate
以可选地消除周期性位移 (#6617)。在
skimage.filters.farid
中支持 n 维图像(Farid & Simoncelli 滤波器)(#6257)。在
skimage.restoration.wiener
中支持 n 维图像 (#6454)。在
skimage.transform.EuclideanTransform
中为属性rotation
和translation
以及skimage.transform.SimilarityTransform.scale
支持三个维度 (#6367)。在
skimage.morphology.flood_fill
中允许非相邻像素作为邻居 (#6236)。在
AffineTransform
、EssentialMatrixTransform
、EuclideanTransform
、FundamentalMatrixTransform
、GeometricTransform
、PiecewiseAffineTransform
、PolynomialTransform
、ProjectiveTransform
、SimilarityTransform
、estimate_transform
和matrix_transform
中一致地支持数组类对象skimage.transform
(#6270)。
性能#
通过将其实现的一部分移植到 Cython,改进了
skimage.feature.canny
的性能(约2倍加速)(#6387)。改进了
skimage.feature.hessian_matrix_eigvals
和 2Dskimage.feature.structure_tensor_eigenvalues
的性能(约2倍加速)(#6441)。通过避免冗余计算来提高
skimage.measure.moments_central
的性能 (#6188)。通过仅在需要时加载 matplotlib 插件来减少
skimage.io
的导入时间 (#6550)。将 scikit-learn 中的 RANSAC 改进整合到
skimage.measure.ransac
中,减少了迭代次数 (#6046)。改进
skimage.exposure.match_histograms
在无符号整数数据上的直方图匹配性能。(#6209, #6354).减少
skimage.filters
中岭滤波器meijering
、sato
、frangi
和hessian
的内存消耗 (#6509)。减少
skimage.feature
中blob_dog
、blob_log
和blob_doh
的内存消耗 (#6597)。在
skimage.morphology.reconstruction
内部使用最小必需的无符号整数大小,这使得该函数能够以更高的精度或更大的数组进行操作。之前使用的是 int32。(#6342)。在
skimage.filters.rank_order
中使用最小必需的无符号整数大小,这使得该函数能够在更高精度或更大的数组上操作。以前,返回的labels
和original_values
总是 uint32 类型。(#6342)。
变更和新弃用#
将 Python 3.8 设置为最低支持版本 (#6679)。
重写
skimage.filters.meijering
、skimage.filters.sato
、skimage.filters.frangi
和skimage.filters.hessian
以更接近已发表的算法。这一更改是向后不兼容的,将导致与之前的实现相比输出值不同。Hessian矩阵的计算现在更加准确。当Hessian特征值中的任何一个具有与所需极性脊不兼容的符号时,滤波器现在将被正确地设置为零。Frangi滤波器的gamma常数现在根据最大Hessian范数进行自适应设置(#6446)。将
skimage.future.graph
中的函数移动到skimage.graph
。这影响了cut_threshold
、cut_normalized
、merge_hierarchical
、rag_mean_color
、RAG
、show_rag
和rag_boundary
(#6674)。如果在
skimage.measure.LineModelND.estimate
中模型未确定,则返回False
而不是引发错误 (#6453)。在
skimage.measure.CircleModel.estimate
中返回False
而不是警告,如果模型是欠定的 (#6453)。将
skimage.filters.inverse
重命名为skimage.filters.inverse_filter
。skimage.filters.inverse
已被弃用,并将在下一个版本中移除 (#6418, #6701)。将最小支持依赖更新为
numpy>=1.20
(#6565)。将最低支持的依赖更新为
scipy>=1.8
(#6564)。将最低支持的依赖更新为
networkx>=2.8
(#6564)。将最小支持的依赖更新为
pillow>=9.0.1
(#6402)。将最低支持的依赖更新为
setuptools 67
(#6754)。更新可选的最低支持依赖为
matplotlib>=3.3
(#6383)。警告非整数图像输入到
skimage.feature.local_binary_pattern
。将该函数应用于浮点图像时,当相邻像素之间存在小的数值差异时,可能会产生意外结果 (#6272)。如果在
skimage.registration.phase_cross_correlation
只返回位移向量时发出警告。从下一个版本开始,此函数将始终返回一个包含三个元素的元组(位移向量、误差、相位差)。使用return_error="always"
来静默此警告并切换到这种新行为 (#6543)。在
skimage.metrics.structural_similarity
中警告,如果data_range
未在浮点数据情况下指定 (#6612)。在
skimage.filters.gaussian
中,颜色通道的自动检测已被弃用,如果未明确设置参数channel_axis
,则会发出警告 (#6583)。
已完成弃用#
移除
skimage.viewer
,该模块原计划在推迟的1.0版本中移除 (#6160)。从
skimage.feature.peak_local_max
中移除已弃用的参数indices
(#6161)。移除
skimage.feature.structure_tensor_eigvals
(它已被skimage.feature.structure_tensor_eigenvalues
取代),并在skimage.feature.structure_tensor
中将默认参数值更改为order="rc"
(#6162)。从
skimage.measure.find_contours
中移除已弃用的参数array
,改为使用image
(#6163)。移除已弃用的 Qt IO 插件和
skivi
控制台脚本 (#6164)。在
skimage.measure.marching_cubes
中移除已弃用的参数值method='_lorensen'
(#6230)。移除已弃用的参数
multichannel
;请改用channel_axis
。这会影响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
和skimage.metrics.structural_similarity
。在skimage.restoration
中,这会影响cycle_spin
、denoise_bilateral
、denoise_tv_bregman
、denoise_tv_chambolle
、denoise_wavelet
、estimate_sigma
、inpaint_biharmonic
和denoise_nl_means
。在skimage.segmentation
中,这会影响felzenszwalb
、random_walker
和slic
。在skimage.transform
中,这会影响rescale
、warp_polar
、pyramid_reduce
、pyramid_expand
、pyramid_gaussian
和pyramid_laplacian
。在skimage.util
中,这会影响montage
和apply_parallel
(#6583)。移除已弃用的参数
selem
;请改用footprint
。在skimage.filters
中,这影响了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
和majority
。在skimage.morphology
中,这影响了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
和reconstruction
(#6583)。从
skimage.filters.threshold_minimum
、skimage.morphology.thin
和skimage.segmentation.chan_vese
中移除已弃用的参数max_iter
;请改用max_num_iter
(#6583)。从
skimage.segmentation.active_contour
中移除已弃用的参数max_iterations
;请改用max_num_iter
(#6583)。从
skimage.measure.label
中移除已弃用的参数input
;请改用label_image
(#6583)。从
skimage.measure.regionprops
和skimage.segmentation.active_contour
中移除已弃用的参数coordinates
(#6583)。从
skimage.measure.perimeter
中移除已弃用的参数neighbourhood
;请改用neighborhood
(#6583)。从
skimage.morphology.rectangle
中移除已弃用的参数height
和width
;请改用ncols
和nrows
(#6583)。从
skimage.morphology.remove_small_objects
、skimage.morphology.remove_small_holes
和skimage.segmentation.clear_border
中移除已弃用的参数in_place
;请改用out
(#6583)。从
skimage.restoration.richardson_lucy
、skimage.segmentation.morphological_chan_vese
和skimage.segmentation.morphological_geodesic_active_contour
中移除已弃用的参数iterations
;请改用num_iter
(#6583)。移除
skimage.restoration.unsupervised_wiener
参数user_params
中已弃用的键"min_iter"
和"max_iter"
;请改用"min_num_iter"
和"max_num_iter"
(#6583)。从
skimage.feature
中移除已弃用的函数greycomatrix
和greycoprops
(#6583)。移除已弃用的子模块
skimage.morphology.grey
和skimage.morphology.greyreconstruct
;请改用skimage.morphology
(#6583)。移除已弃用的子模块
skimage.morphology.selem
;请改用skimage.morphology.footprints
(#6583)。移除已弃用的
skimage.future.graph.ncut
(它已被skimage.graph.cut_normalized
取代) (#6685)。
错误修复#
修复
skimage.exposure.adjust_gamma
中的舍入误差 (#6285)。将
skimage.draw.rectangle
的输出坐标四舍五入并转换为int
,即使输入坐标使用float
。此修复确保输出可以像其他绘图函数一样用于索引(#6501)。如果在
skimage.feature.peak_local_max
中峰值值小于0,避免图像边缘附近峰值的意外排除 (#6502)。在使用最近邻插值(
order == 0
)和整数输入数据类型时,默认避免在skimage.transform.resize
中使用抗锯齿(#6503)。在
skimage.segmentation.slic
中重缩放时使用掩码。以前,当重缩放图像以使紧凑性选择对图像值不敏感时,掩码被忽略。新的行为使得可以掩码值,如numpy.nan
或 numpy.infinity。此外,如果输入image
是二维的并且指定了channel_axis
,则引发错误 - 表明图像是多通道的 (#6525)。修复在
skimage.feature.blog_dog
和skimage.feature.blob_log
中将元组传递给参数exclude_border
时出现的意外错误 (#6533)。如果在参数
labels
中没有提供正值作为种子,则在skimage.segmentation.random_walker
中引发特定错误消息 (#6562)。当访问
skimage.measure.regionprops
的区域属性时,如果所需的intensity_image
不可用,则引发特定错误信息 (#6584)。通过在八度图像过小时提前中断来避免
skimage.feature.ORB.detect_and_extract
中的错误 (#6590)。修复
skimage.restoration.inpaint_biharmonic
以处理具有 Fortran 顺序内存布局的图像 (#6263)。修复了
skimage.filters.gaussian
中颜色通道的自动检测(此行为已被弃用,请参阅新的弃用说明)(#6583)。修复
skimage.color.lab2rgb
中的警告堆栈级别(#6616)。修复
skimage.feature.hessian_matrix
的返回值顺序,并在请求order='xy'
时,如果图像维度超过2维则抛出错误 (#6624)。修复了
skimage.filters.rank
中函数的误导性异常,该异常未提及也支持2D图像 (#6666)。修复
skimage.graph.RAG.merge_nodes
中的就地合并权重 (#6692)。修复内部
heappush
函数中的内存增长错误并消除编译器警告 (#6727)。修复 Cascade.detect_multi_scale 中关于结构初始化的编译警告 (#6728)。
文档#
新#
添加图库示例“分解平面足迹(结构元素)” (#6151)。
添加图库示例 “Butterworth 滤波器” 并改进
skimage.filters.butterworth
的文档字符串 (#6251)。添加图库示例“在图像上渲染文本” (#6431)。
添加图库示例“跟踪金属合金的凝固过程” (#6469)。
添加图库示例“共定位指标” (#6189)。
添加支持页面(
.github/SUPPORT.md
)以帮助GitHub用户找到合适的支持资源(#6171, #6575)。将
CITATION.bib
添加到仓库中,以帮助引用 scikit-image (#6195)。添加基于 Meson 的新构建系统的使用说明,使用
dev.py
(#6600)。
改进与更新#
将画廊示例“构建图像金字塔”调整为更多样化的形状图像和下采样因子 (#6293)。
使用 plotly 的交互切片浏览器改编画廊示例“探索细胞的 3D 图像” (#4953)。
澄清
weights
术语的含义,并重写skimage.restoration.denoise_tv_bregman
和skimage.restoration.denoise_tv_chambolle
的文档字符串 (#6544)。澄清启用的
watershed_line
参数不会捕捉skimage.segmentation.watershed
中相邻标记区域之间的边界 (#6280)。澄清
skimage.morphology.skeletonize
接受任何输入类型的image
(#6322)。在我们的图库中使用网格缩略图来展示
skimage.data
中可用的不同图像和数据集(#6298, #6300, #6301)。在
skimage.restoration.wiener
的文档字符串示例中调整balance
以获得更清晰的结果 (#6265)。在
skimage.io.imread
和skimage.io.imsave
中支持 Path 对象 (#6361)。如果离散化图像无法被阈值化,改进
skimage.filters.threshold_multiotsu
中的错误信息 (#6375)。在图库示例“无重叠扩展分割标签”中同时显示原始未标记图像 (#6396)。
在版本0.19中对
grey*
进行文档重构,改为skimage.feature.graymatrix
和skimage.feature.graycoprops
(#6420)。核心开发者指南中新功能的文档包含标准 (#6488)。
在图库示例“分割和超像素算法的比较”中应用分水岭后打印段数 (#6535)。
在拉取请求模板中扩展评审指南 (#6208)。
在拉取请求模板中提供预提交PR指令 (#6578)。
在
skimage.metricts.structural_similarity
的文档字符串中警告并解释浮点数据的处理(#6595)。修复了图库示例“测量核膜处的荧光强度”中动画
imshow
的强度自动缩放问题 (#6599)。在
INSTALL.rst
中明确scikit-image[data]
和 pooch 的依赖关系 (#6619)。不要在conda安装说明中使用令人困惑的循环 (#6672)。
在
skimage.color
中的lab2xyz
,rgb2lab
,lab2lch
, 和lch2lab
中记录 L*a*b* 和 L*Ch 的值范围 (#6688, #6697, #6719).在
skimage.feature.local_binary_pattern
的文档字符串中使用更一致的风格 (#6736)。
修复、拼写检查与小调整#
移除已弃用的引用,并在图库示例“Marching Cubes”中使用
skimage.measure.marching_cubes
(#6377)。修复了
skimage.morphology.flood
文档字符串中connectivity
参数的描述 (#6534)。修复了
skimage.metrics.hausdorff_distance
文档字符串中的格式问题 (#6203)。修复
skimage.measure.moments_hu
文档字符串中的拼写错误 (#6016)。修复了
skimage.util.random_noise
中模式参数的格式 (#6532)。修复 SKIP 3 中的断链 (#6445)。
修复
skimage.filters.sobel
文档字符串中的断链 (#6474)。将“neighbour”改为美式拼写“neighbor” (#6204)。
将缺失的版权信息添加到 LICENSE.txt 中,并根据 SPDX 标识符进行格式化 (#6419)。
在公共API文档中包含
skimage.morphology.footprint_from_sequence
(#6555)。修正了
skimage.exposure.rescale_intensity
文档字符串中关于返回类型的注释 (#6582)。将 scikit-image 的邮件地址更新为新的域名 discuss.scientific-python.org (#6255)。
移除
doc/source/user_guide/getting_help.rst
中对已弃用邮件列表的引用 (#6575)。使用 “center” 代替 “centre”,以及 “color” 代替 “colour” 画廊示例 (#6421, #6422)。
将引用
api_changes.rst
替换为release_dev.rst
(#6495)。澄清指向最新版本发布说明的标题 (#6508)。
在
skimage.measure.regionprops
中为错误消息添加缺失的空格 (#6545)。应用 codespell 来修复常见的拼写错误 (#6537)。
在 normalized_mutual_information 的 docstring 中添加数学指令中缺失的空格 (#6549)。
修复
skimage.morphology.isotropic_
函数中文档字符串标题下划线的长度 (#6628)。修复由于文件名
plot_thresholding.py
导致的重复示例的绘图顺序 (#6644)。在图库示例
plot_equalize
中消除 numpy 弃用警告 (#6650)。修复了图库示例
plot_rank_filters
中打开和关闭的交换 (#6652)。在图库示例
in plot_log_gamma.py
中去除 numpy 弃用警告 (#6655)。移除图库示例“Tinting gray-scale images”中的警告和不必要的消息 (#6656)。
更新贡献指南,建议在源代码树外创建虚拟环境 (#6675)。
修复
skimage.data.coffee
文档字符串中的拼写错误 (#6740)。在
skimage.graph.merge_nodes
的文档字符串中添加缺失的反引号 (#6741)。修复了
skimage.metrics.variation_of_information
中的拼写错误 (#6768)。
42 位评审员为本版本做出了贡献 [按名字或登录名的字母顺序排列]#
Abhijeet Parida
阿尔伯特·Y·徐
Alex (sashashura)
亚历山大·德·西奎拉
安东尼·李
本·格雷纳
卡洛·德里
克里斯·罗特
丹尼尔·尼科洛迪
Daria
Dudu Lasry
Eli Schwartz
弗朗索瓦·布洛涅
格雷戈里·李
Gus Becker
雅各布·罗森塔尔
高杰
扬-亨德里克·穆勒
Jarrod Millman
胡安 DF
Juan Nunez-Iglesias
Lars Grüter
Malinda (maldil)
玛丽安·科尔维莱克
马克·哈福克
Martijn Courteaux
马文·阿尔伯特
马蒂亚斯·布索尼耶
Oren Amsalem
Ralf Gommers
Riadh Fezzani
罗伯特·哈斯
罗宾·蒂博
桑迪普·N·梅农
Sanghyeok Hyun
塞巴斯蒂安·伯格
塞巴斯蒂安·瓦尔克特
西蒙-马丁·施罗德
斯蒂芬·范·德·瓦特
Thanushi Peiris
托马斯·福伊特曼
蒂姆-奥利弗·布赫霍尔茨