• In eigener Sache!

    Liebe Mitglieder, liebe Besucher und Gäste
    ich weiß, es ist ein leidiges Thema, aber ich muss es ansprechen: Werbung, Werbeblocker und Finanzierung des Forums.
    Bitte hier weiterlesen ...

  • Neuer Partner: AkkuShop.de
    Akkus, Ladegeräte und mehr (nicht nur) für Digitalkameras und Drohnen
  • Nicht erreichbare Adressen im Benutzerkonto
    Wir bekommen zurzeit eine große Anzahl an E-Mails, die das System zum Beispiel als Benachrichtigungen an Nutzer verschickt,
    als unzustellbar zurück, weil z.B. die Adressen nicht erreichbar sind oder das Postfach gar nicht existiert.
    Stellt doch bitte sicher, dass die Benachrichtigungen, die ihr vom System erwartet, auch zugestellt werden können.
    Nicht erreichbare E-Mail-Adressen sind dazu wenig hilfreich.
    Danke!
  • Stimmt ab über die Sieger des DSLR-Forum Fotowettbewerbs April 2025.
    Thema: "Plastik (Kunststoff)"

    Nur noch bis zum 30.04.2025 23:59!
    Jeder darf abstimmen!
    Zur Abstimmung und Bewertung hier lang
  • Neuer Gutscheincode unseres Partners Schutzfolien24:
    DSLR-Forum2025
    Dauerhaft 10% Rabatt auf alle Displayschutzfolien und Schutzgläser der Eigenmarken
    "Upscreen", "Screenleaf", BROTECT" und "Savvies".
    Der Code ist für alle Geräteklassen gültig.
  • Unlauterer Verkäufer wieder unterwegs!

    Liebe Mitglieder,
    Florian Franzek, der seit Jahren mit verschiedensten Usernamen in allen möglichen Foren und auf etlichen Verkaufsplattformen auftritt,
    ist wieder hier im Forum und versucht, ehrliche Käufer zu betrügen.
    Wir können wenig tun, außer bei Bekanntwerden einer weiteren Registrierung eines Accounts für seine Machenschaften, diese umgehend zu sperren.
    Ich empfehle, bei Kontakt umgehend die Polizei einzuschalten.

WERBUNG

Helligkeit/Kontrast von Farben (RGB) berechnen ...

Also:

R,G,B = r,g,b/255 -->

L = 100 * DritteWurzel(0,22*R + 0,72*G + 0,07*B)

Sollten die drei Faktoren nicht = 1 ergeben in ihrer Summe? -
Bei |L2 - L1| >= 2 beginnen wir Kontrastunterschiede festzustellen/zu erkennen.
Und was ist nun der Unterschied zwischen H und L, abgesehen von der Justierung auf 0;1?

H = Wurzel(0.299 * r^2 + 0.587 * g^2 + 0.114 * b^2)

LG - Martin

PS: Genaue Werte:
0.2126729
0.7151522
0.0721750
 
Zuletzt bearbeitet:
Und was ist nun der Unterschied zwischen H und L, abgesehen von der Justierung auf 0;1?

Mit L kann man wahrgenommene Unterschiede der "Helligkeit" messen/berechnen. Falls die Erfinder von CIE Lab sauber gearbeitet haben, nimmt L damit eine Sonderstellung ein.

Mit H kann man (wie oben felix_hh so schön schrieb) schöne Graustufenbilder erstellen. Es gibt sicher noch ganz andere Möglichkeiten zur Erzeugung "schöner" Graustufenbilder. H ist irgendwie beliebig, willkürlich.
 
Zwischen H und L sind halt beachtliche Unterschiede. Ja - wenn Hochkomplexes in etwas Einfaches transformiert werden will :)

DANKE Euch!

dE = Wurzel((L1-L2)^2 + (a1-a2)^2 + (b1-b2)^2)
ist also der Farbunterschied (LAB).
Mit Alleinberücksichtigung von L ist's dann |L1-L2|.

http://www.cielab.de/delta_e.shtml

L = ca. 100 * DritteWurzel(0.22*R + 0.72*G + 0.07*B)
mit R,G,B = r,g,b/255 ...
Bei |L1 - L2| > 2 werden Unterschiede erkannt.
Gilt dies auch allgemein für dE > 2?
Und ist L für das Graukarten-Grau (#118,118,118) = ca. 77?
Für H dann = 118, für 0;1-Eichung = 46%?

Werde ich einmal testen :)

Lieben Dank - Martin

PS: ehrlich gesagt: es irritiert mich nun, dass in der Formel für L die r,g,b-Werte wieder ohne Quadrat vorkommen ... Die Vektor-Idee ist da wieder dahin :) Komplex - verwirrt, wie prophezeit ;)

...


...
 
Zuletzt bearbeitet:
Wenn du CIELAB aus RGB berechnen willst, dann musst du wie erwähnt erst mal ein definiertes sRGB haben. Oder ein AdobeRGB oder sonst einen definierten Farbraum. Aber gehen wir mal davon aus, dass du sRGB hast, also einen definierten Farbraum. Das muss man zunächst in lineare Werte umrechnen und anschließend in XYZ wandeln, da sRGB eben abschnittsweise definiert ist.

