0

我正在用 Python 实现基本的全局阈值。该算法的一部分涉及根据像素的强度将像素分组到两个容器中;

group_1 = []
group_2 = []
for intensity in list(image.getdata()):
    if intensity > threshold:
        group_1.append[]
    else:
        group_2.append[]

对于超过 0.5 兆像素的图像,这种方法通常使用大约 5 秒或更长时间。在每种可能的方法中,我都需要检查每个像素,所以我想知道是否有更快的方法来做到这一点(通过使用 PIL 中的其他方法、其他数据结构或算法?),还是仅仅是 Python 性能问题?

4

1 回答 1

1

如果您要处理大量数字信息,您应该将图像数据读入numpy并在那里操作数组。这些例程将比您可以用纯 python 编写的任何内容更快(更简单)。

请参阅此问题以帮助您开始从 PIL 到 numpy 的读写:

PIL 和 numpy

例如,如果图像是灰度图像,则点数组将只是一个来自 的数字0-255。要“阈值”,您可以简单地执行以下操作:

group1 = A[A> threshold]
group2 = A[A<=threshold]
于 2013-04-27T00:27:19.913 回答