- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
是否可以在 scipy.ndimage.filters.generic_filter
的过滤函数中获取“当前元素”?
例如,如果 A[0]
始终包含当前元素(似乎并非如此),则类似以下的内容可能会找到局部最大值
def local_max_f(A) :
return A[0] == A.max()
img = np.random.rand(100).reshape(10,10)
ndimage.generic_filter( img, local_max_f, size=3 )
最佳答案
当前元素应该是 size
中心的元素(或者在你的例子中是 A[1]
),但这不能依赖于输入数组的边缘,并取决于处理数组边界的模式
。
docs instead provide a neat example (根据您的情况进行了调整)使用类来确定过滤器中的当前位置,以在迭代之间保持某种状态。这总是首先遍历最后一个维度;您所要做的就是将 result
行替换为您的过滤器函数实际需要做的任何事情,在您的情况下,这将类似于 result = self._array[self.coordinates] = = buffer.max()
.
a = arange(12).reshape(3,4)
class fnc_class:
def __init__(self, _array):
# store the shape:
self.shape = _array.shape
self._array = _array
# initialize the coordinates:
self.coordinates = [0] * len(self.shape)
def filter(self, buffer):
result = self._array[tuple(self.coordinates)] == buffer.max()
print self.coordinates
# calculate the next coordinates:
axes = range(len(self.shape))
axes.reverse()
for jj in axes:
if self.coordinates[jj] < self.shape[jj] - 1:
self.coordinates[jj] += 1
break
else:
self.coordinates[jj] = 0
return result
fnc = fnc_class(a)
generic_filter(a, fnc.filter, footprint = [[1, 0], [0, 1]])
关于python - 获取 scipy.ndimage.filters.generic_filter 中的当前元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18580920/
当我尝试执行以下操作时,它显示未定义的名称“ndimage”: import scipy.ndimage blurred = ndimage.gaussian_filter(file1, sigma
我使用 sudo pip3 install scipy 安装了 ndimage 然后我将其导入为 import scipy.ndimage 然后我正在执行以下行b=scipy.ndimage.filt
我有一个存储为 ndarray 的图像。我想遍历这个数组中的每个像素。 我可以像这样遍历数组的每个元素: from scipy import ndimage import numpy as np l
我正在尝试学习 ndimage,但我不知道如何做 generic_filter()功能有效。文档提到用户功能将应用于用户定义的足迹,但不知何故我做不到。这是示例: >>> import numpy a
我有一个大图像,在标记后有大约 500 个特征。我知道如何使用 find_object 将它们放入切片中,但我想给它们上色以便看到结果。对此有什么快速建议吗? 最佳答案 您可以像这样使用 matplo
我只是想熟悉 scipy.ndimage,我无法弄清楚 interpolate.convolve 和 interpolate.correlate 有何不同。 In [24]: a Out[24]: a
有没有办法在 Scipy 中为图像处理定义自定义过滤器?我需要一个过滤器,给定位于像素 i、j 的结构元素,它将该像素的值分配给该结构元素覆盖的所有其他像素。 编辑:滤镜类似于形态学滤镜,如侵 ecl
我尝试从 SciPy 导入 ndimage 包以使用其中的最大过滤器。但是,SciPy 似乎缺少这一部分。我收到此错误: from scipy.linalg import _fblas ImportE
已关注 How exactly does the “reflect” mode for scipys ndimage filters work?和 Numpy Two-Dimensional Movi
我正在尝试做的事情: 用 python 读取图像。 使用 Scipy 的 ndimage.gaussian_filter() 函数应用高斯滤波器。 显示生成的图像。 这是我要运行的代码: import
我想填充该图像的中心点,以便末端是白色,其余部分是黑色。我正在尝试使用 ndimage.binary_fill_holes 来完成此操作(代码如下)。当我运行脚本时,收到错误'NoneType' ob
虽然我已经找到了关于 scipy.ndimage.convolve 函数的文档并且我“几乎知道它做了什么”,但当我尝试计算结果数组时我无法遵循数学公式。让我们举个例子: a = np.array([[
我正在尝试编写一个 python 函数来删除 2D 图像数据中的热像素。我正在尝试创建一个函数,该函数将获取 2D 数组中每个元素周围的邻居的平均值,并且如果该元素的值超过其邻居的平均值特定量(例如
函数scipy.ndimage.laplace可用于计算应用于 N 维数组的拉普拉斯算子。如果要使用此功能,例如,用于物理应用,关键部分通常是如何处理边界。 查看函数文档,支持的选项有很多: “反射(
我尝试使用 ndimage.measurements.center_of_mass 计算高斯二维分布的峰值位置,发现质心从峰值中心偏移: import numpy as np from scipy i
我有一个二进制数组,比如说,a = np.random.binomial(n=1, p=1/2, size=(9, 9))。我使用 3 x 3 内核对其执行中值过滤,比如 b = nd.median_
我注意到 scipy.ndimage.zoom 的结果取决于原始图像的大小。在以下代码示例中,生成了一个棋盘图像,然后使用 ndimage.zoom 对其进行了缩放。如果一个棋盘图 block 只有
背景/背景 我试图重现 scipy 的 ndimage.affine_transform 输出的值函数,但与 scipy 实现相比,我似乎使用了不同的“三次”插值方案。 例子 让我们来看一个非常简单的
这个问题已经有答案了: scipy.misc module has no attribute imread? (18 个回答) 已关闭去年。 我正在尝试从 scipy 读取图像。但它给出错误“没有属性
我有一个二值图像。二值图像有一些孤立的区域,如噪声。我知道预期区域比这些孤立区域大得多。因此,我使用连接的组件通过找到最大的连接区域来删除隔离区域。我必须使用 scipy 包。我发现它有一些功能可以做
我是一名优秀的程序员,十分优秀!