1

我正在寻找一种使用scipy.ndimage中的generic_filter 模块输出多个值的方法,如下所示:

    import numpy as np
    from scipy import ndimage

    a = np.array([range(1,5),range(5,9),range(9,13),range(13,17)])

    def summary(a):
        minVal = np.min(a)
        maxVal = np.max(a)

        return [minVal,maxVal]

    [arrMin, arrMax] = ndimage.generic_filter(a, summary,    footprint=np.ones((3,3)))

但我不断收到预期浮动的错误。

我玩过“输出”参数,如下所示:

    arrMin = np.zeros(np.shape(a))
    arrMax = np.zeros(np.shape(a))
    ndimage.generic_filter(a, summary, footprint=np.ones((3,3)), output = [arrMin, arrMax])

无济于事。根据这个问题,我还尝试返回一个命名元组、一个类或一个字典,但这些都不起作用。

4

1 回答 1

0

根据评论,您希望同时执行多个过滤器,而不是单独执行它们。

不幸的是,我不认为这个过滤器是这样工作的。它希望您为每个相应的输入值返回一个过滤后的输出值。我寻找一种使用 numpy/scipy 进行同时过滤的方法,但找不到任何东西。

如果您可以管理允许您在单独的并行路径(每个过滤器一个)中加载图像、过滤、处理和生成一些小的结果数据的数据流,那么您可能会从使用中获得一些好处,multiprocessing但如果您天真地使用它可能比按顺序执行所有操作要花费更多时间。如果您确实遇到了多处理解决的瓶颈,您还应该考虑共享您的输入数组,而不是在每个进程中加载​​它。

于 2015-10-06T11:09:36.720 回答