用法:
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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。