完整的API文档

这是一个用Python语言编写的计算机视觉包。

主要特征

特征

计算全局和局部特征(几个子模块,包括SURF和Haralick特征)

卷积

卷积与小波

变形

形态特征。大多数是在mahotas级别提供的,包括腐蚀()、扩张()...

分水岭

种子分水岭实施

不读取/不保存

读/写图像

文档:https://mahotas.readthedocs.io/

引文:

科埃略,路易斯·佩德罗,2013年。Mahotas:用于可编写脚本的计算机视觉的开源软件。开放研究软件杂志,1:E3,DOI:https://dx.doi.org/10.5334/jors.ac

mahotas.as_rgb(r, g, b)

返回RGB图像, r 在红色通道中, g 在绿色中,和 b 穿着蓝色的。这些通道的对比度很大。

如果有任何频道是 None ,则该通道被设置为零。同样的情况也可以通过传递 0 因为这是渠道价值所在。事实上,将一个数字作为通道值传递会将整个通道设置为该值。

参数:
r,g,b类数组或整型,可选

通道可以是任何类型,也可以不是。至少一个必须不是None,并且所有的形状都必须相同。

退货:
rgbNdarray

RGB ndarray

实例

这显示了一张漂亮的图片::

z1 = np.linspace(0, np.pi)
X,Y = np.meshgrid(z1, z1)
red = np.sin(X)
green = np.cos(4*Y)
blue = X*Y

plt.imshow(mahotas.as_rgb(red, green, blue))

请注意, blue 频道与其他频道非常不同(从0..2500到0..1),但是 as_rgb 单独拉伸每个通道。

mahotas.bbox(img, border={0}, as_slice={False})

计算图像img的边框。

参数:
imgNdarray

任意整数图像类型

退货:
min1,max1,min2,max2整型,整型

这些都是这样的 img[min1:max1, min2:max2] 包含所有非零像素。返回时间 as_slice 为FALSE(默认值)

s切片

边界框的切片表示形式。返回时间 as_slice 是真的吗

mahotas.border(labeled, i, j, Bc={3x3 cross}, out={np.zeros(labeled.shape, bool)}, always_return=True)

计算之间的边界区域 ij 地区。

如果像素有值,则它位于边框上 i (或 j )和其附近的像素(由 Bc )有价值 j (或 i )。

参数:
labeled整数类型的ndarray

输入标记数组

i整数
j整数
Bc结构元素,可选
out :ndarray形状相同 labeled ,dtype=bool,可选与形状相同的ndarray

存储输出的位置。如果 None ,则分配一个新的数组

always_return布尔值,可选

如果为False,则在边界上没有像素的情况下,返回 None 。否则(默认设置),它始终返回一个数组,即使该数组为空。

退货:
border_img布尔ndarray

像素是True,恰好是在 ij 在……里面 labeled

mahotas.borders(labeled, Bc={3x3 cross}, out={np.zeros(labeled.shape, bool)})

计算边框像素

如果像素有值,则它位于边框上 i 以及其邻域中的像素(由 Bc )有价值 ji != j

参数:
labeled整数类型的ndarray

输入标记数组

Bc结构元素,可选
out :ndarray形状相同 labeled ,dtype=bool,可选与形状相同的ndarray

存储输出的位置。如果 None ,则分配一个新的数组

mode{'reflect', 'nearest', 'wrap', 'mirror', 'constant' [default], 'ignore'}

如何处理边框

退货:
border_img布尔ndarray

像素在有边框的地方为True labeled

mahotas.bwperim(bw, n=4)

找出二值图像中对象的周长。

如果像素的值为1,并且其邻域中至少有一个零值像素,则该像素是对象周长的一部分。

默认情况下,像素的邻域是最近的4个像素,但如果 n 设置为8,则将考虑最近的8个像素。

参数:
bwNdarray

黑白图像(任何其他图像都将转换为黑白图像)

n整型,可选

连通性。必须是4或8(默认值:4)

mode{'reflect', 'nearest', 'wrap', 'mirror', 'constant' [default], 'ignore'}

如何处理边框

退货:
perimNdarray

布尔型图像

参见

borders

函数这是一个更一般的函数

mahotas.cdilate(f, g, Bc={3x3 cross}, n=1)

条件扩张法

cdilate 创建图像 y 通过放大图像 f 按结构元素 Bc 有条件地添加到图像 g 。可以递归地应用此运算符 n 泰晤士报。

参数:
f灰度(uint8或uint16)或二进制图像。
g条件化的形象。(灰度或二进制)。
Bc结构元素(默认:3x3十字)
n迭代次数(默认为1)
退货:
y图像
mahotas.center_of_mass(img, labels=None)

返回img的质心。

如果 labels 是给定的,则返回 L 质心,由标识的每个区域一个质心 labels (包括区域0)。

参数:
imgNdarray
labelsNdarray,可选

带标签的数组(即与相同形状的整数数组 img 以使得通过具有不同值的区域来标识每个“对象”)。

退货:
coordsNdarray

