Startseite > Blendmodi, Experimentelles, Mathematik, Tutorials > Experimente mit „Ineinanderkopieren“

Experimente mit „Ineinanderkopieren“

In Anlehnung an meinen Artikel Experimente mit „Weiches Licht“ will ich heute ein wenig auf den Modus „Ineinanderkopieren“ eingehen.
Der heutige Artikel wird wieder sehr technisch und mit viel Mathematik, wen das nicht interessiert, der sollte diesen Artikel also nicht lesen :-).

Wahrscheinlich kennen die meisten von euch die gebräuchliche Beschreibung des Modus „Ineinanderkopieren“: „Ineinanderkopieren Führt eine Multiplikation bzw. eine Negativmultiplikation der Farben durch (abhängig von der Ausgangsfarbe). Muster und Farben überlagern die vorhandenen Pixel, wobei die Lichter und Tiefen der Ausgangsfarbe erhalten bleiben. Die Ausgangsfarbe wird nicht ersetzt, sondern mit der Füllfarbe gemischt, um die Lichter und Tiefen der Originalfarbe widerzuspiegeln.“ (Quelle: Adobe).
Nun weiß aber auch jeder, der ein wenig mit diesem Modus experimentiert hat, dass ein Überlagern mit Schwarz keineswegs ein schwarzes Bild ergibt, wie das beim „Multiplizieren“ der Fall wäre und ein Überlagern mit Weiß ergibt auch kein weißes Bild, wie beim „Negativ multiplizieren“.
Daher wird auch oft gesagt, „Ineinanderkopieren“ sei wie eine Mischung aus einem halbstarken „Multiplizieren“ und einem halbstarken „Negativ multiplizieren“.

Wenn wir uns ansehen, was passiert, wenn man ein Bild mit einer schwarzen „Ineinanderkopieren“-Ebene überlagert, fällt schnell auf, dass die Gradationskurve etwa so aussieht:
Ineinanderkopieren Schwarz Gradation
Wer noch meine Überlagerungskurven kennt, dem wird schnell auffallen, dass diese Kurve doch irgendwie vertraut aussieht.
In der Tat ist es so, dass die Gradation eines mit Schwarz im Modus „Ineinanderkopieren“ verrechneten Bildes genau gleich der eines mit sich selbst überlagerten Bildes im Modus „Linear nachbelichten“ ist.
Ein kleiner Test bestätigt diese Vermutung:
Stapel Vergleich Schwarz

Auf der anderen Seite haben wir dann noch die Überlagerung mit weiß, wo wir entsprechend davon ausgehen können, dass diese ähnlich einer Selbstüberlagerung mittels „Linear abwedeln“ ist.
Dies zeigt zum einen die Gradationskurve:
Weiß Ineinanderkopieren Gradation
Als auch der Vergleich:
Stapel Vergleich Weiß
Den Grund hierfür erkläre ich am Ende des Textes – nur soviel vorweg: Lasst euch nicht verwirren!

Also woher kommen jetzt die typischen Aussagen, „Ineinanderkopieren“ sei eine Mischung aus halbstarkem „Multiplizieren“ und halbstarkem „Negativ multiplizieren“?
Hierzu wollen wir uns einmal kurz die Formel von „Ineinanderkopieren“ anschauen:

B <= 0.5: C = 2 * A * B
B >  0.5: C = 1 – 2 * (1 – A) * (1 – B)

wobei A die aktuelle Ebene darstellt, B die darunter liegende und C das Ergebnis.

Da wir ja die Formeln von „Multiplizieren“: C = A * B
und „Negativ Multiplizieren“: C = 1 – (1 – A) * (1 – B)
kennen, können wir jetzt schnell ablesen, dass beim „Ineinanderkopieren“ auf Grund des halben Tonwertumfangs (der halben Stärke) die Ergebnisse der Berechnung jeweils verdoppelt werden müssen, um auf den vollen Tonwertumfang zu gelangen.
Aber wieso haben wir dann nicht das gleiche Ergebnis, wenn wir ein Bild mit Schwarz „Ineinanderkopieren“ und wenn wir es „Multiplizieren“?
Hierfür einige kurze Rechenbeispiele:

Multiplizieren:

A = 0
B = 0
C = A * B = 0 * 0 = 0

A = 0
B = 0.5
C = A * B = 0 * 0.5 = 0

A = 0
B = 1
C = A * B = 0 * 1 = 0

Ineinanderkopieren:

A = 0
B = 0 ( <= 0.5)
C = 2 * A * B = 2 * 0 * 0 = 0

A = 0
B = 0.5 ( <= 0.5)
C = 2 * A * B = 2 * 0 * 0.5 = 0

A = 0
B = 1 ( > 0.5)
C = 1 – 2 * (1 – A) * (1 – B) = 1 – 2 * (1 – 0) * (1 – 1) = 1

Das gleiche auch noch mal mit „Negativ multiplizieren“, danach erkläre ich direkt, woher die Unterschiede kommen, falls es euch noch nicht selbst aufgefallen ist.

Negativ multiplizieren:

A = 0
B = 0
C = 1 – (1 – A) * (1 – B) = 1 – (1 – 0) * (1 – 0) = 0

A = 0.5
B = 0
C = 1 – (1 – A) * (1 – B) = 1 – (1 – 0.5) * (1 – 0) = 0.5

A = 1
B = 0
C = 1 – (1 – A) * (1 – B) = 1 – (1 – 1) * (1 – 0) = 1

Ineinanderkopieren:

A = 0
B = 0 ( <= 0.5)
C = 2 * A * B = 2 * 0 * 0 = 0

A = 0.5
B = 0 ( <= 0.5)
C = 2 * A * B = 2 * 0.5 * 0 = 0

A = 1
B = 0 ( <= 0.5)
C = 2 * A * B = 2 * 1 * 0 = 0

Spätestens jetzt sollte eigentlich klar sein, dass das „Problem“ daran liegt, dass beim Modus „Ineinanderkopieren“ die Hintergrundebene entscheidend dafür ist, ob die Farbe multipliziert oder negativ multipliziert wird.

Ein anderer Modus, welcher daher eher die Bezeichnung der Mischung aus „Multiplizieren“ und „Negativ multiplizieren“ verdient hat (auch wenn die Bezeichnung de facto korrekt ist, ist sie doch sehr irreführend, da sie nicht die Vorder-, sondern die Hintergrundebene als Referenz benutzt), ist der Modus „Hartes Licht“, den ich hier auch noch kurz ansprechen möchte, da er „Ineinanderkopieren“ bis auf einen winzigen Unterschied gleicht.

Beim Modus „Hartes Licht“ gelten die selben Formeln, wie für den Modus „Ineinanderkopieren“. Nur dieses Mal ist nicht die Bedingung B <= 0.5, sondern A <= 0.5.
Was für Auswirkungen das auf unsere Tonwerte hat, möchte ich an den oberen Rechenbeispielen demonstrieren:

Multiplizieren:

A = 0
B = 0
C = A * B = 0 * 0 = 0

A = 0
B = 0.5
C = A * B = 0 * 0.5 = 0

A = 0
B = 1
C = A * B = 0 * 1 = 0

Hartes Licht:

A = 0 ( <= 0.5)
B = 0
C = 2 * A * B = 2 * 0 * 0 = 0

A = 0 ( <= 0.5)
B = 0.5
C = 2 * A * B = 2 * 0 * 0.5 = 0

A = 0 ( <= 0.5)
B = 1
C = 2 * A * B = 2 * 0 * 1 = 0

Wie ihr sehen könnt, verhält es sich jetzt so, wie wenn das Bild mit der Hälfte des Tonwerts (bei „Negativ multiplizieren“: Tonwert / 2 + 128) verrechnet wird.

Die Modi sind übrigens daher auch kommutativ, will sagen, Ineinanderkopieren(A, B) ist das gleiche wie Hartes Licht(B, A).

