sicher kann man einer Farbe eine Temperatur eines Schwarzen Körpers zuordnen, aber solche Falschfarbendarstellungen sind immer eine willkürliche Zuordnung einer hier gewissen Temperatur zu einer frei gewählten Farbe.
gibt es da eine Formel um RGB Werte abhaengig von einer
Temperatur oder auch einfach von Werten zwischen 0 und 1 eine
Farbe zu bekommen?
Ja, beliebig viele.
Zwei Ansätze, die zu sowas wie dem dargestellten Bild führen könnten wären
a) nicht RGB nehmen sondern (Farbton, Sättigung und Helligkeit)
und den wert x aus [0,1) abbilden auf (+/- mod(x*256 + a, 256), 255, x*256) d.h.
Sättigung ist immer 100%, der Farbton ändert sich einmal durch den Regenbogen durch, womit er anfängt läßt sich mit a und die Richtung durch das Vorzeichen bestimmen.
b) du zerlegst deinen Temperaturbereich in Intervalle und machst für jedes Intervall eine lineare Abbildung, so dass auf einanderfolgende Intervalle an den ‚Berührungsstellen‘ die gleiche Farbe haben.
Temperatur oder auch einfach von Werten zwischen 0 und 1 eine
Farbe zu bekommen?
Natürlich kannst Du das mit RGB tun - mit den bereits genannten Einschränkungen. Am einfachsten wäre die lineare Abbildung des Temperaturbereiches von 0 bis 1 auf die entsprechenden Farbwerte :
0 => 0
1 => 16777215
mit der linearen Funktion f(x)=1/16777215 x (für x0).
Dann ist weiß heiß und schwarz karz kalt. Du müsstest nur Deine Endpunkte der Skala definieren …
Es käme auf den Anwendungszweck an : Wenn die Temperaturverteilung in Deinem Modell nicht linear ist, hat eine lineare Verteilung der Farbwerte auch wenig Sinn, meine ich.
Außerdem hat die RGB-Skala einen wesentlichen Nachteil für solche Darstellungen : RGB(100,100,100)=20.478.081 ist „genauso“ grau wie RGB(105,105,105)=27.386.346. In Deinem Modell liegen da aber sieben Mio. Stufen dazwischen …
gibt es da eine Formel um RGB Werte abhaengig von einer
Temperatur oder auch einfach von Werten zwischen 0 und 1 eine
Farbe zu bekommen?
Du musst Dich für eine bestimmte Palette entscheiden. Für Thremografie üblich sind Glühfarben (Eisenpalette - wie in Deinem Beispiel), Regenbogen, Graustufen sowie einige spezielle kontrastverstärkende Paletten.
Die Paletten bedienen sich nicht des ges. RGB-Farbraumes.
Der gewählten Palette wird der Temperaturraum des Bildes zugeordnet. Da gibt es auch mehrere Algorithmen - von einfacher linearen Zuordnung zwischen min. und max. Temperatur über Histogrammverteilungen zu gänzlich nichtlinearen Abbildungen, die bestimmte Funktionen erfüllen müssen.
Frage ist, wo das Quellbild herkommt und was mit dem Bild gemacht werden soll.
Falls das Bild aus einer Thermografiekamera kommt, kann man sich das meiste sparen, da die meisten Kameras über mehrere Paletten und manchmal auch über mehrere Modi der Temperaturzuordnung verfügen.
Eine feste Zuodrnung Temperatu-Farbe ist nicht sinnvoll, da in jedem Bild andere min. und max.-Temperaturen herrschen und man auch andere Temperaturbereiche hervorheben möchte.
Die Wertzuordnung macht man dann durch Aufteilen der Werte:
Im Farbverlauf kommen folgende Werte vor:
5 * 255 (NICHT 256, weil der End- und Anfangszustand jeder Sequenz einen gemeinsamen Punk haben) + 1, also 1276 Werte.
Diese 1276 Werte teilst du auf deine vorkommenden Werte auf.
nachdem ich 3 verschiedene HSV -> RGB Programmieransaetze getestet hatte und irgendwie immer nur murks rauskam hab ich nun deinen ansatz gewaehlt und das klappt super!