Lade Inhalt...

Algorithmen zur Umrechnung von Farbfotos in Wärmebilder

Projektarbeit 2016 18 Seiten

Informatik - Angewandte Informatik

Leseprobe

Inhaltsverzeichnis

1 Einleitung

2 Vorbemerkung

3 Die Farbmodelle
3.1 Das RGB-Farbmodell
3.2 Das HSV-Farbmodell

4 Erster Ansatz
4.1 Spektral-Algorithmus
4.1.1 Aufbau
4.1.2 Beispiele
4.1.3 Stärken und Schwächen
4.2 Infrarot-Algorithmus
4.2.1 Aufbau
4.2.2 Beispiele
4.2.3 Stärken und Schwächen
4.3 Vergleich
4.4 Fazit

5 Zweiter Ansatz: Optischer Infrarot-Filter und Helligkeits-Algorithmus
5.1 Algorithmus
5.2 Beispiel
5.3 Fazit

6 Gesamtfazit

7 Quellenverzeichnis
7.1 Informationsquellen
7.2 Bildquellen

Kurzfassung

Die Farbe eines Pixels in einem Foto ist eine Kombination aus drei Zahlen. Mit diesen drei Zahlen, den RGB-Werten, lassen sich mehr als 16 Millionen verschiedene Farben darstellen. Enthalten diese Zahlen auch Informationen über die Temperatur?

Es ist mir gelungen, aus der Farbe der Pixel erste Anhaltspunkte herauszufiltern. Es ist nur eine Frage des richtigen Algorithmus, diese zu bestimmen und daraus eine Art Wärmebild zu erstellen. Es ist sozusagen „color-based temperature guessing“, und es hat seine Vor-und Nachteile. Damit lässt sich tatsächlich ein brauchbares Wärmebild berechnen, auch wenn dieses nicht an die Qualität eines echten Wärmebildes herankommt.

Außerdem habe ich untersucht, inwiefern das Licht im nahen Infrarotbereich bis circa 1500nm, das ältere Digitalkameras noch erfassen können, Aufschluss über die Temperatur gibt.

1 Einleitung

Es gibt zahlreiche Apps für Smartphones, die über die Kamera „Wärmesicht“ ermöglichen. Natürlich funktionieren diese Apps bei genauerem Hinsehen nicht wirklich, sondern sind nur ein Partygag. Darin werden meist sehr einfache Farbfilter verwendet, die beispielsweise helle Bereiche im Originalbild als rot (warm) und dunkle Bereiche als blau (kalt) darstellen. Mit Wärmesicht hat das nichts zu tun.

Trotzdem stellte ich mir die Frage, ob in Fotos nicht doch Informationen über die Temperatur versteckt sind, da die meisten Bildsensoren in der Lage sind, Licht im nahen bis mittleren Infrarotbereich wahrzunehmen. Dieser Wällenlängenbereich sagt jedoch nichts über die Temperatur aus, beziehungsweise funktioniert erst ab etwa 500°C, wenn bereits ein leichtes Glühen (beispierlweise einer Herdplatte) mit bloßem Auge sichtbar wird.

Allerdings lässt sich aus der Farbkombination eine Vermutung über die Temperatur berechnen.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 1: Für das menschliche Auge völlig unsichtbar: die Infrarot-LED einer Fernbedienung. Die Webcam meines Laptops hat keinen Infrarot-Sperrfilter; eigene Aufnahme

2 Vorbemerkung

Schwarze Körper reflektieren weniger Licht als weiße, nehmen daher mehr Strahlungsenergie auf und sind deshalb wärmer.

Schwarze Körper können aber auch wenig beleuchtet sein, also nehmen sie weniger Strahlungsenergie auf und sind deshalb kälter.

Die Herangehensweise über Helligkeit – das ist der Durchschnitt der RGB-Werte – ist also irreführend. Die Helligkeit darf im Algorithmus keinerlei Beachtung finden. Allein auf die Farben, die Anteile von rot, grün und blau kommt es an.

3 Die Farbmodelle

3.1 Das RGB-Farbmodell

Das RGB-Farbmodell wird durch drei Zahlen definiert:

Rot: 0 bis 255

Grün: 0 bis 255

Blau: 0 bis 255

