Domanda

sto giocando con alcuni manuali (walk-the-pixel) l'elaborazione delle immagini, e sto ricreando la miscela standard "overlay". Sto guardando le macro "Photoshop" matematiche qui:

http://www.nathanm.com/photoshop-blending-math/ ( Vedi anche qui per la versione più leggibile di Overlay)

Entrambe le immagini sorgente sono in RGBA abbastanza standard (8 bits ciascuno) formato, come è la destinazione. Quando entrambe le immagini sono completamente opaco (alfa è 1,0), il risultato è mescolato correttamente come previsto:

Ma se il mio livello di "miscela" (l'immagine in alto) ha la trasparenza in esso, io sono un po 'sconcertò da come fattore che alpha blending nella equazione in modo corretto. Mi aspetto di lavorare tale che i pixel trasparenti del livello di fusione non influiscono sul risultato, pixel opachi nel livello di fusione fare la miscela sovrapposizione come normale, e semitrasparenti pixel strato miscela avere qualche effetto in scala sul risultato.

Can qualcuno mi spieghi le equazioni miscela o il concetto dietro facendo questo?

punti Bonus se potete aiutarmi a farlo in modo tale che l'immagine risultante è correttamente premoltiplicati alpha (che entra in gioco solo per i pixel non sono opache in entrambi gli strati, credo.)

Grazie!

// factor in blendLayerA, (1-blendLayerA) somehow?
resultR = ChannelBlend_Overlay(baseLayerR, blendLayerR); 
resultG = ChannelBlend_Overlay(baseLayerG, blendLayerG);
resultB = ChannelBlend_Overlay(baseLayerB, blendLayerB);
resultA = 1.0; // also, what should this be??
È stato utile?

Soluzione

Solo una supposizione, ma vorrei provare

resultA = 1 - (1-baseAlpha) * (1-blendAlpha)

Altri suggerimenti

Dopo la miscelazione il colore di base e il colore di fusione, miscelare il colore di base originale e il colore risultante dalla fusione mediante l'alfa del colore di fusione:

vec4 baseColor = ...;
vec4 blendColor = ...;
vec4 blendedColor = blend(baseColor, blendColor);
vec4 fragmentColor = (1.0 - blendColor.a) * baseColor + blendColor.a * blendedColor;

Uso questo per "overlay" blending un colore base opaca e si fondono trama che ha un sacco di (semi) pixel trasparenti.

sperimentavo con questo problema esattamente, finché ho scoperto che la migliore è di avere la base e il livello di fusione sia con alfa dritto, poi premoltiplicano solo il risultato con l'alfa base.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top