首页 > 解决方案 > 创建不可更改的图像片段数组

问题描述

我的目标是创建一个二维数组,其中每个位置i,j都有图像片段的傅里叶变换,其image[i][j]作为左上角的像素。我认为这可以很直接地计算出来。假设我们的图像m,n大小为 ,片段(或者更确切地说是正方形)的大小为s

A = numpy.empty(shape=(m,n),dtype='object')
for i in range(m):
   for j in range(n):
      if (m-i >= s) and (n-j >= s):
         A[i][j] = numpy.fft.fftn(image[i:i+s,j:j+s]

然后,在一个循环中,我希望将某个阈值下的系数设置为零:

x = A[i][j]
x[np.absolute(x) <= z] = 0

现在的问题是它也发生了变化A,但是使用深拷贝会减慢一个大循环。基本上A不应该改变,但我需要它的元素的快速副本。如何解决问题?

标签: pythonarraysimageimage-processingcopy

解决方案


A您可以使用创建数组的副本numpy.copy,例如:

x = np.copy(A)

这将创建一个数组的副本,您可以在其中更改系数x而不更改A.


推荐阅读