Hallo Herr Bickeböller,
ich habe eine mathematische Frage.
Es gibt ja bekanntlich Matrix als auch LUT Profile und Kombis daraus.
Diese beschreiben eindeutig den Farbraum.
Wie wird dieser interpoliert?
Handelt es sich um festgeschriebene Interpolationsalgorhitmen?
Wenn ja, wie sehen diese aus.
So weit mir bekannt, sind die Interpolationen nicht durch Vorgaben
der ICC festgeschrieben.
Es gibt mehrere Möglichkeiten wie eine solche Interpol. geschehen
kann, welche sich insbesondere bei mehrdim. Räumen bezüglich des
Ergebnisses und vor allem in Bezug auf den Rechenaufwand unterscheiden.
Allgemein kann gesagt werden, dass linear interpoliert wird, und nicht
etwa mit Spline, bikubisch oder sonstwie nichtlinear.
Beispiel im eindim. Fall: Sie haben eine Funktion von x nach f(x)
und kennen von dieser Funktion deren Wert an drei Stellen,
also fuer die drei x Werte x1, x2 und x3 gibt sind die
werte f1, f2 und f3 bekannt. Wenn Sie nun den f Wert fuer einen
x wert zwischen x1 und x2 oder zwischen x2 und x3 berechnen wollen,
dann liegt dieser genau auf der Geraden zwischen den Punkten
(x1,f1) und (x2,f2) (bzw (x2,f2) und (x3,f3). Die resultierende
Funktion hat einen Knick (aber keinen Sprung) bei (x2,f2).
Das war der Fall eindim. nach eindim. (z.B. eine Graustufe in eine
andere Graustufe umrechnen).
Wenn Sie nun eindim. nach mehrdim. rechnen wollen, haben sie fast
den gleichen fall wie oben, aber nicht mehr nur eine Funktion f
sondern gleich mehrere z.B. C(x), M(x), Y(x) und K(x) und Ihnen
sind die Punkt C1, C2, C3, M1, M2, M3... jeweils an den Stellen
x1, x2 und x3 bekannt.
Der Fall mehrdim. nach mehrdim (z.B. RGB nach CMYK) ist komplizierter:
man macht hierbei für z.B. vier Ausgangsgroessen ( bei CMYK) die vier
Interpolationen von RGB nach C, von RGB nach M, RGB nach Y und RGB nach K.
Schwierig sind aber diese einzelnen Interpolationen:
Beschränken wir uns zunächst auf den Fall zweidim. nach eindim.
Sie kennen also eine Funktion f(x,y) an mehreren Stellen, die alle in
einem regelmässigen quadratischen Gitter liegen also den Wert von f
an den Stellen (x1,y1), (x1,y2), (x1,y3), (x2,y1), (x2,y2), (x2,y3),
(x3,y1), (x3,y2), (x3,y3). Man kann sich die Funktion f wie ein
Gebirge (Relief) vorstellen und man kennt die Höhe des Gebirges
nur an Gitterstellen eines Koordinatengitters.
Dieses Gitter wird nun in Zellen zerlegt (verlgleichbar zu den
Intervallen von oben): also 1. Zelle ist die mit den Ecken
bei (x1,y1), (x1,y2), (x2,y1) und (x2,y2).
Es gibt nun zwei Möglichkeiten wie vorgegangen werden kann:
bilineare Interpolation, oder lineare Interpol. in einem der beiden
Dreiecke in welche die quadratische Zelle zerlegt werden kann.
Bei der bilinearen interpol. werden alle vier Eckpunkte berücksichtigt,
man erhält innerhalb des quadratischen Zelle einen glatten Verlauf
ohne Knicke und Kanten. Man kann aber auch die quadratische Zelle in
zwei Dreiecke zerlegen und die Funktion direkt linear interpolieren,
d.h. der Funktionsverlauf innerhalb eines solchen Dreiecks ist eine
ebene Fläche und nicht eine "geschwungene" Ebene (ähnlich dem Dach
des münchner Olympiastadions) wie bei der bilinearen Interpol.
Die Dreieckszerlegung ist aber nicht eindeutig, und je nach
Zerlegung erhält man unterschiedliche Ergebnisse: Im einen Fall zieht
man eine Gerade zwischen den Punkten (x1,y1) und (x2,y2) oder
durch (x1,y2) und (x2,y1). Die lineare Interpolation hat aber genau
entlang dieser Geraden einen Knick!.
Im dreidim. Fall wird's noch komplizierter, da gibt's einerseits die
Möglichkeit der trilinearen Interpolation zwischen allen acht
Würfelecken einer Elementarzelle und der Zerlegung einer solchen
Zelle in 6 sog. Tetraeder in welchen zwischen 4 Eckpunkten interpol.
wird. Auch diese Tetraederzerlegung ist, analog zur obigen
Dreieckszerlegung, nicht eindeutig und hat natuerlich Einfluss auf das
Ergebnis, ist aber erheblich schneller zu berechnen. Im vierdim. Fall
ist der Performance Unterschied noch extremer und deshalb verwenden
die meisten ColorManagement Engines (z.B. die in Windows, oder die
von Kodak) die Zerlegung in Dreiecke/ Tetraeder / 4D-5-EckSimplices.
Weiterhin interessiert mich, wie aus einem
n-dimensionalen Körper
in einen n+1 Körper (also RGB->CMYK)
siehe oben:
man hat die 4 Funktionen
RGB -> C
RGB -> M
RGB -> Y
RGB -> K
umgerechnet wird. Auf
color.org habe ich nichts dazu
gefunden.
Ist diese Mathematik trivial oder für einen selbst begabten
Nicht-Mathematiker völlig abgehoben?
eigentlich nicht, aber in reinem Text etwas schwierig darzustellen,
mit Händen und Füssen und einem Blatt Papier wär's einfacher
;-)
hab jetzt erst mal Hunger
Mahlzeit
Edgar Loser