3D локальные средние и использование 3D свертки - PullRequest
0 голосов
/ 13 ноября 2018

Я новичок в Python и гораздо больше знаком с Matlab. Если мой вопрос плохо подходит для этого форума, не стесняйтесь указывать на него.

Я пытаюсь сделать локальные средние значения на очень высокой скорости. Как будто я пытаюсь уменьшить количество пикселей в изображении, делая среднее число пикселей для каждого нового пикселя, за исключением того, что я делаю это в 3D.

Представьте себе массивы 1000x1000x6. Я делю этот массив на несколько крошечных массивов размером 10x10x3. Затем я хочу вычислить среднее значение всех этих крошечных массивов и собрать их вместе для построения моего массива.

То, как я это делал на Matlab, было с convn(array,seed,'valid'), который является многомерной функцией свертки.

Какой самый простой способ сделать это в python? Спасибо RMT

1 Ответ

0 голосов
/ 13 ноября 2018

Я думаю, что самая близкая вещь, которую вы можете найти к convn, это SciPy's convolve. Ниже приведен пример

import numpy as np
from scipy.ndimage import convolve
M = np.random.random((1000, 1000, 6))
seed = np.ones((3, 3, 3)) * 0.1 / 27.
N = convolve(M, seed, mode='constant', cval=0)

mode='constant', cval=0 - это просто дополнение нулями.

Не уверен, что это то, что вам нужно, но это начало

Документ: https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.ndimage.filters.convolve.html

...