Pixelart: El mundo del píxel.

oOL4sTOo

#3469 que risas mas tontas he echao

Yerboth

#3510 sinceramente, bastante horrible xDD tiene ruido a rabiar y 0 sentido algunas partes.

El pixelart de la IA está bien para sacar ideas pero en texturas e iluminación está muy verde

1 respuesta
Hipnos

#3512 La verdad que se me ocurre un programita bastante fácil para ajustar un pixel art de IA. En resumen:

Extraer paleta de colores.

Resumir paleta de colores eliminando colores inferiores al 1% de la imagen.

Clusterizar la imagen en un k-means. Opcionalmente dividirla en una matriz de M x M.

Obtener el tamaño mínimo de cluster y asignarle un pixel.

Mapear los clusters al pixel más cercano y a la paleta de color más cercana.

2 respuestas
Yerboth

#3513 no sé cómo funcionan exactamente, he visto algunas que se acercan bastante pero el pixelart no es una imagen pixelada y con colores reducidos, siempre tienen fallos garrafales en los conceptos más básicos

1 respuesta
Hipnos

#3514 Joder pero te da una base muy buena para arreglar si te ha molado el concepto.

gonya707

#3513 por favor hazlo para que no lo añada a la lista interminable de proyectos :rofl:

La verdad es que yo me puse a hacer algo parecido a mano (photoshop tiene herramientas para algunos de los pasos) y no era tan trivial, pero quiza con un toque de ML magic esos problemas se solventen. De todos modos ya adelanto que vislumbro el problema de que las cosas no se alineen bien a un grid de pixels y entonces tengas un efecto parecido al que pasa cuando usas nearest neighbor para redimensionar una imagen, que se vuelve muy ruidosa. La imagen de kaos tiene el grid bastante bien comparado con otras que he visto generadas por IA, pero a poco que te fijes en los detalles ves cosas rarunas.

Ya metiendo en el lado artistico si que es verdad que hace muchas cosas la imagen que son consideradas malas practicas, un monton de pixels sueltos, a esto lo llama orphans, pero también tiene muchas ideas interesantes, la disposición de la iluminación está sorprendentemente bien, luz que viene de la izquierda y proyecta sombras siempre para ese lado, la forma de las nubes me parece bastante guay, y el incluir "clusters" de pixels a modo de flores cayendo y que se vean un poco las ramas en lo alto de la copa son buenos detalles de composición, voy a usar la imagen de referencia y hacer uno a mi manera

3 respuestas
Kaos

#3516 Sí, la luz mola bastante, y también cómo lleva al fondo la parte de abajo del follaje con un color sólido y más oscuro. Da mucha profundidad eso. La continuidad de las ramas por arriba también mola.

1 respuesta
neZbo

Lo último que estuve trasteando fue intentar hacer un juego de cartas en Godot y el arte lo hacía usando IA generativa, no es perfecta para nada, pero para trastear ni tan mal:

3 2 respuestas
Ridote

#3518 son unos tiquismiquis pero saca cosas bastante potables. Eso sí, el árbol de la derecha tiene dientes de conejo.

1 respuesta
neZbo

#3519 Es el conejárbol, ser mitológico del mundo que he creado para el juego de cartas que no voy a terminar xdd

1
Yerboth

#3518 bastante chulos y además la paleta aunque cambia queda bastante coherente para usarlos como assets

#3517 #3516 sí hace muchas cosas bien pero la lia mucho, los clústers por ejemplo de las flores están bien 3 veces, los demás los rompe, orphan pixels a manta, los doubles se pueden perdonar porque está haciendo texturas

Ya de resolución ni hablemos, es una resolución muy grande y de un vistazo da el pego, pero es que lo amplias y hay muchísimos "píxeles" que ni son cuadrados, mete degradados raros.. en fin

Yo cuando la uso prefiero pedirle estilo cartoon, comic, manga etc. Y usarlo de referencia que pixelart que no lo puedes usar ni de base para retocarlo

Hipnos

#3516 No me da la vida pero esto se puede hacer con OpenCV eh. Ni ML ni pollas.

vasketahd

hay una IA que he descubierto que funciona el ASESPRITE, por si alguien la quiere probar. yo no consigo sacarle jugo, de hecho sigo dandole vueltas a la capybara.

https://www.pixellab.ai/

5
Hipnos