hier: https://www.w3.org/Graphics/Color/sRGB ist unter "Colorimetric definitions and digital encodings" der genaue Umrechenweg im Detail, inklusive Linearisierung.

D.h. die Farbwerte werden in den Bereich [0,1] gebracht und dann wird die sRGB-Kurve zurückgerechnet. Ganz am Ende steht hier dann sowas:

Code:
X          R'
Y  = [M] * G'
Z           B'

wobei M eine Transformationsmatrix ist und R'G'B' die linearisierten und zwischen 0 und 1 normierten Farbwerte in einem Vektor sind. Für M gilt hier für sRGB dann:

Code:
       0.4124564  0.3575761  0.1804375
M =    0.2126729  0.7151522  0.0721750
       0.0193339  0.1191920  0.9503041

Wir brauchen hier aber nur die Y- Werte, das vereinfacht den weiteren Rechenweg zu

Y = 0.2126729 * R' + 0.7151522 * G' + 0.0721750 * B'

Aus diesem Y kann man dann die Helligkeit L des Farbvektors berechnen.

Dafür muss man erst mal Y normieren:
Y' = Y/100.

Für Y' > 0,008526 gilt dann:
L = 116 * y' ^(1/3) - 16

Und für y' <= 0,008526 gilt:
L = (16 + 903,3 * Y') / 116

Damit hat man dann zumindest die Helligkeitswerte nach CIELab.

Hier: http://www.brucelindbloom.com/index.html?Equations.html finden sich die Formeln für Farbumrechnungen.
Matritzen für andere Farbräume: http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html

und hier:http://www.easyrgb.com/?X=MATH findet man auch Codebeispiele, wenn man das z.B. per Software umsetzen möchte.
 
Approximation …

Ich habe einmal mit Photoshop herumgespielt und die Werte 0,0,b sowie 0,g,0 und r,0,0 angeschaut und dann aus den Lab-Daten das L herausgeschrieben. Mit dem heuristischen Ansatz «L = a * [r,g,b]^x» fand ich dann für verschiedene r, g und b mit den dazugehörigen L das a und das x heraus – es schwankt natürlich und ist nie konstant; aber nach vager Interpolation erhielt ich in etwa folgende Zusammenhänge:

Lr = ca. r^1.15/10.9
Lg = ca. g^0.95/2.2
Lb = ca. b^1.6/236

Für L(res), was dem L aus Lab entspricht, erhielt ich dann recht gute Werte mit folgender Formel:

L(res) = ca. Wurzel(Lr^2 + Lg^2 + Lb^2)

Beispiel: r=150, g=75, b=200
Lr = 29.18
Lg = 27.47
Lb = 20.36

L(res) = 45

L in Photoshop zeigt L = 46 an …

Vielleicht könnte man ja die Parameter noch justieren und erhielte dann noch bessere Werte?! Für 255,255,255 ergibt meine Formel dann 107 … wo 100 eigentlich das Maximum sein sollte … also halt doch 7% daneben :) Aber so für einen groben Überschlag? …
 
Also:

L = ca. Wurzel(r^2.3/118 + g^1.9/4.84 + b^3.2/55'700)

Das Komplexere will ich aber noch lesen!
Ob ich ohne ein konkretes Beispiel zum Ziel finde, kann ich noch nicht abschätzen .....

...
 
Approximation …

Ich habe einmal mit Photoshop herumgespielt und die Werte 0,0,b sowie 0,g,0 und r,0,0 angeschaut und dann aus den Lab-Daten das L herausgeschrieben.

Für solche Zwecke gibts in der Argyll-Suite übrigens das nette Kommandozeilentool icclu:

https://www.argyllcms.com/doc/icclu.html

Wenn du z.B.

icclu -ff -s 255 -pl sRGB.icm

eingibst, kannst du in den folgenden Zeilen RGB-Werte eingeben, die dann in Lab umgesetzt werden:

23 244 12
23.000000 244.000000 12.000000 [RGB] -> MatrixFwd -> 84.520457 -75.707722 77.544463 [Lab]


Die dahinterliegende Logik kannst du Graeme Gills Quelltext entnehmen.
 
Für solche Zwecke gibts in der Argyll-Suite übrigens das nette Kommandozeilentool icclu:

https://www.argyllcms.com/doc/icclu.html

Wenn du z.B.

icclu -ff -s 255 -pl sRGB.icm
3
eingibst, kannst du in den folgenden Zeilen RGB-Werte eingeben, die dann in Lab umgesetzt werden:

23 244 12
23.000000 244.000000 12.000000 [RGB] -> MatrixFwd -> 84.520457 -75.707722 77.544463 [Lab]


Die dahinterliegende Logik kannst du Graeme Gills Quelltext entnehmen.

Danke! Nur - die Programmiersprache verstehe ich leider kaum.
Meine Formel ergäbe hier 84,32 statt 84.520457. Wäre die dahinterliegende Logik denn eine einfache, und - eine andere als jene, die felix_hh vorschlug?

Liebe Grüße - Martin

...
 
WERBUNG
Zurück
Oben Unten