Hallo Herr Ludwig,
hallo Liste,
anbei einige Visual-Basic-Snipplets, mit denen ich DeltaEs (CIE bzw.
94) berechne.
Evtl. notwendige Variablen-Deklarationen sollten vollständig sein; bei
Nachfragen bitte melden.
Die nachstehenden Code-Beispiele benutze ich in diversen Applikationen;
kompiliert unter W2k bzw. XP.
Have fun ...
************************************************************************
*******
Type FarbMessung
L_LAA As Single
a_LAA As Single
b_LAA As Single
L_D65 As Single
a_D65 As Single
b_D65 As Single
L_D50 As Single
a_D50 As Single
b_D50 As Single
X_D50 As Single
Y_D50 As Single
Z_D50 As Single
End Type
Public Enum spLight
LICHT_A = 0
LICHT_C = 1
LICHT_D65 = 2
LICHT_D50 = 3
LICHT_D55 = 4
End Enum
Function DeltaE_CIE(Sample1 As FarbMessung, Sample2 As FarbMessung,
illumination As spLight) As Double
Dim Delta_L As Double
Dim Delta_a As Double
Dim Delta_b As Double
Select Case illumination
Case LICHT_D65
Delta_L = Sample1.L_D65 - Sample2.L_D65
Delta_a = Sample1.a_D65 - Sample2.a_D65
Delta_b = Sample1.b_D65 - Sample2.b_D65
Case LICHT_A
Delta_L = Sample1.L_LAA - Sample2.L_LAA
Delta_a = Sample1.a_LAA - Sample2.a_LAA
Delta_b = Sample1.b_LAA - Sample2.b_LAA
Case Else
Delta_L = Sample1.L_D50 - Sample2.L_D50
Delta_a = Sample1.a_D50 - Sample2.a_D50
Delta_b = Sample1.b_D50 - Sample2.b_D50
End Select
DeltaE_CIE = Sqr(Delta_L ^ 2 + Delta_a ^ 2 + Delta_b ^ 2)
End Function
Function DeltaGrey(Sample As FarbMessung, illumination As spLight) As
Double
Dim Delta_a As Double
Dim Delta_b As Double
Select Case illumination
Case LICHT_D65
Delta_a = Sample.a_D65
Delta_b = Sample.b_D65
Case LICHT_A
Delta_a = Sample.a_LAA
Delta_b = Sample.b_LAA
Case Else
Delta_a = Sample.a_D50
Delta_b = Sample.b_D50
End Select
DeltaGrey = Sqr(Delta_a ^ 2 + Delta_b ^ 2)
End Function
Function DeltaE_94(Sample1 As FarbMessung, Sample2 As FarbMessung,
illumination As spLight) As Double
Dim c1 As Double
Dim c2 As Double
Dim de As Double
Dim dl As Double
Dim dc As Double
Dim dh As Double
Dim sl As Double
Dim sc As Double
Dim sh As Double
Dim kl As Double
Dim kc As Double
Dim kh As Double
sl = 1
kl = 1
kc = 1
kh = 1
Select Case illumination
Case LICHT_D65
c1 = DeltaGrey(Sample1, LICHT_D65)
c2 = DeltaGrey(Sample2, LICHT_D65)
de = DeltaE_CIE(Sample1, Sample2, LICHT_D65)
dl = (Sample2.L_D65 - Sample1.L_D65)
dc = c2 - c1
Case LICHT_A
c1 = DeltaGrey(Sample1, LICHT_A)
c2 = DeltaGrey(Sample2, LICHT_A)
de = DeltaE_CIE(Sample1, Sample2, LICHT_A)
dl = (Sample2.L_LAA - Sample1.L_LAA)
dc = c2 - c1
Case Else
c1 = DeltaGrey(Sample1, LICHT_D50)
c2 = DeltaGrey(Sample2, LICHT_D50)
de = DeltaE_CIE(Sample1, Sample2, LICHT_D50)
dl = (Sample2.L_D50 - Sample1.L_D50)
dc = c2 - c1
End Select
If de ^ 2 > (dl ^ 2 + dc ^ 2) Then
dh = Sqr(de ^ 2 - dl ^ 2 - dc ^ 2)
Else
dh = 0
End If
sc = 1 + 0.045 * c1
sh = 1 + 0.015 * c1
DeltaE_94 = Sqr((dl / (kl * sl)) ^ 2 + (dc / (kc * sc)) ^ 2 + (dh /
(kh * sh)) ^ 2)
End Function
************************************************************************
*******
freundliche Grüße
aus dem Mönchengladbacher Farbraum
Heinz-Jürgen Groß
DeltaE. Image Consulting
Am Brückensteg 70
41065 Mönchengladbach
Tel.: 0 21 61 - 65 04 77
Fax: 0 21 61 - 65 04 96
Mobil: 0 17 77 - 65 04 95
e-mail: hjg(a)DeltaE-IC.de
www:
www.DeltaE-IC.de