当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python skimage.measure.euler_number用法及代码示例


用法:

skimage.measure.euler_number(image, connectivity=None)

计算二值图像中的欧拉特性。

对于 2D 对象,欧拉数是对象数减去孔数。对于 3D 对象,欧拉数等于对象的数量加上孔的数量,再减去隧道或环路的数量。

参数

image: (N, M) ndarray or (N, M, D) ndarray.

2D 或 3D 图像。如果图像不是二进制的,则所有严格大于零的值都被视为对象。

connectivityint 可选

将像素/体素视为邻居的最大正交跳数。接受的值范围从 1 到 input.ndim 如果 None ,则使用 input.ndim 的完整连接。为 2D 图像定义了 4 个或 8 个邻域(分别为连接 1 和 2)。为 3D 图像定义了 6 个或 26 个邻域(分别为连接 1 和 3)。连接 2 未定义。

返回

euler_numberint

图像中所有对象的集合的欧拉特征。

注意

欧拉特征是一个整数,说明了输入图像中所有对象的集合的拓扑结构。如果对象是 4 连通的,那么背景是 8 连通的,反之亦然。

欧拉特性的计算是基于离散空间中的积分几何公式。在实践中,构建一个邻域配置,并为每个配置应用一个 LUT。使用的系数是 Ohser 等人的系数。

计算几个连通性的欧拉特性会很有用。不同连通性的结果之间的较大相对差异表明图像分辨率(相对于对象和孔的大小)太低。

参考

1

S. Rivollier. Analyse d’image geometrique et morphometrique par diagrammes de forme et voisinages adaptatifs generaux. PhD thesis, 2010. Ecole Nationale Superieure des Mines de Saint-Etienne. https://tel.archives-ouvertes.fr/tel-00560838

2

Ohser J., Nagel W., Schladitz K. (2002) The Euler Number of Discretized Sets - On the Choice of Adjacency in Homogeneous Lattices. In: Mecke K., Stoyan D. (eds) Morphology of Condensed Matter. Lecture Notes in Physics, vol 600. Springer, Berlin, Heidelberg.

例子

>>> import numpy as np
>>> SAMPLE = np.zeros((100,100,100));
>>> SAMPLE[40:60, 40:60, 40:60]=1
>>> euler_number(SAMPLE) 
1...
>>> SAMPLE[45:55,45:55,45:55] = 0;
>>> euler_number(SAMPLE) 
2...
>>> SAMPLE = np.array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0],
...                    [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0],
...                    [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0],
...                    [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0],
...                    [0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0],
...                    [0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],
...                    [0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],
...                    [1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0],
...                    [0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1],
...                    [0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1]])
>>> euler_number(SAMPLE)  # doctest:
0
>>> euler_number(SAMPLE, connectivity=1)  # doctest:
2

相关用法


注:本文由纯净天空筛选整理自scikit-image.org大神的英文原创作品 skimage.measure.euler_number。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。