Programm: Pseudocolor

Veröffentlicht von Joe-C (jch) am Oct 23 2011
Software >>

Index

Zurück zur Übersicht

Einleitung

zurück zum Index


Nachdem ich mich mit Videoerfassung und Bildbearbeitung von Videosignalen beschäftigt habe (Dual Webcam und Imageprocessing in C#), wollte ich mich näher mit der Falschfarben Darstellung (Pseudocolor) beschäftigen.
Eigentlich ist es nichts weiter, als ein grafischer Filter wie "Negativ" oder "Schärfen", aber die Anwendungsbereiche sind andere.

Wenn Pseudocolor nicht gerade als optischer Gag in normalen Bildern verwendet wird, benutzt man es auch gerne mal in Bereichen, wo es keine Farben gibt. Denn Bilder, die in einem anderen Spektrum als das Licht aufgenommen wurden, haben logischerweise nicht die Farben des Lichts. Röntgenbilder (unterhalb des Lichtspektrums) und Wärmebilder (oberhalb des Lichtspektrums) haben beispielsweise eine Intensität, aber keine Farben.
Man kann aber die gesamte Intensität in einzelne Blöcke unterteilen und jeden von ihnen eine Farbe zuweisen. Bei der Pseudocolor geht es genau darum.

Statt einer Darstellung von schwarz nach weiß in sehr feinen Abstufungen, kann man ebenso mit Pseudocolor in gröberen Schritten beispielsweise von schwarz über blau über grün über rot nach weiß gehen. Dadurch ist es besser möglich, sehr feine Differenzen wahrzunehmen, da sie so hervorgehoben werden.

Es folgen 3 Screenshots von dem Programm:

Normal
Auflösung: 641x377

Sinus Rainbow
Auflösung: 641x377

Gradient Rainbow
Auflösung: 641x377

 
  •  
  •  
  •  

Funktionsweise

zurück zum Index


Wiedermal ein wichtiger Bestandteil des Programms ist die open source image processing library (AForge.NET).

Die Umwandlung arbeitet so:

  1. Bild laden
  2. Farbpalette erstellen
    (optisch und als Farbtabelle)
  3. Bild in Graustufen umwandeln
    (sicherheitshalber, falls noch Farbe vorher im Bild ist. Außerdem wird das Bildformat dadurch angepasst.)
  4. Farbtabelle auf das Bild anwenden

Berechnungen

Auflösung: 753x428

Der erste Weg ans Ziel (links im Bild) ist der mathematische. Dafür habe ich mich einer netten Vorlage bedient (ColorMap für Falschfarben) die ich noch ein bisschen angepasst habe. Hier werden die 3 Hauptfarben in einem Algorithmus berechnet, der sie um 90° versetzt rotieren lässt.
Ergebnis der Berechnung ist eine Farbtabelle für einen sehr harmonisch fließenden Farbverlauf über das Spektrum. Diese Farbtabelle wird einerseits auf ein (zuvor erstellten) Graustufen Farbverlauf und andererseits auf das Hauptbild angewendet.

Der zweite Weg (rechts im Bild) ist wesentlich einfacher. Mir ist eine Zeichenfunktion aufgefallen, mit der man lineare Farbverläufe Zeichen kann (Use LinearGradientBrushes in C#) . Ich erstelle also eine Bitmap mit einer Breite von genau 256 Pixeln (oder Höhe wenn der Verlauf vertikal sein soll). In diesem Bitmap lasse ich vom Anfang bis zum Ende einen gewünschten Farbverlauf zeichnen. Dann lese ich, über eine Schleife, den Farbwert jedes Pixels aus und erstelle damit die Farbtabelle (von Pixel 1 bis 256 werden die Tabellenwerte von 0 bis 255 gelesen). Diese Farbtabelle wird dann auf das Hauptbild angewendet.
Nachteil ist aber, das nur direkte Farbverläufe gezeichnet werden. Von grün nach rot lässt deshalb grün sinken und rot steigen, ein gelb dazwischen entsteht deshalb nicht wirklich, weil dafür beide oben sein müssten. Deshalb muss man den Regenbogenfarbverlauf um diese Zwischenfarben zusätzlich erweitern.

Mein Programm ist im Prinzip nur ein Bildbetracher, mit dem man SW Wärme oder Röntgenbilder im Farbverlauf betrachten kann. Ich hoffe der Sourcecode ist für alle hilfreich, die sich ebenso damit beschäftigen wollen.
Die gepackte Datei unten, enthält genau wie bei der Dual-Webcam den Sourcecode. Im Ordner bin/release/ ist eine Anwendung, die direkt gestartet werden kann (wenn man das Framework installiert hat...).

Download

zurück zum Index


Folgendes sollte zusätzlich runtergeladen werden, wenn man sich das Pseudocolor Programm mal nähern ansehen möchte:

  • .NET Framework 3.5 Service Pack 1
    Wird benötigt, damit .NET Programme überhaupt laufen können. Wird schon seit Vista mitgeliefert, aber in einer geringeren Version.
  • SharpDevelop 3.2
    Eine open source Entwicklungsumgebung für C#, Visual Basic .NET und Boo. Ich programmiere nur mit dieser Software und mit ihr sehr zufrieden.
    Eine ebenso kostenlose alternative, wäre von Microsoft (Visual Studio 2010 Express)
  • Pseudocolor.zip (280kB)
    Zu guter Letzt noch der Projektordner. Einfach endpacken und so...

Zuletzt geändert am: Oct 23 2011 um 3:47 PM

Zurück