Константин Коржавин писал(а):
Здорово, мне очень понравилось, нечто новое.
Спасибо! Буду продолжать "доводить до ума".
Цитата:
Какие пожелания: во-первых, эффект хорошо работает на кртинках web-размера, на полиграфических же (более 3000 пиксел) эффект (радиус?) маловат, возможно ли увеличивать радиус? Во-вторых, хотелось бы, чтобы эффект действовал только на канал яркости, не затрагивая цвет. Ещё, полезен был бы параметр, аналогичный порогу (trechhold) в unsharp mask.
В принципе да, для этого потребуется переписать код. Думаю, что хотя бы частично "воплощу".
Цитата:
Кстати, вкратце, каков принцип работы фильтра?
На каждом пикселе, рассматривается матрица пикселей 3х3 с текущим в центре (для каждого цветового канала отдельно). Определяется среднее значение цвета матрицы (каждый пиксел матрицы учитывается с коэффициентом "удаленности" от центра, по Лапласу), сравнивается со средним пикселом. Если средний пиксел темнее среднего, из его значения вычитается эта разница, умноженная на некий коэффициент. Если светлее, его значение увеличивается по следующему принципу:
Представим себе координатный отрезок со следующими "точками":
A=средний цвет
B=текущий цвет
C=(максимально яркий пиксел окружения+текущий цвет)/2
(А) --> (B) --> ( C)
Теперь получаем для пиксела новое значение D по уравнению:
(B-A)/(C-B)=(D-B)/(C-D)
Таким образом запрещаем пикселу "вылезать" за предел, которым является самый яркий пиксел окружения -- что препятствует возникновению светлого "хало". С другой стороны, это же приводит к нежелательной постеризации, поэтому максимальное значение предварительно "смягчается" с учетом текущего значения среднего пиксела.
Можете спросить, почему не сделан такой же унифицированный подход к темным пикселям... Пробовал. На данном этапе не понравилось. Постеризация наступает значительно раньше, не после двух-трех проходов, а почти сразу, и картинка становится неестественной... В общем, в теперешней своей инкарнации алгоритм больше всего "любит" темные детали на светлом равномерном фоне. Например, деревья на фоне неба, архитектуру, волосы и т.п.