本文簡要介紹 python 語言中 scipy.ndimage.distance_transform_cdt
的用法。
用法:
scipy.ndimage.distance_transform_cdt(input, metric='chessboard', return_distances=True, return_indices=False, distances=None, indices=None)#
倒角類型變換的距離變換。
此函數通過將每個前景(非零)元素替換為其到背景(任何 zero-valued 元素)的最短距離來計算輸入的距離變換。
除了距離變換,還可以計算特征變換。在這種情況下,最接近每個前景元素的背景元素的索引在單獨的數組中返回。
- input: array_like
輸入。 0 值被視為背景。
- metric: {‘chessboard’, ‘taxicab’} 或 數組,可選
公製確定所完成的倒角類型。如果公製等於 ‘taxicab’ 使用生成的結構scipy.ndimage.generate_binary_structure距離的平方等於 1。如果公製等於‘chessboard’,a公製是使用生成的scipy.ndimage.generate_binary_structure距離的平方等於數組的維數。這些選擇對應於二維中 ‘taxicab’ 和 ‘chessboard’ 距離度量的常見解釋。可以以矩陣的形式提供自定義度量,其中每個維度的長度為三。 ‘cityblock’ 和‘manhattan’ 也有效,並映射到‘taxicab’。默認為‘chessboard’。
- return_distances: 布爾型,可選
是否計算距離變換。默認為真。
- return_indices: 布爾型,可選
是否計算特征變換。默認為假。
- distances: int32 ndarray,可選
一個輸出數組,用於存儲計算的距離變換,而不是返回它。 return_distances 必須為真。它必須與輸入的形狀相同。
- indices: int32 ndarray,可選
一個輸出數組,用於存儲計算的特征變換,而不是返回它。 return_indicies 必須為真。它的形狀必須是 (input.ndim,) + input.shape。
- distances: int32 ndarray,可選
計算出的距離變換。僅當 return_distances 為 True 並且未提供距離時返回。它將具有與輸入數組相同的形狀。
- indices: int32 ndarray,可選
計算出的特征變換。對於輸入的每個維度,它都有一個 input-shaped 數組。有關示例,請參閱distance_transform_edt 文檔。僅當 return_indices 為 True 並且未提供索引時返回。
參數 ::
返回 ::
例子:
導入必要的模塊。
>>> import numpy as np >>> from scipy.ndimage import distance_transform_cdt >>> import matplotlib.pyplot as plt >>> from mpl_toolkits.axes_grid1 import ImageGrid
首先,我們創建一個玩具二值圖像。
>>> def add_circle(center_x, center_y, radius, image, fillvalue=1): ... # fill circular area with 1 ... xx, yy = np.mgrid[:image.shape[0], :image.shape[1]] ... circle = (xx - center_x) ** 2 + (yy - center_y) ** 2 ... circle_shape = np.sqrt(circle) < radius ... image[circle_shape] = fillvalue ... return image >>> image = np.zeros((100, 100), dtype=np.uint8) >>> image[35:65, 20:80] = 1 >>> image = add_circle(28, 65, 10, image) >>> image = add_circle(37, 30, 10, image) >>> image = add_circle(70, 45, 20, image) >>> image = add_circle(45, 80, 10, image)
接下來,我們設置圖形。
>>> fig = plt.figure(figsize=(5, 15)) >>> grid = ImageGrid(fig, 111, nrows_ncols=(3, 1), axes_pad=(0.5, 0.3), ... label_mode="1", share_all=True, ... cbar_location="right", cbar_mode="each", ... cbar_size="7%", cbar_pad="2%") >>> for ax in grid: ... ax.axis('off') >>> top, middle, bottom = grid >>> colorbar_ticks = [0, 10, 20]
頂部圖像包含原始二值圖像。
>>> binary_image = top.imshow(image, cmap='gray') >>> cbar_binary_image = top.cax.colorbar(binary_image) >>> cbar_binary_image.set_ticks([0, 1]) >>> top.set_title("Binary image: foreground in white")
中間圖像包含使用
taxicab
度量的距離變換。>>> distance_taxicab = distance_transform_cdt(image, metric="taxicab") >>> taxicab_transform = middle.imshow(distance_taxicab, cmap='gray') >>> cbar_taxicab = middle.cax.colorbar(taxicab_transform) >>> cbar_taxicab.set_ticks(colorbar_ticks) >>> middle.set_title("Taxicab metric")
底部圖像包含使用
chessboard
度量的距離變換。>>> distance_chessboard = distance_transform_cdt(image, ... metric="chessboard") >>> chessboard_transform = bottom.imshow(distance_chessboard, cmap='gray') >>> cbar_chessboard = bottom.cax.colorbar(chessboard_transform) >>> cbar_chessboard.set_ticks(colorbar_ticks) >>> bottom.set_title("Chessboard metric") >>> plt.tight_layout() >>> plt.show()
相關用法
- Python SciPy ndimage.distance_transform_bf用法及代碼示例
- Python SciPy ndimage.distance_transform_edt用法及代碼示例
- Python SciPy ndimage.correlate用法及代碼示例
- Python SciPy ndimage.morphological_gradient用法及代碼示例
- Python SciPy ndimage.variance用法及代碼示例
- Python SciPy ndimage.correlate1d用法及代碼示例
- Python SciPy ndimage.binary_dilation用法及代碼示例
- Python SciPy ndimage.find_objects用法及代碼示例
- Python SciPy ndimage.label用法及代碼示例
- Python SciPy ndimage.maximum_filter1d用法及代碼示例
- Python SciPy ndimage.iterate_structure用法及代碼示例
- Python SciPy ndimage.map_coordinates()用法及代碼示例
- Python SciPy ndimage.generic_laplace用法及代碼示例
- Python SciPy ndimage.generate_binary_structure用法及代碼示例
- Python SciPy ndimage.binary_opening用法及代碼示例
- Python SciPy ndimage.binary_fill_holes用法及代碼示例
- Python SciPy ndimage.maximum_filter用法及代碼示例
- Python SciPy ndimage.minimum_position用法及代碼示例
- Python SciPy ndimage.labeled_comprehension用法及代碼示例
- Python SciPy ndimage.grey_erosion用法及代碼示例
- Python SciPy ndimage.spline_filter用法及代碼示例
- Python SciPy ndimage.shift用法及代碼示例
- Python SciPy ndimage.minimum用法及代碼示例
- Python SciPy ndimage.fourier_uniform用法及代碼示例
- Python SciPy ndimage.gaussian_laplace用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.ndimage.distance_transform_cdt。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。