В алгоритме блюра по Гауссу, делается точно так же. Сначала по строкам, потом по столбцам. Конечно матрицу никто не общитывает.
Если не обсчитывает, то чего Вы складываете 8 соседей (хотя можете сложить 2 + 2)? И чего вы берете 3х3 и делаете 10 проходов если можно просто взять матрицу больше? Гаусс здесь значит просто "колокольчик" (ближние пиксели берутся с большим весом, дальние с меньшим). А сама техника блюра (по строкам, потом по столбцам) используется с любым типом фильтра, напр. "box" (просто осреднение).
Он не из-за этого медленный, а из-за коэффициентов на которые приходится умножать соседние пикселы.
Так может Вы их просто не предвычислили? Или натыкали классов в цикле по пикселю? Если хотите давайте посмотрим код - явно что-то не так, PShop блюрит в real-time даже на скромной машине
Я подозреваю, что ты очень умный. А так же я подозреваю, что ты не один такой в этом мире. Поэтому имей это ввиду как можно чаще.
Теперь по теме.
Я поясню, для тебя, потому что ты тему читал по диагонали.
Экскурс. Когда мне потребовалось отфильтровать, я сделал среднее значение из 9 пикселов. Так как при одном проходе было размыто слабо, сделал несколько проходов. Конкретно 3. А не 10.
Если расширять квадрат квадрат, то расширять нужно до 5х5 или больше, чтобы достигнуть того же уровня размытия.
И прироста скорости это совсем не даст.
Дальше я решил попробовать блюр гаусса, чтобы улучшить вид размытия. Там сделал естественно по строчкам и столбцам.
И естественно коэффициенты не рассчитываются в цикле двадцать тысяч раз. А один раз в начале.
Но понятно, что умножение на float не способствует производительности. А хорошее размытие получается только при больших сигма и соответственно большем окне (в районе 15 точно не помню сколько меня устроило).
В любом случае все варианты выполнялись дольше секунды.
Потом пришел мой товарищ и сказал мне да сделай "обычным" быстрым фильтром.
Там берется 8 соседних точек, значение самого пиксела отбрасывается. А так как соседей восем, то вместо деления можно использовать сдвиг на 3 вправо. Это быстрее, чем деление.
Сила размытия, достигается количеством проходов.
Этот фильтр я и стал использовать. Требуемый уровень размытия достигался за 10 проходов. Эти 10 проходов выполняются меньше половины секунды. В принципе скорость приемлемая так и оставил. Или ты можешь еще ускорить?