¿Alfa que combina una imagen roja, azul y verde para producir una imagen teñida con cualquier valor RGB?

StackOverflow https://stackoverflow.com/questions/2030471

Pregunta

Básicamente, tengo un contexto en el que no puedo teñir programáticamente una imagen, aunque puedo cambiar su valor alfa. Con algo de experimentación, descubrí que puedo colocar una versión roja, azul y verde de la imagen, con valores alfa específicos, para producir una amplia gama de colores. Sin embargo, ¿me pregunto si es posible lograr una verdadera representación RGB a través de este método? Si es así, ¿cuál es la fórmula para convertir un valor RGB en diferentes valores alfa para las capas rojas, azules y verdes?

¿Fue útil?

Solución

La "ecuación" básica de la combinación alfa es:

alpha * (R1,G1,B1) + (1-alpha) * (R2,G2,B2)

Cuando tienes tres capas con alfa, en realidad estás combinando 4 capas (la cuarta es negra), por lo que el color final es:

alpha1 * (R1,G1,B1) + (1-alpha1) * ( 
   alpha2 * (R2,G2,B2) + (1-alpha2) * (
      alpha3 * (R3,G3,B3) + (1-alpha2) * (0,0,0) ) )

Siempre que tenga la misma imagen en cada capa y la capa1 es el canal rojo (G1 = B1 = 0) y la capa2 es verde y la capa3 es azul que obtiene:

(alpha1 * R, (1-alpha1)*alpha2 * G, (1-alpha1)*(1-alpha2)*alpha3 * B)

Para un píxel blanco, puede hacer cualquier color posible. Para un píxel negro no puedes hacer nada más que negro. Para cualquier otro píxel, está restringido por los valores de R, G y B.

Digamos que quería lograr (RD, GD, BD) en un píxel donde el color actual está (R, G, B), entonces tendrá que elegir:

alpha1 = Rd/R
alpha2 = Gd/(G*(1-alpha1))
alpha3 = Bd/(B*(1-alpha1)*(1-alpha2))

El problema es que el alfa generalmente solo puede estar entre 0 y 1. Entonces, por ejemplo, si rd> r no hay nada que pueda hacer.

Puede hacerlo mejor si puede controlar la función de mezcla (por ejemplo, en Photoshop).

Otros consejos

No creo que sea posible, si te entiendo correctamente.

Si, para cierto píxel, el valor rojo de su imagen es, por ejemplo, 0.5, puede combinarlo con un alfa en el rango (típico) [0,1] para formar cualquier valor hasta 0.5, pero no puede Vaya por encima, para obtener EG 0.6 más o menos como el valor de salida.

Si está buscando crear 3 capas que se combinen suministrando la imagen original, es muy posible. Aquí hay un enlace a un script de Python que llama a las funciones en Paint Shop Pro para hacer las partes difíciles.

http://pixelnook.home.comcast.net/~pixelnook/splittorgb.htm

Si necesita más detalles que eso, deje un comentario e intentaré completarlo más tarde.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top