numpy PIL中PixelAccess中标量乘法的矢量化

djp7away  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(144)

我需要向量化PixelAccess对象上的标量乘法因子,我目前正在嵌套的for循环中执行该操作。

当前尝试

original = Image.open('img.png')
TEMP = '/tmp/tmp.jpg'
original.save(TEMP, quality=90)
temporary = Image.open(TEMP)
diff = ImageChops.difference(original, temporary)
d = diff.load()
SCALE = 10

# Part to vectorize

WIDTH, HEIGHT = diff.size
for x in range(WIDTH):
    for y in range(HEIGHT):
        d[x, y] = tuple(k * SCALE for k in d[x, y])

问题是,PixelAccess对象的结构是由三个元素的元组组成的二维数组,这使得它很难适应NumPy框架。

zujrkrfu

zujrkrfu1#

您可以使用内置的图像操作来访问单个像素:您可以通过使用比例系数scale = 2 / SCALE将图像与自身相加来实现SCALE的比例缩放,请参阅文档:

diff = ImageChops.add(diff, diff, 2/SCALE)

在我的电脑上,这是提供的示例图像的95倍快。
请注意,结果将被剪裁到255。

相关问题