8

У Photoshop много крутых artistic filters, и я хотел бы понять основные алгоритмы.Как реализован фильтр вырезания фотошопа?

Одним из наиболее интересных особенностей является фильтр выреза (номер 2 по ссылке выше).

У этого есть три настраиваемых параметра, Количество Уровней, Простота Edge и Верность Edge. Количество уровней, по-видимому, управляет простым алгоритмом постеризации, но то, что другие слайдеры технически ускользают от меня.

Я думаю, что они делают что-то, что связано с диаграммами Ворни или с разделением k-единиц, но выдумка вокруг википедии не привела к чему-либо, что явно отображает то, что делает Photoshop, особенно учитывая, насколько быстро фильтр отображает сам.

Есть ли источник технических описаний фильтров Photoshop? В качестве альтернативы, есть ли у вас какие-либо мысли о том, как этот конкретный фильтр может быть реализован?

+0

Ничего себе, это круто. Я ценю обработку изображений гораздо больше в эти дни после работы над проектом, в котором участвуют некоторые (хотя мои задачи были менее сложными, чем другие). –

ответ

0

Возможно, не совсем то, что вы ищете, но если вам нравится знать, как работают фильтры, вы можете проверить исходный код GIMP. Я не могу сказать, имеет ли GIMP эквивалент фильтра выреза, который вы упомянули, но стоит взглянуть, действительно ли вы заинтересованы в этой области.

+1

Это был хороший прыжок с места для дополнительного поиска, но, к сожалению, у GIMP нет близкого аналогового встроенного. Я нашел классный плагин GIMP под названием [pspi] (http://www.gimp.org/~ tml/gimp/win32/pspi.html), который может загружать плагины photoshop, но Cutout - это тот, который не реализован таким образом :( – fastcall

6

Обнаружение краев обычно является фильтром Sobel или Canny, а края соединяются вместе с цепным кодом.
Посмотрите на что-то вроде OpenCV библиотеки для деталей

0

Число уровней, кажется, напоминают, как это делается клеточно-затенение и это, как я бы реализовать эту часть в этом случае вы просто взять эту гистограмму изображения и разделите его на количество секций «Количество уровней», затем рассчитайте среднее значение для каждого раздела. Каждый цвет в гистограмме затем будет использовать это среднее значение вместо исходного цвета.

Остальные два параметра требуют еще нескольких размышлений, но «простота края», похоже, детонирует количество сегментов, из которых формируются фигуры. Вернее: количество уточнений, применяемых к некоторым грубым алгоритмам сегментации изображений. Скользящий слайдер, похоже, делает что-то подобное; он, вероятно, контролирует какой-то порог, когда должны произойти уточнения.

This might help

3

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

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

+0

Я думаю, что вы прямо на месте со срединным фильтром. – flodin

0

Получено простое решение, которое теоретически создало бы нечто похожее на этот фильтр. Как-то похоже на то, что предложил Исмаэль С.

Edge Простота Размер окна управления. Возможно, окно должно быть взвешено.

Но в отличие от обычных оконных фильтров, из этого окна требуется только фиксированная часть случайных пикселей. Размер участка контролируется параметром Fidelity.

Установите цвет пикселя в медиану образца.

Учитывая, что у нас есть алгоритм постеризации, он применяется впоследствии.

Здесь мы идем!

Пожалуйста, сообщите о результатах, если вы его реализуете.

PS. Я действительно сомневаюсь, что сегментация используется вообще.

0

Я предполагаю, что это, вероятно, какое-то пороговое значение, обнаружение края (Sobel/Canny/Roberts/whatever) и постер.

3

Вы видите это post. В нем объясняется, как получить тот же результат, используя ImageMagic, а IM - opensource.

0

С мастерить с ним я узнал, что:

  • это детерминированный
  • он не делает каких-либо постеризации на основе пикселей для достижения конечного эффекта
  • это, вероятно, не использовать любое обнаружение края на основе пикселей, похоже, работает скорее с областями, чем с краями.
  • вычисляет фигуры замкнутых многоугольников для рисования (некоторые из краев многоугольника могут перекрываться с краями изображения).
  • Когда края полигонов известны, цвет каждой области, заключенной в краях (не обязательно принадлежащий одному полигону), окрашен в средний цвет пикселей исходного изображения, которое покрывает область.
  • край многоугольника может пересекаться с самим собой. Особенно заметен для простоты на краю.
  • как «простота линии» падает, увеличивается количество краев многоугольника, а также увеличивается количество полигонов.
  • края верности влияет на количество строк многоугольника края, но не влияет на количество полигонов
  • высокой кромки верности (= 3) вызывает одиночный многоугольник, чтобы иметь очень длинные и очень короткие края в то же время, низкая точность (= 1) вызывает одиночный многоугольник, чтобы иметь все края примерно одинаковой длины.
  • Простота и кратковременная точность переднего края, похоже, предпочитают многоугольники, закрепленные на краях изображения, даже по цене здравого смысла.

В целом это выглядит как упрощенная версия алгоритма Live Trace от Adobe Illustrator, который использует полигоны вместо кривых.

... или, может быть, нет.

Смежные вопросы