Bueno a ver. Analizando la imagen que ha puesto Kaos, uno de los problemas principales del pixel art generado por IA es que no hay una paleta clara definida.

Si saco un diccionario de colores, tiene esta pinta:

{(255, 255, 255): 1, (254, 255, 243): 7, (253, 255, 243): 5, (252, 255, 239): 2, (251, 255, 255): 2, (250, 255, 251): 6, (249, 255, 243): 4, (248, 255, 255): 6, (247, 255, 251): 3, (246, 255, 251): 4, (245, 255, 255): 5, (244, 255, 255): 10, (243, 255, 255): 8, (242, 255, 251): 1, (241, 255, 255): 11, ...}

Es decir, hay pequeñas variantes del mismo color y eso no es pixel art. La primera fase va a ser intentar simplificar la imagen a un número limitado de colores con cierta distancia entre ellos. El problema va a ser cuántos colores y cuánta distancia. Voy a ver lo que consigo.

Hipnos

#3524 Vale bueno, ese problema está solucionado. Hay que ajustar algún parámetro pero puedes obtener una paleta de colores limitada.

Original:

Modificada:

Número de colores únicos en la imagen original: 40734
Número de colores únicos en la imagen simplificada: 33
Número de colores únicos en la imagen simplificada y resized: 27

Original 2:

Modificada 2:

Número de colores únicos en la imagen original: 129462
Número de colores únicos en la imagen simplificada: 18
Número de colores únicos en la imagen simplificada y resized: 16

Original 3:

Modificada 3:

Número de colores únicos en la imagen original: 209303
Número de colores únicos en la imagen simplificada: 31
Número de colores únicos en la imagen simplificada y resized: 26

Modificada 3 (con muchos más colores):

Número de colores únicos en la imagen original: 209303
Número de colores únicos en la imagen simplificada: 385
Número de colores únicos en la imagen simplificada y resized: 270

Original 4:

Modificada 4:

Número de colores únicos en la imagen original: 96224
Número de colores únicos en la imagen simplificada: 24
Número de colores únicos en la imagen simplificada y resized: 19

Modificada 4 (con muchos más colores):

Número de colores únicos en la imagen original: 96224
Número de colores únicos en la imagen simplificada: 231
Número de colores únicos en la imagen simplificada y resized: 144

Original 5:

Modificada 5:

Número de colores únicos en la imagen original: 94078
Número de colores únicos en la imagen simplificada: 28
Número de colores únicos en la imagen simplificada y resized: 24

Modificada 5 (con muchos más colores):

Número de colores únicos en la imagen original: 94078
Número de colores únicos en la imagen simplificada: 299
Número de colores únicos en la imagen simplificada y resized: 178

Ahora el problema que surge es qué tipo de pixel art quieres, si es con paleta limitada o a tope de colorinos.

6 1 respuesta
Potito

#3525 como se hace eso de limitar la paleta?

2 respuestas
Slowbro

#3526 Que @hipnos me corrija, que lo estaba haciendo en paralelo para desintoxicarme de c++

Imagen -> Cargas array -> KMeans u otro algo de clusterización (cada centroide es un color de la paleta) -> pooling del array (average/median) -> distancia mínima pixel-paleta -> array con solo elementos de la paleta -> upscale constante -> imagen

1 respuesta
Hipnos

#3526 #3527 Pues al final he hecho una opción cutre y nada eficiente. Básicamente:

Miro un pixel, si su color se parece a alguno que ya tengo en mi diccionario, lo cambio a ese color. Si no se parece a ninguno, ese color lo añado al diccionario.

Al final he definido un parámetro de distancia RGB para ver cuánto se parece un color a otro.

La segunda parte del código es reducir la imagen a 1:1, normalmente las IAs te vomitan cosas a 5:1 pero mal hechas. Los píxeles no corresponden. Así que divido por 5 y luego multiplico por 5 otra vez, y así fuerzo a que la imagen sea pixel art de verdad.

Luego hago movidas con filtros de la mediana para quitar ruido pero el resultado es cuestionable. Se pierde mucho detalle.

Si quieres mi código de mierda lo subo a github: https://github.com/Heikelol/PixelArtRefiner

1 2 respuestas
Mandarino

#3528 si te interesa ver solucion algo mas academica busca "clustering by k-means"

edit: nada, ya vi que lo comentaron antes xD2

1 respuesta
Slowbro

