Чтобы ответить на мой собственный вопрос, основываясь на обсуждении на Джулия дискурс : я продолжил использовать пакет изображений, в частности ImageFiltering, следующим образом.
Сначала я определяю ядро, используемое для сглаживания.
Это ядро будет использоваться для вычисления корреляции между ним и фильтруемым массивом.
Разница в использовании ядер factores заключается в том, что каждый фильтр будет применяться отдельно, что приведет к изменению количества операций с
window_h x window_h x window_t
до
window_h + window_h + window_t
Как объяснено в документах .
Обратите внимание, что ядро использует [1.0] в третьем измерении, потому что мой массив представляет собой 4-мерный массив, и я сглаживаю первые два и четвертое измерение.
using ImageFiltering
function kernel4d_2(window_h,window_t)
kernel_h = ones(window_h)/window_h
kernel_t = ones(window_t)/window_t
return kernelfactors((kernel_h, kernel_h, [1.0], kernel_t))
end
Затем я определил функцию для применения этого ядра в качестве фильтра и возврата отфильтрованного массива.
function filter_array(array,window_x,window_t)
filtered = imfilter(array, kernel4d_2(window_x,window_t))
end
Это позволяет фильтровать массив следующим образом:
filtered = filter_array(unfiltered,window_x,window_t)