Popart con imagemagick
sábado, 7 de marzo de 2009
Desde que el graffitero aquel sacase su versión popart de Obama han salido cartelería imitando el estilo como para parar un carro.
El efecto conseguido con la fotografía ( excluida la parte correspondiente a la denuncia por infracción de licencias ) es muy resultón y facil de conseguir con Imagemagick desde la linea de consola, en una sola línea ó en dos si ademas queremos la versión vectorizada y editable.
Archivo formato SVG con el resultado final podeis cogerlo aqui
convert DSC_5754.JPG x:

Los mejores resultados se consiguen con retratos de primer plano y con poco «ruido», pero es cuestión de hacer pruebas.
convert DSC_5754.JPG \( -clone 0 -colorspace gray -resize 400x400 -normalize \) -colorspace RGB -delete 0 -insert 0 \( -size 10x2 xc:'rgb(45,60,80)' xc:'rgb(218,52,30)' xc:'rgb(150,175,175)' xc:'rgb(239,234,210)' +append \) -clut x:

La línea principal ya está hecha. Básicamente: convertimos la imagen a escala de grises, normalizamos y reescalamos. A continuación creamos una imagen de 4 bandas de color y mediante -clut reemplazamos los colores de la fotografía con los de esta imagen. La posición y tamaño de estos 4 colores y el brillo de la fotografia determina el aspecto final del reemplazo de colores.
convert DSC_5754.JPG \( -clone 0 -colorspace gray -resize 400x400 -normalize \) -colorspace RGB -delete 0 -insert 0 \( -size 10x2 xc:'rgb(45,60,80)' xc:'rgb(218,52,30)' xc:'rgb(150,175,175)' -size 60x2 xc:'rgb(239,234,210)' +append \) -clut x:

Para conseguir mayor cantidad de «blancos» en resultado final he ampliado el porcentaje de estos mediante -size 60×2. Aumenta 100×2 para fotografias oscuras ó reduce a 30×2 para fotografias claras.
convert DSC_5754.JPG \( -clone 0 -colorspace gray -resize 400x400 -normalize -gaussian-blur 1x2 \) -colorspace RGB -delete 0 -insert 0 \( -size 10x2 xc:'rgb(45,60,80)' xc:'rgb(218,52,30)' xc:'rgb(150,175,175)' -size 60x2 xc:'rgb(239,234,210)' +append \) -clut x:

Ahora desenfocamos un pelín la imagen original para suavizar el contorno de lineas eliminar algo de ruido, -gaussian-blur 1×2
convert DSC_5754.JPG \( -clone 0 -colorspace gray -resize 400x400 -normalize -gaussian-blur 1x2 \) -colorspace RGB -delete 0 -insert 0 \( -size 10x2 xc:'rgb(45,60,80)' xc:'rgb(218,52,30)' xc:'rgb(150,175,175)' -size 60x2 xc:'rgb(239,234,210)' +append \) -clut
-bordercolor gray50 -border 1 -bordercolor white -border 20x20 final.png

A continuación incorporamos un margen blanco y un pequeño borde gris y la guardamos el resultado como final.png.
Para vectorizar y obtener un archivo SVG editable con inkscape bastaría con hacer (el resultado lo puedes ver al principio de esta página).
autotrace --color-count=4 -output-file=final.svg --output-format=svg --despeckle-level=20 --corner-threshold=3 final.png
28 de March, 2025 @ 22:55