當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python skimage.morphology.medial_axis用法及代碼示例

用法:

skimage.morphology.medial_axis(image, mask=None, return_distance=False, *, random_state=None)

計算二值圖像的中軸變換。

參數

image二進製ndarray,形狀(M,N)

要骨架化的形狀的圖像。

mask二進製ndarray,形狀(M,N),可選

如果給定掩碼,則隻有圖像中掩碼為真值的元素用於計算中軸。

return_distance布爾型,可選

如果為真,則返回距離變換以及骨架。

random_state{無,int numpy.random.Generator },可選

如果random_state是沒有的numpy.random.Generator使用單例。如果random_state是一個int 一個新的Generator使用實例,播種random_state.如果random_state已經是一個Generator實例然後使用該實例。

返回

out布爾數組

圖像的中軸變換

dist整數的ndarray,可選

圖像的距離變換(僅在 return_distance 為 True 時返回)

注意

該算法將圖像的中軸變換計算為其距離變換的脊。

算法的不同步驟如下
  • 使用查找表,將 0 或 1 分配給 3x3 二進製正方形的每個配置,無論中心像素應該被刪除還是保留。如果一個點有多個鄰居並且刪除它不會改變連接組件的數量,我們希望它被刪除。
  • 計算到背景的距離變換,以及像素的角點。
  • 前景(值為 1)點按距離變換排序,然後是角點。
  • 調用 cython 函數以將圖像縮小為其骨架。它按照上一步確定的順序處理像素,並根據查找表刪除或維護一個像素。由於排序,可以僅在一次通過中處理所有像素。

例子

>>> square = np.zeros((7, 7), dtype=np.uint8)
>>> square[1:-1, 2:-2] = 1
>>> square
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 1, 1, 0, 0],
       [0, 0, 1, 1, 1, 0, 0],
       [0, 0, 1, 1, 1, 0, 0],
       [0, 0, 1, 1, 1, 0, 0],
       [0, 0, 1, 1, 1, 0, 0],
       [0, 0, 0, 0, 0, 0, 0]], dtype=uint8)
>>> medial_axis(square).astype(np.uint8)
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 0, 1, 0, 0],
       [0, 0, 0, 1, 0, 0, 0],
       [0, 0, 0, 1, 0, 0, 0],
       [0, 0, 0, 1, 0, 0, 0],
       [0, 0, 1, 0, 1, 0, 0],
       [0, 0, 0, 0, 0, 0, 0]], dtype=uint8)

相關用法


注:本文由純淨天空篩選整理自scikit-image.org大神的英文原創作品 skimage.morphology.medial_axis。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。