Создание массива неизменяемых сегментов изображения - PullRequest
0 голосов
/ 15 марта 2020

Моя цель - создать двумерный массив, в котором на каждой позиции 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]

Затем в пределах al oop я хочу установить коэффициенты под определенным порогом, чтобы ноль:

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

Проблема теперь в том, что он также меняет A, но использование глубокого копирования заключается в замедлении для большого l oop. В основном A не должен меняться, но мне нужна быстрая копия его элементов. Как решить проблему?

1 Ответ

1 голос
/ 17 марта 2020

Вы можете создать копию массива A, используя numpy.copy, например:

x = np.copy(A)

Это создаст копию массива, в которой вы можете изменить коэффициенты в x без изменения A.

...