Temperaturskala

Hallo, ich moechte Temperaturwerte grafisch darstellen mittels einer Skala wie zB hier:
http://www.eeginfo.ch/typo3temp/pics/eb433cbfe6.jpg

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?

Danke fuer Tipps!

DAvid

Hallo DAvid,

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.

Gandalf

Hallo,

Hi

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.

Jens

Hallo.

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 …

Gruß Eillicht zu Vensre

Hallo, danke schonmal fuer die antworten.

ich will halt schon blau kalt und rot als heiss haben.

Ich dachte dass es sowas vielleicht schon irgendwo fertig gibt und ich dass nicht selbst interpolieren muss.

das mit der saettigung schau ich mir aber mal an

Hallo, ich moechte Temperaturwerte grafisch darstellen mittels
einer Skala wie zB hier:
http://www.eeginfo.ch/typo3temp/pics/eb433cbfe6.jpg

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?

  1. 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.

  2. 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.

MfG

C.

Hallo David !

Eine allgemeine Regel gibt es nicht, aber man kann sich mehrere Algorithmen ausdenken.
Häufig wird jeweils eine Farbkomponente dazu bzw. weggegeben.

Das Bild in deinem Beispiel scheint folgend organisiert zu sein:
Auf RGB-Palette von kalt nach heiss:

R: 0 0 .. 255 255 255 255
G: 0 0 0 0 .. 255 255
B: 0 .. 255 255 .. 0 0 .. 255

Zuerst sind alle aus = schwarz
Dann zunehmend blau (0,0,0) -\> (0,0,255) schwarz -\> blau
Dann zunehmend rot (0,0,255) -\> (255,0,255) blau -\> violett
Dann abnehmend blau (255,0,255) -\> (255,0,0) violett -\> rot
Dann zunehmeng grün (255,0,0) -\> (255,255,0) rot -\> gelb
Dann zunehmend blau (255,255,0) -\> (255,255,255) gelb -\> weiss

(Eine praktische Seite um das auszuprobieren:
http://www.validhtml.com/farbzusammenstellung.php)

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.

mfg
Christof

Hi,

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!

danke,

gruss und nette Tage,

David