scipy.ndimage API中文版

在图像处理的学习中,开源库是最好的学习资料。不仅可以提高眼界,对图像处理有一个更系统的认知,还可以在阅读开源库的优秀源码过程中,与自己对图像处理的想法一一印证。在学习优秀开源库的时候,往往有一种柳暗花明的感觉,自己之前对于图像处理很多模糊的想法,但由于经验不足不能把其具现出来,在此一一得到了解答,哇塞,还可以这样做! 在阅读学习中提升自己,开阔眼界,图像不再是一堆没有感情的像素值,而是可以在数学工具的加持下,千变万化,绚烂多姿!在变化中又隐藏着规律!

scipy:https://github.com/scipy/scipy
(scipy.ndimage)

这个软件包包含多维图像处理的各种功能。

scipy.ndimage API

滤波

convolve(input, weights[, output, mode, …]) 多维卷积

convolve1d(input, weights[, axis, output, …]) 计算一个一维卷积沿给定的轴。

correlate(input, weights[, output, mode, …]) 多维相关性。

correlate和convolve类似

correlate1d(input, weights[, axis, output, …]) 沿给定的轴计算一个一维相关。

gaussian_filter(input, sigma[, order, …]) 多维高斯滤波

gaussian_filter1d(input, sigma[, axis, …]) 一维高斯滤波

gaussian_gradient_magnitude(input, sigma[, …]) 使用高斯导数的多维梯度大小。

gaussian_laplace(input, sigma[, output, …]) 高斯二阶导数的多维拉普拉斯滤波器。

generic_filter(input, function[, size, …]) 使用给定函数计算一个多维滤波器。

generic_filter1d(input, function, filter_size) 计算一个一维滤波器沿给定的轴。

generic_gradient_magnitude(input, derivative) 使用一个提供的梯度函数的梯度幅度。

laplace(input[, output, mode, cval]) 基于近似二阶导数的N-D拉普拉斯滤波器。

maximum_filter(input[, size, footprint, …]) 计算一个多维最大滤波器。

maximum_filter1d(input, size[, axis, …]) 沿给定轴计算一维最大滤波器。

median_filter(input[, size, footprint, …]) 计算一个多维中值滤波器。

minimum_filter(input[, size, footprint, …]) 计算一个多维最小滤波器。

minimum_filter1d(input, size[, axis, …]) 沿给定轴计算一维最小滤波器。

percentile_filter(input, percentile[, size, …]) 计算一个多维百分位滤波器。

prewitt(input[, axis, output, mode, cval]) 计算一个Prewitt滤波器。

rank_filter(input, rank[, size, footprint, …]) 计算一个多维等级滤波器。

sobel(input[, axis, output, mode, cval]) 计算Sobel滤波器。

uniform_filter(input[, size, output, mode, …]) 多维均匀滤波器。

uniform_filter1d(input, size[, axis, …]) 沿给定轴计算一维均匀滤波器。

傅里叶滤波

fourier_ellipsoid(input, size[, n, axis, output]) 多维椭球傅里叶滤波器

fourier_gaussian(input, sigma[, n, axis, output]) 多维高斯傅里叶滤波器。

fourier_shift(input, shift[, n, axis, output]) 多维傅里叶变换滤波器。

fourier_uniform(input, size[, n, axis, output]) 多维均匀傅里叶滤波器。

插值

affine_transform(input, matrix[, offset, …]) 应用仿射变换。

geometric_transform(input, mapping[, …]) 应用任意几何变换。

map_coordinates(input, coordinates[, …]) 通过插值将输入数组映射到新的坐标。

rotate(input, angle[, axes, reshape, …]) 旋转一个数组。

shift(input, shift[, output, order, mode, …]) 移动一个数组。

spline_filter(input[, order, output, mode]) 多维样条滤波器。

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

对于复值输入,该函数独立处理实分量和虚分量。

1.6.0新版功能:添加了复合值支持。

spline_filter1d(input[, order, axis, …]) 沿给定的轴计算一个一维样条滤波器。

zoom(input, zoom[, output, order, mode, …]) 放大一个数组。其实就是使用样条插值

测量

center_of_mass(input[, labels, index]) 计算标签处数组值的质心。 只计算连通域质心(有几个连通域,返回几个质心)

extrema(input[, labels, index]) 计算标签处数组值的最大值和最小值以及它们的位置。

find_objects(input[, max_label]) 在标记数组中查找对象。.

histogram(input, min, max, bins[, labels, index]) 计算数组值的直方图,可选在标签处。

label(input[, structure, output]) 数组中的标签特性。

labeled_comprehension(input, labels, index, …) 大致相当于[func(input[labels == i]) for i in index]。

对由标签和索引指定的N-D图像数组的子集依次应用任意函数(用于类似array_input的输入)。该选项的存在是为了将位置参数作为第二个参数提供给函数。有意思

