Модификация массива в скользящем окне numpy
Всем привет! Нужна подсказка по работе со sliding_window_view в numpy. Пишу функция дли сигма фильтрации изображений. Есть такой код:
from collections import Counter
from PIL import Image
from numpy import array, arange, sqrt, power, uint8
from numpy.lib.stride_tricks import sliding_window_view
img = Image.open(r'img.jpg').convert('L')
img = array(img, dtype=uint8)
window_view = sliding_window_view(img, (3, 3), writeable=True)
for window in (i for w in window_view for i in w):
avg = sum(window.flatten()) // window.size
sig = sqrt(sum([power(pix - avg, 2) // window.size for pix in window.flatten()]))
gst = Counter(window.flatten())
row, col = round(window.shape[0] / 2), round(window.shape[1] / 2)
center = window[row, col]
s1 = sum([gst[i] * i for i in arange(center - sig, center + sig + 1, 1)])
s2 = sum([gst[i] for i in arange(center - sig, center + sig + 1, 1)])
if s2 != 0:
window[row, col] = s1 / s2
Я полагал что функция sliding_window_view возвращает проекцию исходного массива и изменения элементов в скользящем окне будет приводить к изменению исходного массива. Вопрос заключается в следующем: как можно получить из массива возвращаемого функцией sliding_window_view исходный массив после изменения изображения в скользящем коне? Или может есть какая библиотека для работы с изображениями которая позволит выполнить аналогичные манипуляции?