0 bedeutet dunkel, 255 bedeutet hell. 255-0-0 ist also prall rot, 0-255-255 ist cyan, eine Mischung aus grün und blau, 0-0-0 ist schwarz und 255-255-255 ist weiß.

3.2 Das HSV-Farbmodell

Das HSV-Farbmodell setzt sich aus den Werten H (Farbwert), S (Sättigung) und V (Dunkelstufe) zusammen.[1] Für mich ist hier nur der H-Wert interessant, da dieser eine eindeutige Aussage über die Farbe ist. Der Wert reicht von 0 bis 360, 0 ist rot, 60 gelb, 120 grün, 180 cyan, 240 blau, 300 magenta und 360 wieder rot (siehe Diagramm „HSV-Value“ in Abbildung 1). Es ist also eine Art Farbrad.

4 Erster Ansatz

4.1 Spektral-Algorithmus

4.1.1 Aufbau

Mit diesem Algorithmus startete das Projekt. Aus den RGB-Werten wird ein Wert für das sichtbare Spektrum extrahiert, aus dem ein Falschfarben-Bild erstellt wird.

Das Originalbild wird pixelweise ausgelesen und die Pixel werden einzeln nacheinander durch Formeln verändert. Das fertige Bild wird schließlich abgespeichert.

Algorithmus

a) Lese den RGB-Wert des Bildpixels an der Position (x|y) aus.

r = new Color(input.getRGB(x, y)).getRed();

g = new Color(input.getRGB(x, y)).getGreen();

b = new Color(input.getRGB(x, y)).getBlue();

b) Ermittle den geringsten RGB-Wert und subtrahiere diesen von allen RGB-Werten

h = Math.min(Math.min(r, g), b);

r = r-h;

g = g-h;

b = b-h;

Damit wird erreicht, dass einer der RGB-Werte 0 wird. Das Pixel wird durch diesen Schritt dunkler.

c) Ermittle den nun höchsten RGB-Wert, teile alle RGB-Werte durch diesen und multipliziere mit 255.

h = Math.max(Math.max(r, g), b);

if (h > 0) {

r = 255*r/h;

g = 255*g/h;

b = 255*b/h;

}

Jetzt ist ein RGB-Wert 0, ein weiterer 255 und der dritte liegt irgendwo dazwischen. Das Pixel ist wieder heller und besitzt eine Farbe, die sich eindeutig in das HSV-Spektrum (Farbrad) einordnen lässt.

d) Rechne den RGB-Wert in den H-Wert des HSV-Farbmodells um. Die Umrechnung erfolgt über die Geradengleichungen der jeweiligen Abschnitte im Farbspektrum (siehe Diagramm „H-Value“ in Abbildung 1).

e) Ich habe mir drei Varianten der Umrechnung überlegt.

a. Der Bereich von violett (270) bis rot (60) wird abgeschnitten, da Licht mit der Farbe Magenta (300) nur als Zusammensetzung von rotem und blauem Licht existiert. Der entstandene H-Wert (0 bis 270) wird mit dem Faktor 4/3 multipliziert, sodass wieder das volle Spektrum von 0 bis 360 abgedeckt wird.

rot – gelb – grün – cyan – blau – violett

Abbildung in dieser Leseprobe nicht enthalten

b. Das HSV-Farbrad wird um 60 „gedreht“. Es verläuft jetzt wie folgt: 0 ist magenta, 60 ist rot, 120 gelb, 180 grün, 240 cyan, 300 blau und 360 wieder magenta. Das gesamte Spektrum wird verwendet.

magenta – rot – gelb – grün – cyan – blau – magenta

Abbildung in dieser Leseprobe nicht enthalten

c. Das HSV-Spektrum wird aufgeteilt. Es gibt zwei unterschiedliche Übergänge von rot (0) nach blau (360). Das gesamte Spektrum wird verwendet.

rot – gelb – grün – cyan – blau

rot – magenta – blau

Abbildung in dieser Leseprobe nicht enthalten

Codebeispiel: Variante c

Abbildung in dieser Leseprobe nicht enthalten

Das Pixel wird nur noch durch den H-Wert definiert, der dessen Position im sichtbaren Spektrum eindeutig definiert.

