svv писал(а):
(чем не усреднение?), то была бы возможна такая оптимизация: сначала обработать столбцы фильтром

, затем строки фильтром

.
Во блин! А я до этого тоже допер! Только я соответствующей терминологии не знаю.

Поэтому смогу объяснить простым языком

То есть вместо

делается 2 итерации:
сначала

, а потом

. Это равносильно общей формуле

, где

, но очень мало (т.е. мы добавили в сумму не только смежные ячейки, но и смежные по диагонали, но с очень маленьким весом). Если я правильно угадал смысл задачи, это изменение формулы должно быть несущественно.
Параметры

нужно подобрать (в частности

), но за

операций. Тогда каждую матрицу можно пересчитать, выделяя не

, а всего

новых переменных (в 1-й части пересчитываются отдельно строки - нужно помнить 2 старых значения + еще одно, в второй части - столбцы - итого

присваиваний, что, конечно, хуже). Можете попробовать. Сильно хуже точно не будет. Код будет тоже не сильно сложный.