Hallo,
wir kämpfen hier momentan mit einem Minolta CM-700D.
Wenn die Doku dazu von einem anständigen Japaner gemacht wurde, müsste der sich inzwischen ein langes Messen in den Bauch gerammt haben, aber Schwamm drüber.
Jedenfalls haben wir hier ein dickes Handbuch, in dem die Kommunikation zwischen PC und dem CM-700D beschrieben ist. Warum das als "confidential" markiert ist, ist mir allerdings unverständlich.
Das Ding ist ein Farbspektrometer und liefert offenbar 32 Spektrallinien im sichtbaren Bereich. Die entsprechenden Werte können wir auch auslesen, soweit kein Problem.
Aber der Kunde will L*a*b* haben, was das Gerät auf dem internen LCD-Display auch anzeigt, was man aber anscheinend nicht auslesen kann, bzw. was in der vorliegenden Doku nicht beschrieben ist. Vieleicht gibt es ja noch eine Top-Secret Doku ;-)
Wir haben uns inzwischen die Kommunikation zwischen der Minolta Demo-Software und dem Gerät per Com-Port-Sniffer angesehen (die Kommunikation läuft über Bluetooth). Demnach bekommt auch die Demo-Software von Minolta nur die Spektren, aber keine fertigen L*a*b* Werte.
Jetzt sollte es aber je grundsätzlich kein Problem sein, das gemessene Spektrum in RGB Werte und dann in L*a*b* umzurechnen. RGB -> L*a*b* ist kein Problem, das haben wir bereits früher gemacht.
Was ich jetzt benötige sind die Filterkurven für RGB, damit ich aus dem Spektrum die RGB-Werte berechnen kann:
also etwa so: (Pseudo-Pascal)
var RR,GG,BB,W : array[0..31] of extended; R,G,B : extended;
// RR,GG,BB : Filterkurven, W: Messwerte bzw. Spektralanteile [0..31]
R := 0; G := 0; B := 0;
for i := 0 to 31 do begin R := R + RR[i] * W[i]; G := G + GG[i] * W[i]; B := B + BB[i] * W[i]; end;
Hat jemand eine gute Quelle für die Filterfunktionen, aus denen ich meine Arrays RR,GG und BB bestimmen kann?
Gruß
Stefan