f) Skaliere den H-Wert. H wird mit einem Faktor f multipliziert, der üblicherweise größer als 1 ist. Der rote Anteil wird dadurch auf das restliche Spektrum gestreckt, alle entstandenen Werte über 360 werden abgeschnitten und später schwarz dargestellt.

h *= f;

Durch die Skalierung kann der Schwerpunkt auf den roten Bereich des Bildes gelegt werden, der mehr Informationen über die Temperatur enthält als der blaue.

g) Rechne den H-Wert in eine Farbe eines Falschfarben-Spektrums um. Zur Auswahl stehen:

a. Das sichtbare Spektrum (schwarz-rot-gelb-grün-cyan-blau-violett-schwarz)

Abbildung in dieser Leseprobe nicht enthalten

b. Das Eisenspektrum (weiß-gelb-rot-violett-schwarz)

Abbildung in dieser Leseprobe nicht enthalten

c. Das Graustufenspektrum (weiß-schwarz)

Abbildung in dieser Leseprobe nicht enthalten

Die Umrechnung erfolgt wieder über die Geradengleichungen des jeweiligen Spektrums (siehe Abbildung 1). Codebeispiel: Eisenspektrum

Abbildung in dieser Leseprobe nicht enthalten

Durch die Umrechnung erhält man RGB-Werte aus dem jeweiligen Falschfarben-Spektrum.

h) Speichere die erhaltenen RGB-Werte ab.

output.setRGB(x, y, new Color((int)r, (int)g, (int)b).getRGB());

Das Pixel ist fertig bearbeitet und der Algorithmus wird für das nächste Pixel wiederholt.

4.1.2 Beispiele

Der Blick aus meinem Fenster zeigt, dass die Straße sowie das Garagendach wärmer sind als die Bäume.

Abbildung in dieser Leseprobe nicht enthaltenAbbildung in dieser Leseprobe nicht enthalten

Abbildung in dieser Leseprobe nicht enthaltenAbbildung in dieser Leseprobe nicht enthalten

Abbildung 3: Blick aus meinem Fenster (links oben), mit dem Spektral-Algorithmus der Variante c berechnete Bilder in Eisenspektrum (rechts oben), sichtbarem Spektrum (links unten) und Graustufen, der Skalierungsfaktor beträgt bei allen drei Bildern 1,7; eigene Bilder

Abbildung in dieser Leseprobe nicht enthaltenAbbildung in dieser Leseprobe nicht enthaltenAbbildung in dieser Leseprobe nicht enthalten

Abbildung 4: Vergleich der Varianten a, b und c im Eisenspektrum bei f=1,7; eigene Bilder

4.1.3 Stärken und Schwächen

Der Algorithmus basiert auf der Farbe. Menschen werden beispielsweise als warm erkannt, da die Haut einen rötlichen Farbton hat. Pflanzen werden als kalt wahrgenommen. Das bedeutet jedoch auch, dass eine rote Wand als warm missinterpretiert wird.

Beim Spektral-Algorithmus finden alle drei RGB-Werte Beachtung. Ein Nachteil ist jedoch, dass bei Variante a nur 75% des gesamten möglichen Farbspektrums verwendet werden und dass bei Variante b im kontinuierlichen Farbrad eine Grenze gezogen wird (etwas mehr rotes Magenta ist dann ganz warm und mehr blaues Magenta ganz kalt). Allein die Variante c hat diese beiden Probleme nicht. Ein weiterer Nachteil ist, dass die Bildqualität bei manchen Bildern herabgesetzt wird, das bedeutet, dass, auch wenn das entstandene Wärmebild dieselbe Auflösung besitzt wie das Original, gelegentlich 8x8 Pixel große Farbcluster, innerhalb derer die Pixel nahezu denselben Farbton haben, zu erkennen sind.

Abbildung in dieser Leseprobe nicht enthalten

[...]


[1] https://de.wikipedia.org/wiki/HSV-Farbraum, 30.08.2015, Definition des HSV-Farbraums

Details

Seiten
18
Jahr
2016
ISBN (eBook)
9783668180314
Dateigröße
935 KB
Sprache
Deutsch
Katalognummer
v318231
Note
Schlagworte
algorithmen umrechnung farbfotos wärmebilder

Autor

Teilen

Zurück

Titel: Algorithmen zur Umrechnung von Farbfotos in Wärmebilder