48 votos

Como una imagen de dibujos animados-ify mediante programación.

Tal vez hayan notado, pero los dibujos animados ifying de tus fotos es la última moda en internet. Mi jefe quiere que ahora nuestro producto, que funciona con fotografías y vídeos de la gente, a cartoonify ellos. Así que necesito un algoritmo para hacerlo de forma manual (se usan c++/Qt para nuestro producto, que ha manipulación de la imagen de las clases) o quizás algunos CLI programa que lo va a hacer por mí, para que yo pueda llamar y uso de nuestra propia app. He hecho algunas prelimanary búsquedas en internet, pero no mucho...

Gracias!

32voto

Cecil Has a Name Puntos 3385

He aquí algunos de los algoritmos para jugar con:

  • Mediana o repetido de la caja de filtro de desenfoque para obtener caricaturesco paleta de colores
    • Edit: Bilateral filtrado debe satisfacer sus necesidades, incluso mejor
  • Min filtro (cero por ciento) para mejorar algunos tipos de bordes
  • Color de la segmentación de la imagen utilizando pequeñas subcubo o esfera en el cubo de color RGB
  • Genérico de realce de bordes en imágenes segmentadas mediante la detección de bordes, tales como Sobel núcleos o 8-camino perimetral de seguimiento
  • Composit borrosa/mediana de la imagen filtrada con una mejora de bordes

Estos son muy básicas y muy fáciles de implementar. Tenga en cuenta que la mediana y la caja de filtros de desenfoque puede ser implementado con el tiempo lineal de la complejidad w.r.t. el núcleo de radio.

Más ediciones:

Una vez que usted consigue la idea de Huang algoritmo, la implementación de un cuadro de filtro de desenfoque es un delicioso pedazo de pastel.

Material de lectura:

  • Rápido de Mediana y Bilateral de Filtrado (obtener el PDF)
  • La mediana de la Constante de tiempo de Filtrado (obtener el PDF) Nota: tengo una aplicación de esto en C# con Mono/SIMD para acelerar el histograma de la coalescencia, sin embargo, sólo parece mejor que el S(r) algoritmo cuando el diámetro supera ~60 pixels, debido a que el número comparable de add/sub instrucciones (break-even point), una implementación en C++ es, probablemente, mucho mejor preparados para aprovechar SIMD.

Otros materiales de lectura incluyen González Y Woods, Procesamiento Digital de Imágenes (que parece ser una antigua edición) para la segmentación y el borde de seguimiento. 8-camino perimetral de seguimiento puede ser realmente difícil de doblar tu cabeza (la elección entre en píxeles o entre los píxeles de los bordes y cómo se pegan los bordes). Yo estaría encantado de compartir algo de código, pero los cientos de líneas de código no se ajustan exactamente suavemente en aquí.

22voto

mooware Puntos 945

Podrías intentar rotoscopy, como toonyphotos.com :

rotoscopy example

11voto

unwind Puntos 181987

Tal vez quieras revisar Freestyle, un proyecto de código abierto (Google Summer of Code, incluso) para implementar un renderizador no fotorrealista de Blender. Aquí está un ejemplo de su salida, en el modo de dibujos animados:alt text

6voto

John Barrett Puntos 516

Si hay un conjunto de parámetros que lograr el efecto deseado en el filtro de dibujos animados de la renga(o cualquier otra combinación de filtros) se puede ejecutar en un modo de procesamiento por lote.

5voto

martiert Puntos 880

No he hecho yo, pero pensando acerca de dos pasos que pueden dar la imagen un aspecto caricaturesco.

  1. Detecte los bordes y dibujar una línea bastante bastante gruesa (unos píxeles) en los bordes.

  2. Disminuir el número de colores en la imagen.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X