Tengo un SVG con degradados. El posprocesamiento con GIMP 2.8 produjo bandas debido a su rasterización, que es de solo 8 bits por canal. Descargué Gimp 2.10, luego configuré la precisión del canal en 16 bits, lo importé directamente desde Inkscape como SVG, pero las bandas estaban allí como antes. Luego instalé Inkscape 1.0.1, exportado como PNG de 16 bits, importado a Gimp 2.10. Gimp muestra 16 bits/canal, pero las bandas siguen ahí.
¿Existe alguna herramienta de conversión accesible que cree una verdadera imagen ráster de 16 bits/canal a partir de SVG, incluidos los degradados? Preferiblemente para Ubuntu.
EDITO: adjunto un ejemplo. En lugar de Color Curves, ahora uso otro filtro de color, porque es más fácil saber cómo se parametrizó. Aunque el efecto es similar.
En primer lugar, uso Inkscape 1.0.1 para exportar https://svgshare.com/s/TQe como PNG RGB16 a Gimp 2.10. Luego uso el filtro Brillo/contraste, donde cambio el contraste a 0.4. El efecto:
Algunos de los valores posteriores del componente rojo, probados con el selector de color: 33.9, 38.9, 41.3, escala 0...100. Como se ve, la precisión no es ni siquiera de 8 bits.
En realidad, el cairo no representa los gradientes a una profundidad de 16 bits por canal. Hay un tema abierto al respecto. Ver:
Ahora, como esto sigue siendo solo una especulación, eché un vistazo a la fuente de El Cairo. Sí, este es el caso. También resultados verificados en mathematica y photoshop.
Entonces, todo lo que obtiene es una imagen de 8 bits en un contenedor de imágenes de 16 bits. No hay solución para Inkscape, no hay solución para Adobe Illustrator, la última vez que verifiqué ninguna solución para Corel, intente con Affinity Designer. Es poco probable que alguno de los renderizadores comunes lo haga porque svg es un renderizador de pantalla por diseño. Escriba su propio renderizador o use una aplicación 3D para renderizar el svg. Dado que las splines de color son bastante comunes en las aplicaciones 3D, puede usar blender o maya para renderizar esto. Ambas aplicaciones también son aceptables si tiene formas, pero no todas las funciones SVG realmente esotéricas.
El histograma de su imagen se ve así:
El histograma del SVG cargado directamente en Gimp o cargado en Inkscape, y exportado a PNG y cargado en Gimp son similares. Las características importantes son los huecos y los picos. Cuando estira el contraste (y para obtener la imagen que muestra arriba de su SVG, aumenta mucho el contraste ), en realidad está ampliando las brechas:
y los saltos repentinos en el valor crean bandas.
Si convierte a 16 bits en Gimp, todavía tiene espacios, por lo que su aumento en el contraste aún crea bandas (porque la precisión adicional no llenará los espacios (*)).
Lo que puede hacer en el modo de 16 bits (o incluso en 8 bits) es agregar una pequeña cantidad de ruido HSV para llenar los espacios (puede verificar el Histograma en tiempo real mientras juega en el diálogo de ruido HSV, para agregar el menor ruido posible (principalmente tono/saturación) para nivelar el histograma):
Luego, presionar el contraste no produce bandas (pero, por supuesto, hace que el ruido agregado sea más visible).
El método también funciona de alguna manera en 8 bits, pero estirar el contraste como lo hace eventualmente creará bandas, incluso si es mucho menos malo que en su intento inicial.
(*) Técnicamente, el cambio de contraste es una función de los valores del canal. Esto significa que valores de origen idénticos producen resultados idénticos. Por lo tanto, no puede tener más colores en la salida que en las entradas. Pero diferentes valores de entrada pueden producir resultados idénticos. Entonces, a menos que su función sea la identidad, siempre perderá colores (pero proporcionalmente perderá muchos menos colores con 16 bits). Si observa el histograma, un histograma plano en la imagen de origen se transforma en un peine, con espacios en un lado y picos en el otro.
joojaa