完整的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)¶
计算之间的边界区域 i 和 j 地区。
如果像素有值,则它位于边框上 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,恰好是在 i 和 j 在……里面 labeled
- mahotas.borders(labeled, Bc={3x3 cross}, out={np.zeros(labeled.shape, bool)})¶
计算边框像素
如果像素有值,则它位于边框上 i 以及其邻域中的像素(由 Bc )有价值 j 同
i != 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)})¶
条件性形态侵蚀。
操作的类型取决于
dtype
的A
好了!如果是布尔的,则侵蚀是二进制的,否则是灰度侵蚀。在灰阶侵蚀的情况下,域中的最小值Bc
被解释为-inf。- 参数:
- fNdarray
输入图像
- gNdarray
条件图像
- BcNdarray,可选
结构元素。默认情况下,使用十字(请参见
get_structuring_elem
有关默认设置的详细信息)。
- 退货:
- conditionally_erodedNdarray
侵蚀的版本
f
有条件的g
- 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})¶
卷积 f 和 weights
卷积是在 doubles 以避免上溢/下溢,但结果随后被强制转换为 f.dtype 。 This 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})¶
卷积 f 和 weights 沿轴 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)¶
形态扩张。
操作的类型取决于
dtype
的A
好了!如果是布尔的,则膨胀是二进制的,否则就是灰度膨胀。在灰度级膨胀的情况下,Bc
被解释为+inf。- 参数:
- A一群野猪
输入数组
- BcNdarray,可选
结构元素。默认情况下,使用十字(请参见
get_structuring_elem
有关默认设置的详细信息)。- outNdarray,可选
输出数组。如果使用,这必须是相同的C数组
dtype
ASA
。否则,将分配一个新数组。- output弃用
不要使用
- 退货:
- dilatedNdarray
扩张版
A
参见
- 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)})¶
形态侵蚀。
操作的类型取决于
dtype
的A
好了!如果是布尔的,则侵蚀是二进制的,否则是灰度侵蚀。在灰阶侵蚀的情况下,域中的最小值Bc
被解释为-inf。- 参数:
- ANdarray
输入图像
- BcNdarray,可选
结构元素。默认情况下,使用十字(请参见
get_structuring_elem
有关默认设置的详细信息)。- outNdarray,可选
输出数组。如果使用,这必须是相同的C数组
dtype
ASA
。否则,将分配一个新数组。
- 退货:
- erosionNdarray
侵蚀的版本
A
参见
- 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, whenBc
is overlaid oninput
, centered at that position, the1
values line up with1
s, while the0
s line up with0
s (2
s 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
一维阵列,共
- sums :一维ndarray,共
- 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大小相同的布尔图像。
- 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
- mean :ndarray类型为DOUBLE且形状相同
参见
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)
- median :ndarray的类型和形状与
- 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值
- ranked :ndarray的类型和形状与
参见
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
(对于适当定义的s0
和s1
)。
- match :ndarray的类型和形状与
- 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_mean
或return_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 usesVAR[\|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
dtype
Ndarray of
- grey :ndarray of
- mahotas.colors.rgb2grey(rgb_image, dtype=float)¶
将RGB图像转换为灰度图像
RGB和灰度值的解释在很大程度上依赖于对象(就像任何使用过损坏彩色图形的投影仪的人都会经历的那样)。此函数使用一种典型的转换方法,对于典型用例可以很好地工作,但如果您有严格的要求,请考虑自己实现转换以进行精细控制。
- 参数:
- array形状为(a,b,3)的射线
- dtype数据类型,可选
退货的数据类型
- 退货:
- grey :ndarray of
dtype
Ndarray of
- grey :ndarray 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
函数反转函数