用法:
skimage.measure.find_contours(image, level=None, fully_connected='low', positive_orientation='low', *, mask=None)
在二維數組中查找給定級別值的 iso-valued 輪廓。
使用“marching squares” 方法計算特定級別值的輸入二維數組的iso-valued 輪廓。數組值是線性插值的,以便為輸出輪廓提供更好的精度。
- image:二維數組
輸入要在其中查找輪廓的圖像。
- level:浮點數,可選
在數組中查找輪廓的值。默認情況下,級別設置為 (max(image) + min(image)) /2
- fully_connected:字符串,{‘low’, ‘high’}
指示是否考慮低於給定級別值的數組元素fully-connected(因此高於該值的元素將僅麵連接),反之亦然。 (有關詳細信息,請參閱下麵的注釋。)
- positive_orientation:字符串,{‘low’, ‘high’}
指示輸出等高線是否會在低或 high-valued 元素島周圍生成 positively-oriented 多邊形。如果‘low’ 則輪廓將逆時針圍繞iso-value 下方的元素纏繞。或者,這意味著 low-valued 元素始終位於輪廓的左側。 (詳情見下文。)
- mask:bool 的 2D ndarray,或無
一個布爾掩碼,True,我們要在其中繪製輪廓。請注意,始終將 NaN 值排除在考慮的區域之外(在
array
為NaN
的地方,mask
設置為False
)。
- contours:(n,2)-ndarrays 列表
每個輪廓都是一個形狀為
(n, 2)
的 ndarray,由沿輪廓的 n 個(row, column)
坐標組成。
- array:DEPRECATED
已棄用以支持圖像。
參數:
返回:
其他參數:
注意:
行進方塊算法是行進立方體算法 [1] 的一個特例。這裏有一個簡單的解釋:
http://users.polytech.unice.fr/~lingrand/MarchingCubes/algo.html
行進方塊算法中有一個不明確的情況:當給定的
2 x 2
-元素方塊有兩個high-valued和兩個low-valued元素時,每對對角相鄰。 (其中 high- 和 low-valued 是相對於所尋求的輪廓值。)在這種情況下,可以通過分隔 low-valued 元素的薄地峽將 high-valued 元素“連接在一起”,反之亦然.當元素通過對角線連接在一起時,它們被認為是“完全連接的”(也稱為“face+vertex-connected”或“8-connected”)。隻有high-valued或low-valued元素可以是fully-connected,其他集合將被視為“face-connected”或“4-connected”。默認情況下,low-valued元素被認為是fully-connected;這可以使用‘fully_connected’ 參數進行更改。輸出輪廓不保證是關閉的:與數組邊或masked-off 區域(掩碼為 False 或數組為 NaN)相交的輪廓將保持打開狀態。所有其他輪廓將被關閉。 (可以通過檢查起點是否與終點相同來測試輪廓的closed-ness。)
輪廓是定向的。默認情況下,低於輪廓值的數組值位於輪廓的左側,大於輪廓值的值位於右側。這意味著輪廓將在 low-valued 像素的島嶼周圍逆時針(即“正向”)纏繞。可以使用 ‘positive_orientation’ 參數更改此行為。
輸出列表中輪廓的順序由輪廓中最小
x,y
(按字典順序)坐標的位置確定。這是遍曆輸入數組的方式的副作用,但可以依賴。警告
假定數組坐標/值是指中央的數組元素。舉一個簡單的示例輸入:
[0, 1]
.該數組中 0.5 的插值位置在 0 元素之間(在x=0
) 和 1 元素 (在x=1
),因此會落在x=0.5
.這意味著要找到合理的等高線,最好在預期的“light” and “dark” 值之間找到等高線。特別是,給定一個二值化數組,不要選擇在數組的低值或高值處查找輪廓。這通常會產生退化的輪廓,尤其是在單個數組元素寬的結構周圍。而是選擇一個中間值,如上所述。
參考:
- 1
Lorensen, William and Harvey E. Cline. Marching Cubes: A High Resolution 3D Surface Construction Algorithm. Computer Graphics (SIGGRAPH 87 Proceedings) 21(4) July 1987, p. 163-170). DOI:10.1145/37401.37422
例子:
>>> a = np.zeros((3, 3)) >>> a[0, 0] = 1 >>> a array([[1., 0., 0.], [0., 0., 0.], [0., 0., 0.]]) >>> find_contours(a, 0.5) [array([[0. , 0.5], [0.5, 0. ]])]
相關用法
- Python skimage.measure.ransac用法及代碼示例
- Python skimage.measure.profile_line用法及代碼示例
- Python skimage.measure.perimeter_crofton用法及代碼示例
- Python skimage.measure.moments_hu用法及代碼示例
- Python skimage.measure.moments_coords_central用法及代碼示例
- Python skimage.measure.LineModelND用法及代碼示例
- Python skimage.measure.block_reduce用法及代碼示例
- Python skimage.measure.moments用法及代碼示例
- Python skimage.measure.shannon_entropy用法及代碼示例
- Python skimage.measure.moments_normalized用法及代碼示例
- Python skimage.measure.euler_number用法及代碼示例
- Python skimage.measure.perimeter用法及代碼示例
- Python skimage.measure.moments_central用法及代碼示例
- Python skimage.measure.EllipseModel用法及代碼示例
- Python skimage.measure.regionprops用法及代碼示例
- Python skimage.measure.CircleModel用法及代碼示例
- Python skimage.measure.label用法及代碼示例
- Python skimage.measure.regionprops_table用法及代碼示例
- Python skimage.measure.moments_coords用法及代碼示例
- Python skimage.metrics.hausdorff_distance用法及代碼示例
注:本文由純淨天空篩選整理自scikit-image.org大神的英文原創作品 skimage.measure.find_contours。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。