在Python NumPy中扩展图像的最有效方法

时间:2018-03-03 14:54:46

标签: python python-3.x numpy scipy

我想要一个函数将图像作为numpy数组接收,并根据输入范围中指定的最大值和最小值将值重新映射到新范围(0,1)。我有一个工作函数,但我正在迭代数组,大约需要10秒才能完成。有没有更有效的方法来执行此任务?也许有些内置的numpy功能我不知道?

这就是我所拥有的:

import numpy as np

def stretch(image, minimum, maximum):
    dY = image.shape[0]
    dX = image.shape[1]
    r = maximum - minimum
    image = image.flatten()
    for i in range(image.size):
        if image[i] > maximum or image[i] < minimum:
            image[i] = 1. or 0.
        else:
            image[i] = (image[i] - minimum) / r
    return image.reshape(dY, dX)

我也尝试过使用numpy.nditer的上述版本,而不是手动迭代for循环,但这似乎是慢四倍(~40秒)。

有一种更有效的方式来做这件事,我忽视了吗?我正在使用的图像大约是16 MP。 (3520,4656)

0 个答案:

没有答案