PHP самый быстрый способ применить сильное размытие

Мне нужно написать скрипт для размытия изображения. Это не было бы проблемой, если бы мне не нужно было размывать его очень сильно.

Теперь фильтр размытия по Гауссу GD действительно слаб. И imageconvolution по какой-то причине принимает только матрицы 3x3, поэтому я не могу сгенерировать матрица Гаусса с большим радиусом для более сильного размытия? Даже если бы я мог, я не уверен, насколько быстро это было бы.

Запуск размытия по Гауссу несколько раз помогает, но действительно медленно. Для достижения эффекта, который я ищу, мне нужно запустить его 40-100 раз по изображению, и, конечно, это занимает 10-20 секунд.

Есть ли способ добиться того, что я ищу, в разумные сроки, используя библиотеки, поставляемые в комплекте с PHP?

Вот точный эффект. Время генерации: 10,972307920456 секунд. 80 проходов.

Оригинал:

введите здесь описание изображения

Обработанный:

введите здесь описание изображения


person Community    schedule 14.01.2013    source источник
comment
Вы можете проверить, как будет работать ImageMagick. Он имеет собственный интерфейс PHP: imagemagick.org/Usage/blur.   -  person ddinchev    schedule 14.01.2013
comment
Но мне нужно, чтобы он был в комплекте с PHP, а этого, к сожалению, нет. Я был бы очень рад, если бы кто-нибудь вообще знал о каком-то чрезвычайно неточном, но очень быстром алгоритме, который я мог бы прогонять по изображению на попиксельной основе.   -  person    schedule 14.01.2013
comment
Но GD (то, что вы сейчас используете) НЕ связан с PHP. У него просто есть оболочка для PHP, очень похожая на IM...   -  person ddinchev    schedule 14.01.2013
comment
Вы можете проверить фильтр stackblur и перенести его на PHP.   -  person bitWorking    schedule 14.01.2013
comment
Другой подход, который вы можете попробовать, - изменить размер изображения до 10% от его исходного размера, а затем либо снова увеличить его, либо просто заставить браузер отображать его в исходном размере.   -  person Christiaan    schedule 15.06.2016


Ответы (1)


bool Imagick::blurImage ( float $radius , float $sigma [, int $channel ] )

а). $radius Радиус размытия

б). $sigma Стандартное отклонение

в). $channel Константа типа канала. Если не указано, все каналы размыты.

person zapbuild    schedule 24.01.2013