Операторы морфологии Scipy ndimage насыщают память моего компьютера RAM (8GB)

Мне нужно вычислить морфологическое отверстие для трехмерного массива формы (400 401 401), размером 64320400 байт, используя элемент трехмерной структуры с радиусом 17 или больше. Размер элемента структуры ndarray составляет 42875 байт. С помощьюscipy.ndimage.morphology.binary_openingВесь процесс занимает 8 ГБ ОЗУ.

я прочиталscipy/ndimage/morphology.py на GitHub, и, насколько я могу судить, оператор эрозии морфологии реализован на чистом C. Мне трудно понятьni_morphology.c источник, поэтому я не нашел ни одной части этого кода, которая приводит к такому огромному использованию памяти. Добавление ОЗУ не является работоспособным решением, поскольку использование памяти может увеличиваться экспоненциально с радиусом элемента структуры.

Чтобы воспроизвести проблему:

import numpy as np
from scipy import ndimage

arr_3D = np.ones((400,401,401),dtype="bool")

str_3D = ndimage.morphology.generate_binary_structure(3,1)
big_str_3D = ndimage.morphology.iterate_structure(str_3D,20)

arr_out_3D = ndimage.morphology.binary_opening(arr_3D, big_str_3D)

Это занимает около 7 ГБ ОЗУ.

У кого-нибудь есть какие-то предложения по вычислению морфологии в примере, описанном выше?