#3528 Joder, vives en 2077 xD

Yo estaba haciendo un remember de scikit y probando diferentes funciones en el pooling.

1 respuesta
Hipnos

#3529 El tema es que K-means puede no funcionar bien aquí. No estoy seguro de que si hay grandes cantidades de colores parecidos empiece a generar clusters donde no los hay.

Quería cuantizar a pelo los colores con una distancia mínima para generar una paleta con sentido, como en el pixel art de verdad. Pero es verdad que mi algoritmo va poxel a pixel y es extremadamente lento si se escogen distancias de color pequeñas. Es como un k-means con cientos de k.

#3530 Por xd

1 respuesta
Hipnos

Como curiosidad también puede crear pixel art a partir de imágenes reales:

Original:

Modificada:

Original 2:

Modificada 2:

Original 3:

Modificada 3:

Obviamente habría que retocar pero son imágenes iniciales aceptables y paletas curiosas.

2 respuestas
thenanox

#3532 vaya vibes de monkey island la modificada 2

Slowbro

#3531 Me ha sorprendido que lo montaras así, y lo de contraste y la distancia mínima es un punto.

Estaba pensando si tenía sentido aplicarlo a un video/gif (sacar frames, aplicar el downsample/paleta, interpolar). Y en alguna parte del proceso aplicar segmentación semántica de una región para sacar alguna animación.

Kaos

Queda bastante más guapo con la paleta simplificada, sí

Yerboth

Al final lo he recoloreado usando un patron de luz mas estandar y olvidándome del contraluz, no queda coherente pero se ve mejor xD

#3532 bastante resultón, el primero sobre todo podría llegar a dar el pego con menos ruido, ¿puedes conseguir que los píxeles salgan todos cuadrados? los hay de 5x5 pero la mayoría son de 6x5
Sacándolos cuadrados se puede escalar directamente sin deformarlo y usarlo de base. Es otro problema que tienen las generadas por IA, que normalmente todos los cuadrados que pretende que sean píxeles no son iguales.

1 respuesta
Hipnos

#3536 Claro el programa te lo da a 1:1 si quieres. Solo le hago un 1:5 para que no os dejéis los ojos.

1 1 respuesta
Yerboth

#3537 Está guay, esta en concreto es demasiado compleja e imposible que quede bien, está lejísimos de ser pixelart

si quisieras dragones a lo lejos de fondo con esta referencia:


nunca acabarías haciendo esto:

Ya no digamos pedirle a una IA que se acerque remotamente a esto:

2 respuestas
Hipnos

#3538 Claro a ver. El pixel art no es reducir paletas y escalas, eso lo hace un programita como el mío.

La gracia del pixel art es escoger las formas más artísticas y que mejor se adapten al formato. Si quieres dibujar dragones en un formato de 30*30px pues eliges una distribución de píxeles y una paleta mucho más descriptiva.

En teoría la composición te la hace la IA generativa. Este programa está pensado para purgar un poco la salida loca que te da la IA (que normalmente ni tiene paleta reducida ni cuadran los pixelotes). Luego esa salida la va a tener que tocar un humano porque quedan errores.

Los errores más gordos que quedan son dos:

  1. Píxeles huerfanos. Esto se puede resolver con un filtro de la mediana que tengo implementado, pero se pierde mucho detalle. Se "emborrona". En algunos casos puede valer pero en la mayoría no.

  2. Alucinaciones de la IA. Esto no tiene arreglo. A veces mete un pixel de color random o se inventa trozos de objetos en la escena.

Es imprescindible la mano de un humano para corregir esos dos. Imagino que un modelo especifico de IA generativa de pixel art podría dar menos problemas del primer tipo. Pero el segundo tipo de problema es inherente a las IAs generativas.

1
Hipnos

#3538 He probado por curiosidad tu foto como input y tampoco es tan horrible. Jugando un poco con el contraste sale una base aceptable:

Respecto a crear composiciones, puedes jugar con la IA y mi programita y te pueden salir cosas chulas que requieren poca mano de obra posterior.

Output AI (https://perchance.org/ai-photo-generator) : pixel art, white hair, rpg character, male, profile picture, videogame

Modificada:

Ouput AI 2 (https://perchance.org/ai-photo-generator) : pixel art, white hair, rpg character, male, profile picture, videogame, black outline

Modificada:

2 2 respuestas