maximum(input[, labels, index]) 计算一个数组在标记区域上的最大值。

maximum_position(input[, labels, index]) 查找数组的最大值在标签处的位置。

mean(input[, labels, index]) 计算标签处数组值的平均值。

median(input[, labels, index]) 计算一个数组在标记区域上的值的中位数。

minimum(input[, labels, index]) 计算数组在标记区域上的最小值。

minimum_position(input[, labels, index]) 找出数组中最小值在标签处的位置。

standard_deviation(input[, labels, index]) 计算N-D图像阵列的值的标准偏差,可选地在指定的子区域。

sum_labels(input[, labels, index]) 计算数组值的和。

variance(input[, labels, index]) 计算N-D图像阵列的值的方差,可选地在指定的子区域。

watershed_ift(input, markers[, structure, …]) 利用图像森林变换算法从标记物中应用分水岭。

形态学

binary_closing(input[, structure, …]) 使用给定结构元素的多维二值闭操作。

binary_dilation(input[, structure, …]) 具有给定结构元素的多维二值膨胀操作。

binary_erosion(input[, structure, …]) 具有给定结构元素的多维二值腐蚀。

binary_fill_holes(input[, structure, …]) 填充二值图像孔洞。

binary_hit_or_miss(input[, structure1, …]) 多维二值击中击不中变换。

hit-or-miss transform作用是查找输入图像中给定图案的位置。也算是一种匹配吧

binary_opening(input[, structure, …]) 具有给定结构元素的多维二值开操作。

binary_propagation(input[, structure, mask, …]) 具有给定结构元素的多维二值传播操作。

这个函数在功能上等同于调用binary_dilation,迭代次数不止1次:迭代膨胀,直到结果不再改变。

原始图像内部的侵蚀和传播的连续性可以用来代替删除小物体的开口,同时保持较大物体的轮廓不变。

black_tophat(input[, size, footprint, …]) 多维黑色顶帽滤波器。

distance_transform_bf(input[, metric, …]) 采用蛮力算法的距离变换函数。

distance_transform_cdt(input[, metric, …]) 距离变换为倒角类型的变换。

除了距离变换外,还可以计算特征变换。在这种情况下,在一个单独的数组中返回与每个前景元素最接近的背景元素的索引。

distance_transform_edt(input[, sampling, …]) 精确的欧氏距离变换。

同上。

generate_binary_structure(rank, connectivity) 生成一个二值结构用于二值形态运算。

grey_closing(input[, size, footprint, …]) 多维灰度闭操作。

灰度闭操作包括灰度膨胀和灰度腐蚀的连续过程。

使用平面结构元素的灰度闭操作的作用相当于平滑深度局部最小值,而二值闭操作则填充小洞。

grey_dilation(input[, size, footprint, …]) 使用结构化元素或与平面结构化元素对应的形状,计算灰度膨胀。

灰度膨胀是一种数学形态学操作。对于一个完整和平坦的结构元素的简单情况,它可以看作是一个滑动窗口上的最大滤波器

由域E上定义的结构元素s输入的图像的灰度膨胀如下所示:

(input+s)(x) = max {input(y) + s(x-y), for y in E}

特别是,对于E中定义为s(y) = 0的y结构元素,灰度膨胀计算E定义的滑动窗口内输入图像的最大值。

参考:

https://en.wikipedia.org/wiki/Dilation_%28morphology%29

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

grey_erosion(input[, size, footprint, …]) 使用结构化元素或与平面结构化元素对应的足迹,计算灰度侵蚀。

grey_opening(input[, size, footprint, …]) 多维灰度。

iterate_structure(structure, iterations[, …]) 对结构本身迭代膨胀。

from scipy import ndimage
struct = ndimage.generate_binary_structure(2, 1)
struct.astype(int)
array([[0, 1, 0],
       [1, 1, 1],
       [0, 1, 0]])
ndimage.iterate_structure(struct, 2).astype(int)
array([[0, 0, 1, 0, 0],
       [0, 1, 1, 1, 0],
       [1, 1, 1, 1, 1],
       [0, 1, 1, 1, 0],
       [0, 0, 1, 0, 0]])
ndimage.iterate_structure(struct, 3).astype(int)
array([[0, 0, 0, 1, 0, 0, 0],
       [0, 0, 1, 1, 1, 0, 0],
       [0, 1, 1, 1, 1, 1, 0],
       [1, 1, 1, 1, 1, 1, 1],
       [0, 1, 1, 1, 1, 1, 0],
       [0, 0, 1, 1, 1, 0, 0],
       [0, 0, 0, 1, 0, 0, 0]])

morphological_gradient(input[, size, …]) 多维形态梯度。

morphological_laplace(input[, size, …]) 多维形态拉普拉斯。

white_tophat(input[, size, footprint, …]) 多维白色顶帽过滤器。

从一个明亮的峰值减去灰色背景。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值