制作图像阵列的副本意味着什么?

时间:2015-03-22 07:08:19

标签: python

我需要找到每个像素的局部平均值 - 即特定像素的平均值和围绕它的8个像素来模糊图像。有人暗示我需要复制图像数组。

制作图像数组的副本是什么意思?另外,我如何表明我想要周围的像素?如果我想找到像素的平均红色值,我会使用以下表达式:

im[row][col][0] = sum(im[row][col][0],im[row-1][col][0],im[row+1][col][0],im[row][col-1][0],im[row][col+1][0],im[row-1][col+1][0],im[row+1][col+1][0],im[row-1][col-1][0],im[row+1][col-1][0])/9

2 个答案:

答案 0 :(得分:1)

制作副本只是意味着做:

from copy import deepcopy

im_avg = deepcopy(im)

这意味着您可以进行计算并将结果保存到不同的数据结构中,以便原始值可以用于计算其他像素。您需要使用深度复制而不仅仅是复制或im[:],因为它看起来像您的图像是一组嵌套列表,在这种情况下,浅复制不会完全隔离新的值集。

使用此功能,您可以使用im_avg 存储平均值,但使用原始im来计算它们。

您对平均计算的表达式看起来是合理的,但您可以查看标准的itertools模块,以便在您选择时帮助简化它。

答案 1 :(得分:1)

可能建议制作图像数组的副本,以确保在计算局部平均值时不修改原始图像数组。

从技术上讲,您不需要复制数组,因为您可以创建一个与图像数组大小相同的新空白数组,并用值填充它。

计算围绕它的3x3网格的平均红色值的逻辑是正确的。