scikit-image 0.20.0 (2023-02-28)#
scikit-image 是一個基於 SciPy 建構的影像處理工具箱,包含用於分割、幾何變換、色彩空間操作、分析、濾波、形態學、特徵偵測等演算法。
如需更多資訊、範例和文件,請造訪我們的網站:https://scikit-image.dev.org.tw
在此版本中,skimage.measure
中的許多函式現在支援具有不同體素間距的異向性影像。
進行了許多效能改進,例如在 skimage.morphology
中支援足跡分解。
文件中新增了四個新的圖庫範例,包括新的互動式範例「追蹤金屬合金的凝固」。
此版本完成了轉換為更具彈性的 channel_axis
參數以指示多通道影像,並包含其他幾個使 API 更加一致和具有表達能力的棄用。
最後,為了準備在即將發佈的 Python 3.12 版本中移除 distutils
,我們將建構系統替換為 meson
和靜態 pyproject.toml
規範。
此版本支援 Python 3.8–3.11。
新功能與改進#
在
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
在skimage.morphology
中的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)。將新的共定位指標
pearson_corr_coeff
、manders_coloc_coeff
、manders_overlap_coeff
和intersection_coeff
新增至skimage.measure
(#6189)。透過新的參數
method
在skimage.metrics.hausdorff_distance
中支援修正 Hausdorff 距離 (MHD) 指標。相較於定向 Hausdorff 距離 (HD),MHD 對離群值可能更穩健 (#5581)。新增兩個資料集
skimage.data.protein_transport
和skimage.data.nickel_solidification
(#6087)。將新的參數
use_gaussian_derivatives
新增至skimage.feature.hessian_matrix
,允許透過與高斯導數捲積來計算 Hessian 矩陣 (#6149)。將新的參數
squared_butterworth
和npad
新增至skimage.filters.butterworth
,分別支援傳統或平方濾波和邊緣填補 (#6251)。只要提供了匹配的
load_func
,就支援從具有任意序列的load_pattern
建構skimage.io.ImageCollection
(#6276)。將新的參數
alpha
新增至skimage.metrics.adapted_rand_error
,允許控制給予精確度和召回率的權重 (#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
(Farid & Simoncelli 濾波器)中支援 n 維圖像(#6257)。在
skimage.restoration.wiener
中支援 n 維圖像(#6454)。在
skimage.transform.EuclideanTransform
中以及在skimage.transform.SimilarityTransform.scale
中,支援屬性rotation
和translation
的三個維度(#6367)。在
skimage.morphology.flood_fill
中允許使用具有非相鄰像素作為鄰居的足跡(#6236)。在
skimage.transform
中的AffineTransform
、EssentialMatrixTransform
、EuclideanTransform
、FundamentalMatrixTransform
、GeometricTransform
、PiecewiseAffineTransform
、PolynomialTransform
、ProjectiveTransform
、SimilarityTransform
、estimate_transform
和matrix_transform
中一致地支援類陣列 (array-like) 物件(#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)。如果在使用浮點資料的情況下未指定
data_range
,則在skimage.metrics.structural_similarity
中發出警告(#6612)。在
skimage.filters.gaussian
中已棄用顏色通道的自動偵測,如果未明確設定參數channel_axis
,則會發出警告(#6583)。
已完成的棄用#
移除原定於延後的 1.0 版本中移除的
skimage.viewer
(#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)。如果在
skimage.segmentation.random_walker
中,參數labels
中未提供任何種子作為正值,則會引發特定錯誤訊息 (#6562)。當無法取得所需的
intensity_image
時,從skimage.measure.regionprops
存取區域屬性時會引發特定錯誤訊息 (#6584)。如果八度影像太小,則透過提早中斷來避免
skimage.feature.ORB.detect_and_extract
中的錯誤 (#6590)。修正具有 Fortran 順序記憶體佈局的影像的
skimage.restoration.inpaint_biharmonic
(#6263)。修正
skimage.filters.gaussian
中色彩通道的自動偵測(此行為已棄用,請參閱新的棄用說明)(#6583)。修正
skimage.color.lab2rgb
中警告的堆疊層級 (#6616)。修正
skimage.feature.hessian_matrix
的傳回值順序,如果針對超過 2 個維度的影像請求order='xy'
,則會引發錯誤 (#6624)。修正
skimage.filters.rank
中未提及也支援 2D 影像的函數中產生誤導的例外 (#6666)。修正
skimage.graph.RAG.merge_nodes
中權重的原地合併 (#6692)。修正在內部
heappush
函數中記憶體不斷增長的錯誤並抑制編譯器警告 (#6727)。修正關於
Cascade.detect_multi_scale
中結構初始化的編譯警告 (#6728)。
文件#
新增#
新增圖庫範例「分解平面足跡(結構元素)」(#6151)。
新增圖庫範例「巴特沃斯濾波器」並改進
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)。
在提取請求範本中提供預提交的提取請求說明 (#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)。
修正、拼寫和小的調整#
移除已棄用的參考,並在圖庫範例「行進立方體」中使用
skimage.measure.marching_cubes
(#6377)。修正
skimage.morphology.flood
的 docstring 中connectivity
參數的描述 (#6534)。修正
skimage.metrics.hausdorff_distance
的 docstring 中的格式錯誤 (#6203)。修正
skimage.measure.moments_hu
的 docstring 中的錯字 (#6016)。修正
skimage.util.random_noise
中 mode 參數的格式 (#6532)。修正 SKIP 3 中的失效連結 (#6445)。
修正
skimage.filters.sobel
的 docstring 中的失效連結 (#6474)。將 “neighbour” 改為美式英語拼寫 “neighbor” (#6204)。
將缺少的版權資訊加入 LICENSE.txt,並使用符合 SPDX 識別碼的格式 (#6419)。
將
skimage.morphology.footprint_from_sequence
加入公開 API 文件中 (#6555)。修正
skimage.exposure.rescale_intensity
的 docstring 中關於傳回類型的說明 (#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_
函式中 docstring 標題底線的長度 (#6628)。修正因檔案名稱
plot_thresholding.py
重複而導致的繪圖順序問題 (#6644)。移除範例庫範例
plot_equalize
中的 NumPy 棄用警告 (#6650)。修正範例庫範例
plot_rank_filters
中開啟和關閉的順序交換問題 (#6652)。移除範例庫範例
in plot_log_gamma.py
中的 NumPy 棄用警告 (#6655)。移除範例庫範例「為灰階影像著色」中的警告和不必要的訊息 (#6656)。
更新貢獻指南,建議在來源樹外部建立虛擬環境 (#6675)。
修正
skimage.data.coffee
的 docstring 中的錯字 (#6740)。在
skimage.graph.merge_nodes
的 docstring 中加入遺漏的反引號 (#6741)。修正
skimage.metrics.variation_of_information
中的錯字 (#6768)。
此版本有 42 位審閱者貢獻 [依名字或登入名稱字母排序]#
Abhijeet Parida
Albert Y. Shih
Alex (sashashura)
Alexandre de Siqueira
Antony Lee
Ben Greiner
Carlo Dri
Chris Roat
Daniele Nicolodi
Daria
Dudu Lasry
Eli Schwartz
François Boulogne
Gregory Lee
Gus Becker
Jacob Rosenthal
James Gao
Jan-Hendrik Müller
Jarrod Millman
Juan DF
Juan Nunez-Iglesias
Lars Grüter
Malinda (maldil)
Marianne Corvellec
Mark Harfouche
Martijn Courteaux
Marvin Albert
Matthias Bussonnier
Oren Amsalem
Ralf Gommers
Riadh Fezzani
Robert Haase
Robin Thibaut
Sandeep N Menon
Sanghyeok Hyun
Sebastian Berg
Sebastian Wallkötter
Simon-Martin Schröder
Stefan van der Walt
Thanushi Peiris
Thomas Voigtmann
Tim-Oliver Buchholz