Wie kann ich zwei Farben entmischen/entmischen?

Ich "reverse engineering" ein Grafikpaket basierend auf gerasterten Bildern, um das Grafikpaket als geschichtete Komponenten neu zu erstellen.

Ich habe eine Situation, in der ich zwei Elemente mit jeweils einem gewissen Maß an Alpha-Transparenz habe, die übereinander geschichtet wurden. Ich kenne die Farbe des Hintergrundelements sowie die resultierende Farbe. Wie finde ich die ursprüngliche Farbe und Transparenz des Vordergrundelements?

Besser noch, wie kann ich diese beiden Elemente so trennen, dass sie, wenn ich sie übereinander baue, wie das Original aussehen?

Gibt es eine Möglichkeit, dies in Adobe Photoshop oder vielleicht einem Online-Dienstprogramm zu tun?

Hintergrund Violett: rgba(81,16,110,.88)
Resultierendes Violett: rgba(48,15,65,.95)
Vordergrund Violett: ????

Hier ist ein Beispielbild als Referenz:Gerasterte Elemente

UPDATE Ich verstehe die grundlegende Mathematik hinter der manuellen Berechnung, wie hier beschrieben , aber dies funktioniert nicht wirklich gut für komplexere Alpha-Dekompositionen. Wie in diesem Beispiel:Gerasterter Farbverlauf

Gibt es eine Möglichkeit, einen RGB-Wert von allen Pixeln in einem Bild zu subtrahieren?

Bitte beachten Sie, dass die Bereiche, in denen die Transparenz zu 100 % undurchsichtig ist, nicht gelöst werden können.

Antworten (1)

Man kann dieses Bild leicht zurückentwickeln. Das Transparenzraster einer Bildschirmaufnahme macht es etwas schwieriger für mich zu überprüfen, aber immer noch kein großes Problem, das Sie nur selbst berechnen müssen. Alpha-Blending ist:

total_Alpha = top_alpha + bottom_alpha(1-top_alpha)

also erhalten wir in diesem Fall:

0.95 = x + .88 (1-x) =>
0.95 = x + .88 - .88x =>
0.95-0.88 = 0.12x =>
x = 0.07/0.12 ≈ .58

Nun, das ist richtig, wenn Sie richtig gemessen haben, aber ich habe einige Zweifel daran, aber da Sie es auf einem Transparenzraster zeigen, mache ich mir nicht die Mühe, meine Berechnung zu überprüfen.

total_RGB = (top_rgb*top_alpha + bottom_rgb*bottom_alpha(1-top_alpha))/total_alpha

Wo es bequem ist, mit Float-Farben zu rechnen, also colorshannel/255 in Ihrem Fall. Diese Berechnung überlasse ich Ihnen.

Berechnungen

Photoshop kann Berechnungen auf einzelnen Kanälen durchführen. Es ist aus mehreren Gründen nur ein bisschen chaotisch. Erstens kann Photoshop keine negativen Werte verarbeiten. Sie müssten also die Werte entsprechend versetzen, das funktioniert gut, wenn Sie die Gleitkommapräzision einschalten. Ohne Fließkomma werden sonst Werte über max zusätzlich zu Werten unter Null abgeschnitten, seien Sie vorsichtig. Zweitens ist die GUI chaotisch und Sie können Ihre Operationen nicht einfach eingeben.

Grundlegende Kanalberechnungen sind unter Bild → Berechnungen verfügbar , damit können Sie Berechnungen für jeweils einen Kanal durchführen. Mit Berechnungen können Sie alle grundlegenden mathematischen Operationen durchführen, addieren, subtrahieren, multiplizieren und dividieren für alle Pixel auf einmal für einen Kanal. Mit der Einschränkung im Hinterkopf sollte dies machbar sein.

Geben Sie hier die Bildbeschreibung ein

Bild 1 : Berechnungen.

Tipp : Zeichnen Sie Ihre Berechnungen in einer Aktion auf. Wenn Sie es vermasseln, können Sie leicht dorthin zurückkehren, wo Sie aufgehört haben.

Modi der zweiten Ebene Multiplizieren, Addieren, Subtrahieren und Dividieren existieren. Sie funktionieren ziemlich gut auf Farbkanälen, wenn Sie kein Alpha in den Bildern haben. Auch hier sind keine negativen Werte verfügbar, also stellen Sie sicher, dass Sie berechnen, damit Ihre Werte nicht abgeschnitten werden.

Beispiele dafür, wie ich fast das tue, was Sie verlangen, finden Sie in folgendem Beitrag:

Hinweis : All dies gesagt, würde ich immer noch vorschlagen, dass Sie etwas wie Numpy, Matlab, Mathematica oder sogar ImageMagik für den Job verwenden, der VIEL schneller zu entwickeln und zu verwenden ist. Aus diesem Grund werde ich die Berechnungen nicht für Sie durchführen.

Hinweis 2 : Einige Fälle können nicht gelöst werden, da es keine Möglichkeit gibt, Alpha-Beitrag und Farbe zu trennen. Vor allem, wenn die Summe der Alpha-Ebenen 100 % beträgt, können Sie den Alpha-Wert nicht ableiten. Und so können Sie nicht wissen, was die Farbe ist, ohne zu raten.

Dies ist im Wesentlichen das, was hier bereits auf Wikipedia aufgeführt ist ( en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending ). Kennen Sie eine Möglichkeit, dies automatisch in Photoshop oder einem anderen Dienstprogramm zu tun? Die von Ihnen erwähnte manuelle Technik funktioniert für grundlegende Elemente, funktioniert jedoch nicht wirklich gut für Verlaufselemente. Ich suche im Grunde nach einer Möglichkeit, einen bestimmten RGBA von allen Pixeln zu subtrahieren.
Sie können Berechnungen in Photoshop durchführen. aber es ist ein bisschen verworren, ich schreibe lieber keine Schritt-für-Schritt-Anleitung dafür, da es ein paar Stunden dauert. Es wäre weniger Arbeit, dafür eine neue Software zu schreiben. @BigMacAttack ja Alpha Blending ist bekanntes Zeug. Aber ich denke, ich habe diese Anleitung schon einmal geschrieben, wenn ich krank bin.