Подтвердить что ты не робот

Как мультяшное изображение программно?

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

4b9b3361

Ответ 1

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

  • Медиана или повторяющийся фильтр размытия ящика, чтобы получить мультяшную цветовую палитру
    • Изменить: Двусторонняя фильтрация должна лучше соответствовать вашим потребностям
  • Минимальный фильтр (нулевой процентиль) для улучшения некоторых типов ребер.
  • Сегментация цветного изображения с использованием либо малого субкуба или сферы в цветовом кубе RGB
  • Улучшение общего края на сегментированном изображении с использованием обнаружения края, такого как ядра Sobel или трассировка с 8-сторонней границей
  • Композитное изображение с размытым/срединным фильтром с расширенными ребрами

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

Дополнительные изменения:

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

Материал для чтения:

  • Быстрая медианная и двусторонняя фильтрация (получите PDF)
  • Медиана Фильтрация Постоянное время (получить PDF) Примечание: У меня есть реализация этого в С# с использованием Mono/SIMD для ускорения слияния гистограмм, однако он кажется лучше, чем алгоритм O (r), когда диаметр превышает ~ 60 пикселей из-за сопоставимого количества добавочных/вспомогательных инструкций (точка безубыточности), реализация С++, вероятно, намного лучше подходит для использования SIMD.

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

Ответ 2

Вы можете попробовать ротоскопию, например toonyphotos.com:

rotoscopy example

Ответ 4

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

Ответ 5

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

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

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

Ответ 6

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

  • Откройте изображение в Photoshop
  • Фильтp > Размытие > Размытие по Гауссу. Задайте радиус 3,0 или выше, чтобы попробовать.
  • Изменить > Отклонить гауссовское размытие. Появится окно., установите режим затемнения. Вам также может потребоваться уменьшить непрозрачность.

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

enter image description here

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

Ответ 7

Это относительно легко сделать. Вот шаги:

  • двусторонняя фильтрация для упрощения/абстрагирования фотографии. Вы можете отделить двусторонний фильтр, чтобы он работал быстрее. Выполните двусторонний фильтр в 1d вдоль градиента и затем по нормали к градиенту.

  • обнаружить края. Например, используя дифференциал гауссовского алгоритма. Вы можете использовать DoG в направлении градиента и сгладить его по линиям потока. Чтобы получить линии потока, вам нужно получить Edge Tangent Flow (ETF), который вы можете получить через тензор структуры.

  • квантовать цвета. На самом деле, вы квантуете яркость, чтобы имитировать затенение cel или toon shading.

  • смешайте абстрактное изображение после квантования и края, которые вы обнаружили.

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

Я сделал несколько бесплатных программ (для win64), которые делают именно это по адресу: http://3dstereophoto.blogspot.com/p/painting-software.html

Название программного обеспечения "The Cartoonist", и вы можете увидеть его в действии здесь: http://3dstereophoto.blogspot.com/2018/07/non-photorealistic-rendering-software_9.html

Это ссылки на мой блог, который в основном посвящен трехмерной фотографии (карты глубины, фотограмметрия и т.д.).

Ответ 8

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

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


возможно (я не знаю) imagemagick имеет много функций, возможно, у него есть такая функция, но я не знаю...