Реализация фотошопа "Плакатные края" -фильтр - PullRequest
11 голосов
/ 06 октября 2010

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

alt text

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

Так кто-нибудь знает, как реализован фильтр «Границы постера», или имеет какое-либо представление о том, какую обработку изображения следует выполнить, чтобы получить последнее изображение из первого.

Не то, чтобы это действительно имело значение, но я использую Java, и мой код фильтрации изображений по большей части основан на фильтрах, найденных здесь: http://www.jhlabs.com/ip/filters/index.html

Редактировать Описание фильтра от adobe.com:

Границы плаката Уменьшает количество цветов в изображении (постеризует его) в соответствии с установленным параметром постеризации, находит края изображения и рисует на них черные линии. Большие широкие области имеют простое затенение, а тонкие темные детали распределяются по всему изображению.

Ответы [ 3 ]

9 голосов
/ 15 октября 2010

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

Относительно постеризации: Учитывая их выступления в SIGGRAPH, ребята из Adobe оченьмного в двусторонней фильтрации (пожалуйста, Google, я не могу связать больше), техника сглаживания, которая сохраняет важные края.Я думаю, что если вы примените двусторонний фильтр и постеризируете впоследствии, вы должны приблизиться к желаемому виду.К сожалению, эффективная реализация двустороннего фильтра не тривиальна.

Обновление для всех, кто еще интересуется этой темой

Двусторонний фильтр, который я предложил выше, все чаще заменяется на Управляемый фильтр , по крайней мере, в сообществе Computer Vision (графика, кажется, люди еще не реализовали Управляемый фильтр).Управляемый фильтр достигает аналогичных результатов, но его гораздо проще реализовать эффективно.Точный алгоритм для Управляемого фильтра очень эффективен, в то время как эффективная двусторонняя фильтрация требует приближений или безумно сложных алгоритмов.

0 голосов
/ 10 октября 2010

Скопируйте оригинальное изображение и затем примените PosterizeFilter.Затем примените EdgeFilter, GrayscaleFilter и InvertFilter к копии.Наконец, умножьте постеризованный оригинал на копию.В этот момент у вас должно быть что-то близкое к Poster edges.

0 голосов
/ 06 октября 2010

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

  1. Запустите обнаружение края на нескольких уровнях (масштабах) сглаженной гауссовой пирамиды входного изображения[sigma_min, sigma_max]
  2. Затем либо суммируйте, либо выберите максимальные значения краев по шкалам
  3. Постерируйте с исходным изображением (смесь?)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...