21 июня 2008 ~ 2 комментария

Unsharp Mask на PHP

Давно меня волновала одна проблема: на автобегиннере редакторы добавляют фотографии к статьям и новостям. Из добавленной картинки формируются две уменьшенные (preview и thumbnail). Так вот, после уменьшения сильно страдает резкость картинки. Надо это исправить.

Как работает UnsharpMask? Резкость увеличивается за счет изменения яркости отдельных пикселей.

На входе фильтра три параметра: Amount, Radius и Threshold. Amount показывает на сколько нужно увеличить яркость пикселя, Radius определяем размер границы, которая делается четче,
Threshold – “порог” применения фильтра.

Все довольно просто: Копируем исходное изображение, размываем изображение (применяем к нему blur). Накладываем одно на другое и считаем разницу.

Если разница яркостей исходного и размытого изображения больше, чем значение Threshold, увеличиваем на Amount процентов яркость этого пикселя. Radius определяет сколько соседних пикселей сравнивается.

Код можно взять отсюда: http://vikjavev.no/computing/ump.php

Tags:

2 комментария to “Unsharp Mask на PHP”

  1. mmort 30 июня 2008 at 12:39 Permalink

    А скрипт не сильно грузит хостинг, на сервак не выгонят за такое ?

  2. Knave 30 июня 2008 at 13:19 Permalink

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

    С другой стороны, он применяется к картинкам, которые уже уменьшены. В общем, я думаю, если использовать его в админке, то проблем не будет.


Leave a Reply