输出的确切形状取决于 labels 使用了论据。如果 labels is None ,则返回值为1-ndarray坐标 (size = len(img.shape) );否则,返回值为坐标的2ndarray (shape = (labels.max()+1, len(img.shape) )。

mahotas.cerode(f, g, Bc={3x3 cross}, out={np.empty_as(A)})

条件性形态侵蚀。

操作的类型取决于 dtypeA 好了!如果是布尔的,则侵蚀是二进制的,否则是灰度侵蚀。在灰阶侵蚀的情况下,域中的最小值 Bc 被解释为-inf。

参数:
fNdarray

输入图像

gNdarray

条件图像

BcNdarray,可选

结构元素。默认情况下,使用十字(请参见 get_structuring_elem 有关默认设置的详细信息)。

退货:
conditionally_erodedNdarray

侵蚀的版本 f 有条件的 g

参见

erode

此函数的无条件版本

dilate
mahotas.close(f, Bc={3x3 cross}, out={np.empty_like(f)})

形态闭合。

close 创建图像 y 通过图像的形态闭合 f 按结构元素 Bc 。在二进制情况下,结构元素的结束 Bc 可以被解释为包含该图像的所有二值图像的交集 f 并有一个等于平移的孔 Bc 。在灰度级的情况下,有一种类似的解释,即取函数本影。

参数:
fNdarray

灰度(uint8或uint16)或二进制图像。

BcNdarray,可选

结构元素。(默认:3x3小数十字)。

outNdarray,可选

输出数组

output弃用

不要使用

退货:
yNdarray

参见

open

功能

mahotas.close_holes(ref, Bc=None)

CLOSED=CLOSE_HOOLS(参考,BC=无):

闭合孔洞

参数:
refNdarray

参考图像。这应该是一个二进制图像。

Bc结构元素,可选

默认:3x3十字

退货:
closedNdarray

的超集 ref (即有封闭的孔洞)

mahotas.convolve(f, weights, mode='reflect', cval=0.0, out={new array})

卷积 fweights

卷积是在 doubles 以避免上溢/下溢,但结果随后被强制转换为 f.dtypeThis conversion may result in over/underflow when using small integer types or unsigned types (if the output is negative). 转换为浮点表示形式可避免此问题:

c = convolve(f.astype(float), kernel)
参数:
fNdarray

输入。支持任何维度

weightsNdarray

权重过滤器。如果不是与相同的数据类型 f ,它是被铸造的

mode{'reflect' [default], 'nearest', 'wrap', 'mirror', 'constant', 'ignore'}

如何处理边框

cval双倍,可选

如果 mode 为常量,使用哪个常量(默认值:0.0)

outNdarray,可选

输出数组。必须具有与相同的形状和数据类型 f 以及是C-连续的。

退货:
convolved :ndarray的数据类型与 f与相同数据类型的ndarray
mahotas.convolve1d(f, weights, axis, mode='reflect', cval=0.0, out={new array})

卷积 fweights 沿轴 axis

卷积是在 doubles 以避免上溢/下溢,但结果随后被强制转换为 f.dtype

参数:
fNdarray

输入。支持任何维度

weights一维ndarray

权重过滤器。如果不是与相同的数据类型 f ,它是被铸造的

axis集成

要沿其卷积的轴

mode{'reflect' [default], 'nearest', 'wrap', 'mirror', 'constant', 'ignore'}

如何处理边框

cval双倍,可选

如果 mode 为常量,使用哪个常量(默认值:0.0)

outNdarray,可选

输出数组。必须具有与相同的形状和数据类型 f 以及是C-连续的。

退货:
convolved :ndarray的数据类型与 f与相同数据类型的ndarray

参见

convolve

函数泛型卷积

mahotas.croptobbox(img, border=0)

返回裁剪到图像边界框的img版本

参数:
imgNdarray

整型图像数组

border整型,可选

是否添加边框(默认为无边框)

退货:
nimgNdarray

IMG的子图。

备注

请注意,边框在边界框上,而不是在最终图像上!这意味着如果图像的边距上有一个正像素,它仍将位于边距上。

这确保了结果始终是输入的子图像。

mahotas.cwatershed(surface, markers, Bc=None, return_lines=False) W, WL = cwatershed(surface, markers, Bc=None, return_lines=True)

N维中的种子分水岭

此函数计算输入曲面(实际上可能是n维体积)上的分水岭变换。

此函数需要初始种子点。初始化分水岭的传统方法是使用区域最小值::

minima = mh.regmin(f)
markers,nr_markers = mh.label(minima)
W = cwatershed(f, minima)
参数:
surface图像
markers图像

初始标记(必须是带标签的图像,即0表示背景,较高的整数表示不同的区域)

BcNdarray,可选

结构元素(默认:3x3十字)

return_lines布尔型,可选

是否返回分隔线(除区域外)

退货:
W整数ndarray(int64整数)

区域图像(即W [i,j] ==像素区域(i,j))

WL :线条图像 (if return_lines==True )线条图像(
mahotas.daubechies(f, code, inline=False)

Daubechies小波变换

如果图像大小是2的幂,则此函数效果最好!

参数:
fNdarray

2-D图像

code应力

‘D2’,‘D4’,...《D20》

inline布尔值,可选

是否将结果写入输入图像。默认情况下,将返回新图像。整数图像始终转换为浮点数并进行复制。

参见

haar

函数Haar变换(等价于D2)

mahotas.dilate(A, Bc=None, out=None, output=None)

形态扩张。

操作的类型取决于 dtypeA 好了!如果是布尔的,则膨胀是二进制的,否则就是灰度膨胀。在灰度级膨胀的情况下, Bc 被解释为+inf。

参数:
A一群野猪

输入数组

BcNdarray,可选

结构元素。默认情况下,使用十字(请参见 get_structuring_elem 有关默认设置的详细信息)。

outNdarray,可选

输出数组。如果使用,这必须是相同的C数组 dtype AS A 。否则,将分配一个新数组。

output弃用

不要使用

退货:
dilatedNdarray

扩张版 A

参见

erode
mahotas.disk(radius, dim=2)

返回半径的二进制磁盘结构元素 radius 和维度 dim

参数:
radius集成

退回磁盘的半径(像素)

dim整型,可选

返回数组的维度(默认为2)

退货:
D布尔ndarray
mahotas.distance(bw, metric='euclidean2')

计算图像的距离变换 bw **

dmap[i,j] = min_{i', j'} { (i-i')**2 + (j-j')**2 | !bw[i', j'] }

也就是说,在每个点上,计算到背景的距离。

如果没有背景,那么将在所有像素中返回一个非常高的值(这是一种无穷大)。

参数:
bwNdarray

如果是布尔值, False 将表示背景和 True 前台。如果不是布尔值,则会被解释为 bw != 0 (这样,您就可以毫无问题地使用带标签的图像)。

metric字符串,可选

‘euclidean2’(默认)或‘euclidean2’之一

退货:
dmapNdarray

距离图

参考文献

对于2-D图像,使用以下算法:

首页--期刊主要分类--期刊细介绍--期刊细介绍 Distance transforms of sampled functions. Cornell Computing and Information. 2004年。

可在以下网址获得:https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.88.1647&rep=rep1&type=pdf.

对于n维图像(n>2),使用较慢的手工方法。

mahotas.dog(img, sigma1=2, thresh=None, just_filter=False)

使用高斯差(DOG)算子计算边缘。

edges 是边缘的二进制图像。

参数:
img任何2D-射线
sigma1第一个高斯过滤器的sigma值。第二个过滤器

将具有西格玛值1.001*西格玛1

multiplier得到sigma2的乘数。Sigma2=sigma1*乘数
just_filter布尔型,可选

如果为TRUE,则返回使用DOG滤镜过滤图像的结果,没有检测到过零(默认为FALSE)。

退货:
edgesNdarray

边缘的二进制图像,除非 just_filter ,在这种情况下,它将是一个浮点值数组。

mahotas.erode(A, Bc={3x3 cross}, out={np.empty_as(A)})

形态侵蚀。

操作的类型取决于 dtypeA 好了!如果是布尔的,则侵蚀是二进制的,否则是灰度侵蚀。在灰阶侵蚀的情况下,域中的最小值 Bc 被解释为-inf。

参数:
ANdarray

输入图像

BcNdarray,可选

结构元素。默认情况下,使用十字(请参见 get_structuring_elem 有关默认设置的详细信息)。

outNdarray,可选

输出数组。如果使用,这必须是相同的C数组 dtype AS A 。否则,将分配一个新数组。

退货:
erosionNdarray

侵蚀的版本 A

参见

dilate
mahotas.euler(f, n=8)

计算像f的欧拉数

欧拉数也称为欧拉特性,因为许多其他数学对象也称为欧拉数。

参数:
fNdarray

2-D二值图像

n整型,可选

连通性,(4,8)之一。默认:8

mode{'reflect', 'nearest', 'wrap', 'mirror', 'constant' [default]}

如何处理边框

退货:
euler_nr集成

欧拉数

参考文献

https://en.wikipedia.org/wiki/Euler_characteristic

使用以下算法:

A Fast Algorithm for Computing the Euler Number of an Image and its VLSI Implementation ,DOI:10.1109/ICVD.2000.812628

mahotas.find(f, template)

将模板与图像精确匹配

坐标=查找(f,模板)

输出的格式与 np.where 功能。

参数:
fNdarray

输入。目前仅支持二维图像。

templateNdarray

要匹配的模板。必须显式传递,没有默认设置。

退货:
matchnp.array
coordinatesnp.array

这些是比赛的坐标。该格式类似于的输出 np.where ,但在ndarray中。

mahotas.fullhistogram(img)

返回带有条形图的直方图 0, 1, ..., ``img.max()``

在调用此函数后,将会出现 hist[i] == (img == i).sum() ,为所有人 i

参数:
img无符号类型的类似数组

输入图像。

退货:
histNp.uint32类型的dnarray

这将是一个大小 img.max() + 1

备注

只处理无符号整数数组。

mahotas.gaussian_filter(array, sigma, order=0, mode='reflect', cval=0., out={np.empty_like(array)})

多维高斯滤波。

参数:
arrayNdarray

输入数组,支持任意维度。如果数组是整数数组,则会转换为双精度数组。

sigma标量或标量序列

高斯核的标准差。对于每个轴,高斯过滤器的标准偏差以序列或单个数字的形式给出,在这种情况下,所有轴的标准偏差都是相等的。

order{0,1,2,3}或同一集合中的序列,可选

过滤器沿每个轴的顺序以整数序列或单个数字的形式给出。阶数为0对应于高斯核的卷积。1、2或3的阶数对应于与高斯的一阶、二阶或三阶导数的卷积。不实现更高阶导数

mode{'reflect' [default], 'nearest', 'wrap', 'mirror', 'constant', 'ignore'}

如何处理边框

cval双倍,可选

如果 mode 为常量,使用哪个常量(默认值:0.0)

outNdarray,可选

输出数组。必须具有相同的形状 array 以及是C-连续的。如果 array 为整数数组,则必须为双精度数组;否则,它的类型必须与 array

退货:
filteredNdarray

过滤后的版本 array

备注

多维滤波器被实现为一维卷积滤波器的序列。中间数组以与输出相同的数据类型存储。因此,对于精度有限的输出类型,结果可能不精确,因为中间结果的存储精度可能不够高。

mahotas.gaussian_filter1d(array, sigma, axis=-1, order=0, mode='reflect', cval=0., out={np.empty_like(array)})

一维高斯滤波。

参数:
arrayNdarray

浮点类型的输入数组

sigma浮动

高斯核的标准差(以像素为单位)

axis整型,可选

要对其进行操作的轴

order{0,1,2,3},可选

阶数为0对应于高斯核的卷积。1、2或3的阶数对应于与高斯的一阶、二阶或三阶导数的卷积。不实现更高阶导数

mode{'reflect' [default], 'nearest', 'wrap', 'mirror', 'constant', 'ignore'}

如何处理边框

cval双倍,可选

如果 mode 为常量,使用哪个常量(默认值:0.0)

outNdarray,可选

输出数组。必须具有与相同的形状和数据类型 array 以及是C-连续的。

退货:
filteredNdarray

过滤后的版本 array

mahotas.get_structuring_elem(A, Bc)

检索适当的结构元素

参数:
ANdarray

将对其进行操作的数组

BcNONE、INT或类似数组
:

则BC被认为是1

一个整数:
有两个关联的语义:
连通性

Bc[y,x] = [[ is |y - 1| + |x - 1| <= Bc_i ]]

计数

Bc.sum() == Bc_i 这是更传统的含义(当一个人写到“4-Connected”时,这就是他脑海中的意思)。

幸运的是,该值本身允许区分这两种语义,如果使用正确,应该不会出现歧义。

一个数组:

这应该是相同的nr。尺寸为A,如果类型正确,将通过。否则,它将被铸造。

退货:
Bc_outNdarray

结构元素。该数组的类型将与A,C连续。

mahotas.haar(f, preserve_energy=True, inline=False)

哈尔变换

参数:
f二维ndarray

输入图像

preserve_energy布尔值,可选

是否将结果正常化以保存能量(默认设置)。

inline布尔值,可选

是否将结果写入输入图像。默认情况下,将返回新图像。整数图像始终转换为浮点数并进行复制。

参见

ihaar

函数逆Haar变换

mahotas.hitmiss(input, Bc, out=np.zeros_like(input))

命中和未命中转换

For a given pixel position, the hit&miss is True if, when Bc is overlaid on input, centered at that position, the 1 values line up with 1s, while the 0s line up with 0s (2s correspond to don't care).

参数:
input输入ndarray

这被解释为二进制数组。

BcNdarray

命中和未命中模板,值必须是(0、1、2)之一

outNdarray,可选

用于输出。必须是大小相同的布尔型ndarray input

output弃用

不要使用

退货:
filteredNdarray

实例

print(hitmiss(np.array([
            [0,0,0,0,0],
            [0,1,1,1,1],
            [0,0,1,1,1]]),
        np.array([
            [0,0,0],
            [2,1,1],
            [2,1,1]])))

prints::

    [[0 0 0 0 0]
     [0 0 1 1 0]
     [0 0 0 0 0]]
mahotas.idaubechies(f, code, inline=False)

Daubechies小波逆变换

参数:
fNdarray

2-D图像

code应力

‘D2’,‘D4’,...《D20》

inline布尔值,可选

是否将结果写入输入图像。默认情况下,将返回新图像。整数图像始终转换为浮点数并进行复制。

参见

haar

函数Haar变换(等价于D2)

mahotas.ihaar(f, preserve_energy=True, inline=False)

逆Haar变换

ihaar(haar(f)) 大致等于 f (相同,除非可能存在舍入问题)。

参数:
f二维ndarray

输入图像。如果是整数图像,则转换为浮点(双精度)。

preserve_energy布尔值,可选

是否将结果正常化以保存能量(默认设置)。

inline布尔值,可选

是否将结果写入输入图像。默认情况下,将返回新图像。整数图像始终转换为浮点数并进行复制。

退货:
fNdarray

参见

haar

函数正向Haar变换

mahotas.imread(filename, as_grey=False)

从文件中将图像读入ndarray。

此功能取决于正在安装的PIL(或枕头)。

参数:
filename应力

文件名

as_grey布尔型,可选

是否转换为灰度图像(默认:否)

mahotas.imresize(img, nsize, order=3)

调整图像大小

此函数以两种方式工作:如果 nsize 是整数的元组或列表,则结果将是此大小;否则,此函数的行为与 mh.interpolate.zoom

参数:
imgNdarray
nsize浮点数或元组(浮点数)或元组(整数)
回报的大小。含义取决于类型

浮动:img‘.Shape [i] =n大小 * img.shape[i] tuple of float: img'.shape[i] = nsize[i] * img.shape [i] Int:img‘.Shape的元组 [i] =n大小 [i]

order整型,可选

要使用的样条线顺序(默认值:3)

退货:
img'Ndarray

参见

zoom

相似功能

scipy.misc.pilutil.imresize

相似功能

mahotas.imsave(filename, array)

写入 array 放入文件中 filename

此功能取决于正在安装的PIL(或枕头)。

参数:
filename应力

文件系统上的路径

array类ndarray
mahotas.label(array, Bc={3x3 cross}, output={new array})

标记数组,它被解释为二进制数组

这也被称为 connected component labeled ,其中连接性由结构化元素定义 Bc

请参阅:https://en.wikipedia.org/wiki/Connected-component_labeling

参数:
arrayNdarray

这将被解释为二进制数组

BcNdarray,可选

这是要使用的结构化元素

outNdarray,可选

输出数组。必须是np.int32类型的C数组

退货:
labeledNdarray

标记的结果

nr_objects集成

对象数量

mahotas.labeled_sum(array, labeled, minlength=None)

标记为SUM。Sum将是一个大小为 labeled.max() + 1 ,在哪里 sum[i] 等于 np.sum(array[labeled == i])

参数:
array任何类型的ndarray
labeled集成ndarray

标签地图。这与从返回的类型相同 mahotas.label()

minlength整型,可选

返回数组的最小大小。如果标签的数量少于 minlength 区域,0被添加到结果中。(可选)

退货:
sums :一维ndarray,共 array.dtype一维阵列,共
mahotas.laplacian_2D(array, alpha=0.2)

二维拉普拉斯滤波器。

参数:
arrayNdarray

输入二维数组。如果数组是整数数组,则会转换为双精度数组。

alpha标量或标量序列

控制拉普拉斯运算符的形状。必须是0-1。较大的值会使操作符放大对角线方向。

退货:
filteredNdarray

过滤后的版本 array

mahotas.locmax(f, Bc={3x3 cross}, out={np.empty(f.shape, bool)})

局部最大值

参数:
fNdarray
BcNdarray,可选

结构元素

outNdarray,可选

用于输出。必须是大小相同的布尔型ndarray f

output弃用

不要使用

退货:
filteredNdarray

与f大小相同的布尔图像。

参见

regmax

功能区域最大值。这是一个比局部最大值更严格的标准,因为它考虑了整个对象,而不仅仅是 Bc *0 0 0 2 0 0 0 2 0 0 0 3 0 0 3 0 0 3 0 0 0 2是局部极大值,因为它在其邻域内具有最大值,但它不是区域极大值。

locmin

函数局部极小值

mahotas.locmin(f, Bc={3x3 cross}, out={np.empty(f.shape, bool)})

局部极小值

参数:
fNdarray
BcNdarray,可选

结构元素

outNdarray,可选

用于输出。必须是大小相同的布尔型ndarray f

output弃用

不要使用

退货:
filteredNdarray

与f大小相同的布尔图像。

参见

locmax

函数区域最大值

mahotas.majority_filter(img, N=3, out={np.empty(img.shape, bool)})

多数过滤器

滤过 [y,x] 如果大小平方中的大多数像素为正,则为正 N 以(y,x)为中心是正的。

参数:
imgNdarray

输入img(当前仅接受2-D图像)

N整型,可选

过滤器大小(必须为奇数),默认为3。

outNdarray,可选

用于输出。必须是大小相同的布尔型ndarray img

output弃用

不要使用

退货:
filteredNdarray

与img大小相同的布尔图像。

mahotas.mean_filter(f, Bc, mode='ignore', cval=0.0, out=None)

平均过滤器。价值在 mean[i,j] 将是由定义的邻域中的值的平均值 Bc

参数:
fNdarray

输入。支持任何维度

BcNdarray

定义邻里关系。必须显式传递,没有默认设置。

mode{'reflect', 'nearest', 'wrap', 'mirror', 'constant', 'ignore' [ignore]}

如何处理边界。默认情况下,忽略边界之外的点,以便在边界附近计算的平均值包含较少的元素。

cval双倍,可选

如果 mode 为常量,使用哪个常量(默认值:0.0)

outNdarray,可选

输出数组。必须是具有相同形状的双精度数组 f 以及是C-连续的。

退货:
mean :ndarray类型为DOUBLE且形状相同 f双重型且形状相同的ndarray

参见

median_filter

一种可选的过滤方法

mahotas.median_filter(f, Bc={square}, mode='reflect', cval=0.0, out={np.empty(f.shape, f.dtype})

中值滤波

参数:
fNdarray

输入。支持任何维度

BcNdarray或int,可选

定义邻域,缺省为3边的正方形。

mode{'reflect' [default], 'nearest', 'wrap', 'mirror', 'constant', 'ignore'}

如何处理边框

cval双倍,可选

如果 mode 为常量,使用哪个常量(默认值:0.0)

outNdarray,可选

输出数组。必须具有与相同的形状和数据类型 f 以及是C-连续的。

退货:
median :ndarray的类型和形状与 f与相同类型和形状的ndarray

中位数 [i,j] F中各点的中值是否接近(i,j)

mahotas.moments(img, p0, p1, cm=(0, 0), convert_to_float=True)

返回图像的p0-p1时刻 img

计算出的公式为

sum_{ij} { img[i,j] (i - c0)**p0 (j - c1)**p1 }

其中Cm=(c0,c1)。如果 cm 未给出,则使用(0,0)。

如果图像是整型的,则在内部将其转换为np.flat64,除非 convert_to_float 是假的。原因是,否则,除了小图像外,很可能会溢出。由于此转换花费的时间比计算时间长,因此您可以在确定图像足够小而不会出现溢出的情况下将其关闭。请注意,如果满足以下条件,则不会进行转换 img 是任何浮点类型。

参数:
img2-ndarray

一个2-D雷达

p0浮动

第一维的功率

p1浮动

第二维的力量

cm(int,int),可选

重心(默认为0,0)

convert_to_float布尔型,可选

是否转换为浮点(默认为True)

normalize布尔型,可选

是否规格化到图像大小(默认值:FALSE)

退货:
力矩:浮点

浮点数

备注

它只适用于2-D图像

mahotas.open(f, Bc={3x3 cross}, out={np.empty_like(f)})

形态开口。

open 通过图像的形态打开创建图像y f 按结构元素 Bc

在二进制情况下,结构元素的开头 Bc 可被解释为 b 包括在 f 。在灰度级的情况下,有一种类似的解释,即取函数本影。

参数:
fNdarray

灰度(uint8或uint16)或二进制图像。

BcNdarray,可选

结构元素(默认为3x3元十字)。

outNdarray,可选

输出数组

output弃用

不要使用

退货:
yNdarray

参见

open

功能

mahotas.otsu(img, ignore_zeros=False)

根据最大类间方差法计算阈值。

示例::

import mahotas as mh
import mahotas.demos

im = mahotas.demos.nuclear_image()
# im is stored as RGB, let's convert to single 2D format:
im = im.max(2)

#Now, we compute Otsu:
t = mh.otsu(im)

# finally, we use the value to form a binary image:
bin = (im > t)

有关方法的详细信息,请参阅维基百科:https://en.wikipedia.org/wiki/Otsu‘s_method

参数:
img将图像表示为一个模糊的数组。

它应该是无符号整数类型。

ignore_zeros布尔型

是否忽略零值像素(默认值:FALSE)

退货:
T整数

门槛

mahotas.overlay(gray, red=None, green=None, blue=None, if_gray_dtype_not_uint8='stretch')

创建一个灰度级的图像,但可能有布尔覆盖。

参数:
gray: ndarray of type np.uint8

应为np.uint8类型的灰度图像

red,green,blueNdarray,可选

布尔数组

if_gray_dtype_not_uint8字符串,可选
如果出现以下情况,该怎么办 gray 不是类型 np.uint8 ,一定是其中之一

‘Stretch’(默认):函数 stretch 被称为。‘Error’:在这种情况下,将引发错误

退货:
overlaidNdarray

彩色图像

mahotas.rank_filter(f, Bc, rank, mode='reflect', cval=0.0, out=None)

等级过滤器。价值在 ranked[i,j] 将会是 rank H在由以下定义的邻里中最大 Bc

参数:
fNdarray

输入。支持任何维度

BcNdarray

定义邻里关系。必须显式传递,没有默认设置。

rank整数
mode{'reflect' [default], 'nearest', 'wrap', 'mirror', 'constant', 'ignore'}

如何处理边框

cval双倍,可选

如果 mode 为常量,使用哪个常量(默认值:0.0)

outNdarray,可选

输出数组。必须具有与相同的形状和数据类型 f 以及是C-连续的。

退货:
ranked :ndarray的类型和形状与 f与相同类型和形状的ndarray

排名 [i,j] 是 rank F中接近(i,j)的点的H值

参见

median_filter

秩滤子的一个特例

mahotas.rc(img, ignore_zeros=False)

根据Riddler-Calvard方法计算阈值。

示例::

import mahotas as mh
import mahotas.demos

im = mahotas.demos.nuclear_image()
# im is stored as RGB, let's convert to single 2D format:
im = im.max(2)

#Now, we compute a threshold:
t = mh.rc(im)

# finally, we use the value to form a binary image:
bin = (im > t)
参数:
imgNdarray

任何类型的图像

ignore_zeros布尔型,可选

是否忽略零值像素(默认值:FALSE)

退货:
T浮动

阀值

mahotas.regmax(f, Bc={3x3 cross}, out={np.empty(f.shape, bool)})

区域最大值。这是一个比局部最大值更严格的标准,因为它考虑了整个对象,而不仅仅是 Bc **

0 0 0 0 0
0 0 2 0 0
0 0 2 0 0
0 0 3 0 0
0 0 3 0 0
0 0 0 0 0

前2个是局部最大值,因为它在其邻域中具有最大值,但它不是区域最大值。

参数:
fNdarray
BcNdarray,可选

结构元素

outNdarray,可选

用于输出。必须是大小相同的布尔型ndarray f

output弃用

不要使用

退货:
filteredNdarray

与f大小相同的布尔图像。

参见

locmax

函数局部最大值。局部极大值是区域极大值的超集

mahotas.regmin(f, Bc={3x3 cross}, out={np.empty(f.shape, bool)})

区域最小值。请参阅的文档 regmax 了解更多详细信息。

参数:
fNdarray
BcNdarray,可选

结构元素

outNdarray,可选

用于输出。必须是大小相同的布尔型ndarray f

output弃用

不要使用

退货:
filteredNdarray

与f大小相同的布尔图像。

参见

locmin

函数局部极小值

mahotas.sobel(img, just_filter=False)

使用Sobel算法计算边

edges 是根据Sobel算法计算的边缘的二值图像。

此实现已调优,以与MATLAB的实现相匹配。

参数:
img任何2D-射线
just_filter布尔型,可选

如果为True,则返回使用Sobel滤镜过滤图像的结果,但不保留(默认为False)。

退货:
edgesNdarray

边缘的二进制图像,除非 just_filter ,在这种情况下,它将是一个浮点值数组。

mahotas.stretch(img, arg0=None, arg1=None, dtype=<class 'numpy.uint8'>)

Img‘=拉伸(img, [dtype=np.uint8] )img‘=拉伸(img,max, [dtype=np.uint8] )img‘=拉伸(img,min,max, [dtype=np.uint8] )

对比度将图像拉伸到范围内 [0, max] (第一表格)或 [min, max] (第二表格)。该方法是根据以下公式进行简单的线性拉伸:

p' = max * (p - img.min())/img.ptp() + min
参数:
imgNdarray

输入图像。它是 not modified 通过此函数

min整型,可选

输出的最小值 [default: 0]

max整型,可选

输出的最大值 [default: 255]

dtype输出的数据类型,可选

[default: np.uint8]

退货:
Img‘:ndarray

生成的图像。与形状相同的ndarray img 和类型 dtype

备注

如果max>255,则在未指定dtype的情况下截断值。

mahotas.stretch_rgb(img, arg0=None, arg1=None, dtype=<class 'numpy.uint8'>)

在RGB图像上按通道工作的Stretch()函数的变体

参数:
imgNdarray

输入图像。它是 not modified 通过此函数

min整型,可选

输出的最小值 [default: 0]

max整型,可选

输出的最大值 [default: 255]

dtype输出的数据类型,可选

[default: np.uint8]

退货:
Img‘:ndarray

生成的图像。与形状相同的ndarray img 和类型 dtype

参见

stretch

功能

mahotas.template_match(f, template, mode='reflect', cval=0.0, out=None, output=None)

将模板与图像进行匹配

Match=TEMPLATE_MATCH(f,模板,模式=‘反射’,cval=0,out={np.空_like(F)})

价值在 match[i,j] 将是(欧几里得平方项)的差值, template 和一扇同样大小的窗户 f 围绕着这一点。

请注意,使用与相同的数据类型执行计算 f 。因此,如果模板较大,则可能会溢出。

参数:
fNdarray

输入。支持任何维度

templateNdarray

要匹配的模板。必须显式传递,没有默认设置。

mode{'reflect' [default], 'nearest', 'wrap', 'mirror', 'constant', 'ignore'}

如何处理边框

cval双倍,可选

如果 mode 为常量,使用哪个常量(默认值:0.0)

outNdarray,可选

输出数组。必须具有与相同的形状和数据类型 f 以及是C-连续的。

退货:
match :ndarray的类型和形状与 f与相同类型和形状的ndarray

匹配 [i,j] 之间的欧几里得距离的平方 f[i-s0:i+s0,j-s1:j+s1]template (对于适当定义的 s0s1 )。

mahotas.thin(binimg)

稀释法骨架化

参数:
binimgNdarray

二进制输入图像

max_iter整型,可选

最大迭代次数(设置为负数,默认为运行完全骨架)

退货:
skel :的简略版本 binimg的骨架版本
mahotas.wavelet_center(f, border=0, dtype=float, cval=0.0)

fc 是中心版本的 f 其形状由2的幂组成。

参数:
fNdarray

输入图像

border整型,可选

要使用的边框(默认为无边框)

dtype类型,可选

类型: fc

cval浮动,可选

用哪个值填充边框(默认为0)

退货:
fcNdarray

参见

wavelet_decenter

函数反转函数

mahotas.wavelet_decenter(w, oshape, border=0)

撤消的效果 wavelet_center

参数:
wNdarray

小波阵

oshape元组

所需形状

border整型,可选

所需的边框。这 must 与用于的值相同 wavelet_center

退货:
fNdarray

这将会有形状 oshape

参见

wavelet_center

函数正向函数

mahotas.features.eccentricity(bwimage)

计算偏心距

参数:
bwimageNdarray

解释为布尔图像

退货:
r浮动

偏心率测量

mahotas.features.ellipse_axes(bwimage)

“图像椭圆”的参数

半长轴,半短轴=椭圆轴(BwImage)

返回与原始图像具有相同质量和二阶矩的恒定强度椭圆的参数。

参数:
bwimageNdarray

解释为布尔图像

退货:
semimajor浮动
semiminor浮动

参考文献

RJ普罗科普和美联社里夫斯1992年。CVGIP:图形模型和图像处理54(5):438-460

mahotas.features.haralick(f, ignore_zeros=False, preserve_haralick_bug=False, compute_14th_feature=False, return_mean=False, return_mean_ptp=False, use_x_minus_y_variance=False, distance=1)

计算Haralick纹理特征

计算四个2-D方向或13个3-D方向的Haralick纹理特征(取决于 f )。

ignore_zeros 可用于使该函数忽略任何零值像素(作为背景)。如果在所有方向上都没有非零的邻居对,则会引发异常。请注意,即使在某些非零像素的情况下也可能发生这种情况,例如:

0 0 0 0
0 1 0 0
0 1 0 0
0 0 0 0

将在以下情况下触发错误 ignore_zeros=True 因为没有水平非零对!

参数:
f整数类型的ndarray

输入图像。支持2-D和3-D图像。

distance: int, optional (default=1)

计算共生矩阵时要考虑的距离。

ignore_zeros布尔值,可选

是否忽略零像素(默认值:FALSE)。

退货:
featsNdarray of np.double(ndarray of np.Double)

4x13或4x14特征向量(每个方向一行) f 是2D、13x13或13x14(如果是3D)。要素的确切数量取决于 compute_14th_feature 此外,如果其中一个 return_meanreturn_mean_ptp 则返回一维数组。

其他参数:
preserve_haralick_bug布尔值,可选

是否复制Haralick的拼写错误(默认:FALSE)。您可能希望始终将其设置为 False 除非你想复制别人的错误实现。

compute_14th_feature布尔值,可选

是否计算并返回第14个特征

return_mean布尔值,可选

设置后,该函数返回所有方向的平均值(默认值:FALSE)。

return_mean_ptp布尔值,可选

设置后,该函数返回所有方向的平均值和PTP(点到点,即max()和min()之间的差)(默认为FALSE)。

use_x_minus_y_variance布尔值,可选

Feature 10 (index 9) has two interpretations, as the variance of |x-y| or as the variance of P(|x-y|). In order to achieve compatibility with other software and previous versions of mahotas, mahotas defaults to using VAR[P(\|x-y\|)]; if this argument is True, then it uses VAR[\|x-y\|] (default: False)

备注

哈拉里克的论文中有一个方程式有一个打字错误。此函数实现正确的功能,除非 preserve_haralick_bug 是真的。您想要错误行为的唯一原因是您想要匹配另一个实现。

参考文献

对于这些功能,请引用以下参考:

@article{Haralick1973,
    author = {Haralick, Robert M. and Dinstein, Its'hak and Shanmugam, K.},
    journal = {Ieee Transactions On Systems Man And Cybernetics},
    number = {6},
    pages = {610--621},
    publisher = {IEEE},
    title = {Textural features for image classification},
    url = {https://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=4309314},
    volume = {3},
    year = {1973}
}
mahotas.features.lbp(image, radius, points, ignore_zeros=False)

计算线性二进制模式

返回值为 histogram 功能的数量,位置 i 对应于具有代码的像素数 i 。这些代码被压缩,因此不会使用不可能的代码。因此,这就是 i 此功能,而不仅仅是二进制代码的功能 i

参数:
imageNdarray

输入图像(二维NumPy ndarray)

radius数字(整型或浮点型)

半径(像素)

points整数

要考虑的点数Nr

ignore_zeros布尔型,可选

是否忽略零(默认值:FALSE)

退货:
features一维Numpy ndarray

要素直方图。关于对这些内容的解释,请参见上面的警告。

参考文献

基于局部二值模式的灰度旋转不变纹理分类

Ojala,T.Pietikainen,M.Maenpaa,T.计算机科学讲稿(Springer)2000,ISSU 1842,第404-420页

mahotas.features.pftas(img, T={mahotas.threshold.otsu(img)})

计算无参数阈值邻接统计信息

TA是由Hamilton等人提出的。在《快速自动细胞表型图像分类》(https://www.biomedcentral.com/1471-2105/8/110)

当前版本是不带参数的改编版本。阈值通过使用大津的算法来完成(或者可以预先计算并通过设置 T ),则要包括的像素平均值周围的边距是标准偏差。这是由Coelho等人最先发表的。《结构化文献图像查找器:从生物医学文献的文本和图像中提取信息》(https://www.springerlink.com/content/60634778710577t0/)

还返回在哈密尔顿等人定义的二值化的负数上计算的版本。

使用tas()获取功能的原始版本。

参数:
imgNdarray、2D或3D

输入图像

T整型,可选

要使用的阈值(默认:使用OTSU计算)

退货:
valuesNdarray

一维特征值阵列

mahotas.features.roundness(bw)

圆度

参数:
bwNdarray

解释为布尔图像

退货:
r浮动
mahotas.features.tas(img)

计算阈值邻接统计信息

TA是由Hamilton等人提出的。在《快速自动细胞表型图像分类》(https://www.biomedcentral.com/1471-2105/8/110)

还返回在哈密尔顿等人定义的二值化的负数上计算的版本。

另请参阅pftas()以了解不带任何硬编码参数的变体。

参数:
imgNdarray、2D或3D

输入图像

退货:
valuesNdarray

一维特征值阵列

参见

pftas

无参数TAS

mahotas.features.zernike(im, degree, radius, cm={center_of_mass(im)})
mahotas.features.zernike_moments(im, radius, degree=8, cm={center_of_mass(im)})

泽尼克瞬间穿透 degree 。这些都是在半径圆上计算的 radius 居中围绕 cm (或图像的质心,如果 cm 不使用参数)。

返回绝对Zernike矩的向量 degree 对于图像 im

参数:
im2-ndarray

输入图像

radius整数

Zernike多项式的最大半径,以像素为单位。请注意,由该半径定义的圆外区域(以质心为中心)将被忽略。

degree整型,可选

使用的最大度数(默认值:8)

cm一对浮点,可选

使用的质心。默认情况下,使用图像的重心。

退货:
zvalues1-ndarray的花车

泽尼克时刻

参考文献

蒂格先生(1980)。通过一般矩理论进行图像分析。J.Opt.SoC。上午好。70(8):920-930。

mahotas.colors.rgb2gray(rgb_image, dtype=float)

将RGB图像转换为灰度图像

RGB和灰度值的解释在很大程度上依赖于对象(就像任何使用过损坏彩色图形的投影仪的人都会经历的那样)。此函数使用一种典型的转换方法,对于典型用例可以很好地工作,但如果您有严格的要求,请考虑自己实现转换以进行精细控制。

参数:
array形状为(a,b,3)的射线
dtype数据类型,可选

退货的数据类型

退货:
grey :ndarray of dtypeNdarray of
mahotas.colors.rgb2grey(rgb_image, dtype=float)

将RGB图像转换为灰度图像

RGB和灰度值的解释在很大程度上依赖于对象(就像任何使用过损坏彩色图形的投影仪的人都会经历的那样)。此函数使用一种典型的转换方法,对于典型用例可以很好地工作,但如果您有严格的要求,请考虑自己实现转换以进行精细控制。

参数:
array形状为(a,b,3)的射线
dtype数据类型,可选

退货的数据类型

退货:
grey :ndarray of dtypeNdarray of
mahotas.colors.rgb2lab(rgb, dtype={float})

将sRGB转换为L a B*坐标

https://en.wikipedia.org/wiki/CIELAB

参数:
rgbNdarray

必须是形状(h、w、3)

dtype数据类型,可选

要返回的数据类型。默认为浮点数

退货:
labNdarray
mahotas.colors.rgb2sepia(rgb)

深褐色=rgb2深褐色(RGB)

参数:
rgbNdarray

必须是形状(h、w、3)

退货:
sepiaNdarray

输出的形状与 rgb

mahotas.colors.rgb2xyz(rgb, dtype={float})

将RGB坐标转换为XYZ坐标

输入被解释为sRGB。有关更多细节,请参阅维基百科:

https://en.wikipedia.org/wiki/SRGB

参数:
rgbNdarray
dtype数据类型,可选

要返回的数据类型

退货:
xyzNdarray

参见

xyz2rgb

函数反转函数

mahotas.colors.xyz2lab(xyz, dtype={float})

将CIE XYZ转换为L a B*坐标

https://en.wikipedia.org/wiki/CIELAB

参数:
xyzNdarray
dtype数据类型,可选

要返回的数据类型。默认为浮点数

退货:
labNdarray
mahotas.colors.xyz2rgb(xyz, dtype={float})

将XYZ坐标转换为sRGB坐标

输出应解释为sRGB。有关更多细节,请参阅维基百科:

https://en.wikipedia.org/wiki/SRGB

参数:
xyzNdarray
dtype数据类型,可选

要返回的数据类型。默认为浮点数

退货:
rgbNdarray

参见

rgb2xyz

函数反转函数