PS: Wer sich fragt, warum beim „Ineinanderkopieren“ mit Weiß das Ergebnis einer Selbstüberlagerung mittels „Linear abwedeln“ entspricht, das liegt daran, dass „Linear abwedeln“ nichts anderes ist, als
C = A + B
oder in diesem Fall dann
C = B + B,
(da wir ja die Hintergrundebene mit sich selbst überblenden) während wir beim „Ineinanderkopieren“ entweder haben

B > 0.5: C = 1 – 2 * (1 – A) * (1 – B)
B <= 0.5: C = 2 * A * B

also für ein A von 1 und ein unbekanntes B:

B > 0.5: C = 1 – 2 * (1 – 1) * (1 – B) = 1
B <= 0.5: C = 2 * 1 * B = 2 * B

Während wir beim „Linear abwedeln“ folgende Formel errechnet hatten: C = B + B, was nichts anderes ist, als 2 * B.
Bei Werten > 0.5 hingegen rechnet sich 0.5 + 0.5 = 1, daher passt auch das.

Beim „Linear nachbelichten“ verhält es sich ganz ähnlich, wir haben hier die Formel:
C = A + B – 1
oder auch
C = B + B – 1
da wir wieder die Hintergrundebene mit sich selbst verrechnen.

Beim „Ineinanderkopieren“ dagegen haben wir:

B > 0.5: C = 1 – 2 * (1 – A) * (1 – B)
B <= 0.5: C = 2 * A * B

also für ein A von 0 und ein unbekanntes B:

B >  0.5: C = 1 – 2 * (1 – 0) * (1 – B) = 2 * B – 1
B <= 0.5: C = 2 * 0 * B = 0

Und daher können wir wieder sehen, wenn B <= 0.5 haben wir 0.5 + 0.5 – 1 = 0, dagegen bei B > 0.5 haben wir wieder einfach B + B – 1 oder auch 2 * B – 1.

Nehmen wir dagegen einen anderen Tonwert, als 1 bzw. 0 zum Verrechnen, geht die Rechnung natürlich nicht mehr auf:

C = B + B – 1
B > 0.5: C = 1 – 2 * (1 – 0.5) * (1 – B) = B

oder auch

C = B + B
B <= 0.5: C = 2 * 0.75 * B = 1.5B.

Es war also mehr oder weniger Zufall, dass die Überlagerung mit Weiß/Schwarz genau das Ergebnis von einer Selbstüberlagerung mit „Linear abwedeln/nachbelichten“ gebracht hat :-).
Daher ist es immer wichtig, nicht nur ein Experiment zu machen, sondern mehrere Bedingungen zu berücksichtigen, denn sonst könnte man schnell auf die Idee kommen, „Ineinanderkopieren“ sei eigentlich eine Mischung aus „Linear abwedeln/nachbelichten“ und zu dem Modus, der diese beiden kombiniert, kommen wir noch…

Ich hoffe mal, der heutige Artikel hat euch nicht zu sehr erschlagen, mir ist bewusst, dass eine ganze Menge Mathe darin vorkam :-).
Während des Schreibens ist mir einfach immer mehr eingefallen und es hat einen riesigen Spaß gemacht, hier alles zu berechnen und aufzuschreiben!

Advertisements
  1. 21. Oktober 2011 um 18:07

    Auf Grund der besseren Lesbarkeit werde ich übrigens in Zukunft versuchen, so viele der Formeln, die ich nutze, wie möglich in LaTeX zu setzen.
    Da ich allerdings damit bisher noch sehr wenig gearbeitet habe, kann ich euch nicht garantieren, dass ich das auch immer schaffe, zumal auch die Frage ist, ob es den Aufwand und die längeren Ladezeiten wert ist.
    Bei dem nächsten Artikel, der so viel Mathematik enthält, werde ich es einfach mal ausprobieren und hoffe dann auf euer Feedback :-).

    LG,
    Jonas

  1. No trackbacks yet.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s