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:
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:
Gibt es eine Möglichkeit, einen RGB-Wert von allen Pixeln in einem Bild zu subtrahieren?
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.
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.
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.
joojaa