2009-08-31 2 views
55

Мое приложение работает с фотографиями и видеороликами людей, которые я хочу мультфильм. Поэтому мне нужен алгоритм для этого вручную (мы используем C++/Qt для нашего продукта, который имеет классы манипуляции с изображениями) или, возможно, какую-то программу CLI, которая сделает это для меня, что я могу позвонить и использовать из нашего собственного приложения.Как мультяшное изображение программно?

+3

не могли бы вы привести несколько примеров мультфильмов? – ThibThib

+0

Чтобы получить больше результатов поиска, документы и т. Д., Найдите «не фотореалистичный рендеринг (2d)». – felix

ответ

42

Вот некоторые алгоритмы играть с:

  • Median или неоднократного окно фильтра размывания, чтобы получить мультяшным цветовую палитру
    • Редактировать: Двусторонняя фильтрация должна соответствовать вашему n eeds еще лучше
  • Min фильтр (Нулевое процентиль) для улучшения некоторых типов кромок
  • сегментации изображения Цвета используя либо небольшой подкуб или сферу в цветовом кубе RGB
  • Generic повышения края на сегментированном изображении с помощью функции обнаружения краев такие, как Собели ядра или 8-процессорного край трассировки
  • Композит размыт/медианное отфильтрованное изображение с расширенными краями

Они достаточно просты и все очень легко осуществить. Имейте в виду, что срединные и размытые фильтры могут быть реализованы с линейной временной сложностью w.r.t. радиус ядра.

Больше редактирует:

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

Чтение материал:

  • Fast Median and Bilateral Filtering (получить PDF)
  • Median Filtering Constant time (получить PDF) Примечание: У меня есть реализация этого в C# с помощью Mono/SIMD для ускорения гистограммы слипание, однако это только кажется лучше, чем алгоритм O (r), когда диаметр превышает ~ 60 пикселей из-за сопоставимого количества дополнительных/вспомогательных инструкций (точка безубыточности), реализация на С ++, вероятно, намного лучше подходит для использования SI MD.

Другие материалы для чтения включают в себя Gonzalez & Woods' Digital Image Processing (похоже, это более старое издание) для сегментации и краевой трассировки. 8-сторонняя трассировка края может быть очень сложной, чтобы наклонить голову (выбор между пикселями в пикселях или между пикселями и как защелкиваться на краях). Я был бы рад поделиться каким-то кодом, но сто-лайнеры здесь не подходят ровно.

+0

Это, по-моему, подходит для моих целей лучше всего - вы случайно знаете какие-либо хорошие онлайн-ресурсы для этих алгоритмов, которые мы могли бы разместить здесь, для полноты? – JimDaniel

+0

Конечно, я вернусь к нему немного позже. –

+0

Прохладный, спасибо большое! – JimDaniel

1

на самом деле я не знаю, инструмент, но вы можете посмотреть на OSG (OpenSceneGraph)

есть библиотека osgFX и есть карикатура эффект ... может быть, вы можете внушать из этой библиотеки ...


может быть (я не знаю) ImageMagick имеет много особенностей, может быть, он имеет функцию, как это, но я не знаю ...

+0

Сценарий является частью системы отображения, он управляет хранением графика объектов для отображения - не манипулирует изображениями. Что-то вроде openCV было бы более подходящим –

5

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

  1. Обнаружьте края и нарисуйте довольно плотную линию (несколько пикселей) на этих краях.

  2. Уменьшить количество цветов на изображении.

+0

На самом деле я пробовал этот алгоритм, но я не мог добиться успеха. может быть, чего-то не хватает? – ufukgun

4

Не уверен, если это поможет, но this tutorial для Photoshop предлагает делать следующее:

  1. Откройте изображение в Photoshop
  2. Filter> Blur> Gaussian Blur. Установите радиус 3,0 или выше, чтобы по вкусу.
  3. Редактировать> Fade Gaussian Blur. Появится окно. , , установите режим затемнения. Вам также может потребоваться уменьшить непрозрачность.

Вот результат.

enter image description here

Я полагаю, что вы могли бы сделать что-то подобное в вашей программе.

+0

Не удалось найти учебник, веб-сайт больше похож на ссылку-ферму ... пожалуйста, исправьте ссылку. – redtuna

+0

Странно, это работало, когда я разместил его. Исправлено то, что сейчас, и, похоже, снова работает. Спасибо за головы. – RiddlerDev

23

Вы можете попробовать rotoscopy, как toonyphotos.com делает:

rotoscopy example

+0

сладкий. исходный код тоже! – bryanbcook

+4

из часто задаваемых вопросов: «Ротоскоп требует ввода человека для правильной работы». – Josip

+0

@ Josip: Вы правы, я забыл этот момент. Тем не менее, ротоскопия в целом, похоже, делает то, что он просил. – mooware

7

Если есть набор параметров, которые достигают желаемого эффекта в мультяшном фильтре the GIMP (или какой-либо другой комбинации фильтров), его можно запустить в batch processing mode.

12

Возможно, вы захотите проверить Freestyle проект с открытым исходным кодом (Google Summer of Code, even) для реализации non-photorealistic renderer для Blender. Вот пример его выхода в мультяшном режиме: alt text http://freestyle.sourceforge.net/GALLERY/CARTOON/girl-color-and-lines-crop.jpg

+0

+1 - Это отличное изображение, особенно с линиями, которые значительно помогают взглянуть и интерпретировать изображение. – tom10