set_lut — Setzen einer Farbtabelle.
set_lut( : : WindowHandle, LookUpTable : )
set_lut setzt die Farbtabelle des Gerätes (Bildschirm),
auf dem das Ausgabefenster dargestellt wird.
Eine Farbtabelle ist die Umsetzung der „Grauwerte“ der Bildmatrix in
einen Grauton oder eine Farbe auf dem Bildschirm. Für jeden Wert
(0..255) wird festgelegt, in welcher Kombination aus rot grün und blau
er dargestellt werden soll. Hierbei werden jedem Grauwert drei Intensitäten
für die Grundfarben zugeordnet; deshalb spricht man von einer
Farbtabelle. Die Umsetzung erfolgt in Echtzeit und bei jedem
Bildschirmaufbau (typisch 60 bis 70 mal pro Sekunde) neu. Dies ermöglicht
es, die Farbtabelle zu wechseln, um ein anderes Erscheinungsbild zu
erhalten. Es ist zu beachten, dass die Farbtabelle nicht bei jedem
Rechner gewechselt werden kann (z.B.: Schwarz/Weiß bzw. Echtfarbe).
Die Farbtabellen in HALCON sind (bei einem Rechner mit 256 Farben) in drei Bereiche aufgeteilt:
Systembereich, bzw. Benutzerbereich
Grafikfarben
Bilddaten
Die Farben in S stammen von den Anwendungen, die vor dem Start von HALCON
aktiv waren, und weiterhin erhalten bleiben sollen. Die Grafikfarben G
werden für Operatoren wie disp_region, disp_circle,
etc. verwendet und sind
in allen Farbtabellen gleich besetzt, d.h. die Ausgaben, die in einer
Grafikfarbe erfolgen bleiben bei allen Farbtabellen erhalten. Grafikfarben
werden mit set_color und set_rgb gesetzt.
Die Grautöne bzw. Farben der
Bilddaten B werden von dem Operator disp_image verwendet. Diese
können sich in Abhängigkeit von der aktuellen Farbtabelle ändern.
Eine Ausnahme vom oben Beschriebenen machen die Operatoren
set_gray (setzen
einer Farbe aus dem Bereich B für Operatoren wie disp_region)
und set_fix, die eine Modifikation der Grafikfarben
ermöglicht.
Bei den heute üblichen Bildschirmen kann nur eine Farbtabelle pro
Bildschirm geladen werden. set_lut kann jedoch für jedes
Fenster getrennt aufgerufen werden. Für dieses Problem gibt es
folgende Lösung:
Es wird immer diejenige Tabelle aktiviert, die dem
gerade aktiven Fenster zugeordnet ist (dabei hat hier aktiv nichts mit
set_lut, sondern vielmehr mit dem „Window-Manager“ zu tun).
Farb- und Grauwerttabellen können auch zusammen mit Echtfarben Grafikkarten verwendet werden. In diesem Fall wird die Tabelle durch Software simuliert, das heißt, dass das Bild bei der Ausgabe über die Tabelle bearbeitet wird.
Die Namen aller Farbtabellen können mit query_lut abgefragt
werden.
Die Farbtabellen unterscheiden sich in dem für die Grauwerte vorgesehenen
Bereich. In diesem Bereich zeigen sie folgendes Verhalten:
| Wert | Beschreibung |
|---|---|
| 'default' | Es werden die beiden Grundfarben (i.allg. schwarz und weiß) verwendet. |
| Wert | Beschreibung |
|---|---|
| 'default' | Von der Hardware vorgegebene Tabelle. |
| Wert | Beschreibung |
|---|---|
| 'default' | Wie 'linear'. |
| 'linear' | Lineares Ansteigen der Grauwerte von 0(schwarz) nach 255 (weiß). |
| 'inverse' | Inverse Funktion zu 'linear'. |
| 'sqr' | Ansteigen der Grauwerte als quadratische Funktion. |
| 'inv_sqr' | Inverse Funktion zu 'sqr'. |
| 'cube' | Ansteigen der Grauwerte als 3. Potenz-Funktion. |
| 'inv_cube' | Inverse Funktion zu 'cube'. |
| 'sqrt' | Ansteigen der Grauwerte als Quadratwurzelfunktion. |
| 'inv_sqrt' | Inverse Funktion zu 'sqrt'. |
| 'cubic_root' | Ansteigen der Grauwerte als 3. Wurzel-Funktion. |
| 'inv_cubic_root' | Inverse Funktion zu 'cubic_root'. |
| Wert | Beschreibung |
|---|---|
| 'color1' | Linearer Übergang von rot über grün nach blau. |
| 'color2' | Fließender Übergang von gelb über rot, blau nach grün. |
| 'color3' | Fließender Übergang von gelb über rot, blau, grün, rot nach blau. |
| 'color4' | Fließender Übergang von gelb über rot nach blau. |
| 'three' | Darstellung der drei Farben rot, grün, blau. |
| 'six' | Darstellung der sechs Grundfarben gelb, rot, magenta, blau, cyan, grün. |
| 'twelve' | Darstellung von 12 Farben. |
| 'twenty_four' | Darstellung von 24 Farben. |
| 'rainbow' | Darstellung der Spektralfarben von rot über grün nach blau. |
| 'temperature' | Wärmetabelle von schwarz über rot und gelb nach weiß. |
| 'change1' | Farbänderung nach jedem Pixel der Tabelle, und zwar abwechselnd die sechs Grundfarben. |
| 'change2' | 5-fache Farbänderung von grün über rot nach blau. |
| 'change3' | 3-fache Farbänderung von grün über rot nach blau. |
| 'jet' | Fließender Übergang von blau über grün, gelb nach rot. |
| 'inverse_jet' | Fließender Übergang von rot über gelb, grün nach blau. |
| 'batlow' | Perzeptuell einheitlich und farbsehschwächefreundlich. |
| 'inverse_batlow' | Perzeptuell einheitlich und farbsehschwächefreundlich. |
Die Farbtabelle LookUpTable, die in WindowHandle verwendet
wird, kann auf die folgenden Arten festgelegt werden:
Farbtabelle wird durch Übergabe ihres Namen ausgewählt
(siehe query_lut).
Liest eine Farbtabelle aus einer Datei. Jede Zeile einer solchen Datei muss
drei Zahlen im Bereich von 0 bis 255 enthalten, wobei die erste Zahl
den Rotanteil, die zweite den Grünanteil und die dritte
den Blauanteil der dargestellten Anzeigefarbe bestimmt. Die Anzahl der Zeilen
kann variieren. Die erste Zeile enthält Informationen für den ersten
Grauwert und die letzte Zeile für den letzten Wert. Wenn es weniger Zeilen
als Grauwerte gibt, werden die verfügbaren Werte über das
gesamte Intervall verteilt.
Wenn es mehr Zeilen als Grauwerte gibt, werden (gleichmäßig verteilt)
Zeilen ignoriert.
Der Dateiname muss der Form “LookUpTable.lut“ entsprechen.
Innerhalb des Parameters wird der Name ohne Dateierweiterung angegeben.
HALCON sucht die Datei im aktuellen Verzeichnis und danach in
einem angegebenen Verzeichnis (siehe 'lut_dir' in
set_system).
RGB-Werte direkt als Tupel setzen. Die Anzahl der Parameterwerte muss der Anzahl der aktuell in der Farbtabelle verwendeten Pixel entsprechen.
Festlegen eines benutzerdefinierten Wertebereichs, der von der
Farbtabelle abgebildet werden soll.
Standardmäßig verwendet HALCON die minimalen und maximalen Grauwerte
und des Bildes
(mit Ausnahme von byte-Bildern) und bildet diese Werte beim
Anwenden der Farbtabelle auf 0 und 255 ab.
Es ist möglich, dieses Verhalten zu verändern, indem man an
set_lut ein Tupel in der Form [LUT, g_min, g_max] übergibt
(wobei 'LUT' eine der oben genannten Optionen ist).
Diese Funktion kann besonders nützlich sein, wenn es Ausreißer in einem
real Bild gibt.
Das Standardverhalten wird durch die Verwendung einer der obigen Optionen ohne minimale und maximale Grauwerte wiederhergestellt.
set_lut kann nur bei Bildschirmen mit 256 Graustufen/Farben
verwendet werden.
WindowHandle (input_control) window → (handle)
Fensteridentifikator.
LookUpTable (input_control) filename.read(-array) → (string / integer / real)
Name der Farbtabelle, Werte der Farbtabelle (RGB) oder der Name der Datei.
Default: 'default'
Wertevorschläge: 'default', 'linear', 'inverse', 'sqr', 'inv_sqr', 'cube', 'inv_cube', 'sqrt', 'inv_sqrt', 'cubic_root', 'inv_cubic_root', 'color1', 'color2', 'color3', 'color4', 'three', 'six', 'twelve', 'twenty_four', 'rainbow', 'temperature', 'cyclic_gray', 'cyclic_temperature', 'hsi', 'change1', 'change2', 'change3', 'jet', 'inverse_jet', 'batlow', 'inverse_batlow'
Dateiendung:
.lut
read_image(Image,'monkey') query_lut(WindowHandle,LUTs) for i := 0 to |LUTs|-1 by 1 set_lut(WindowHandle,LUTs[i]) fwrite_string(FileHandle, ['current table ',LUTs[i]]) fnew_line(FileHandle) get_mbutton(WindowHandle,_,_,_) endfor
set_lut liefert den Wert 2 (
H_MSG_TRUE)
, falls der Parameter korrekt ist,
die Hardware über eine Farbtabelle verfügt und das
Fenster gültig ist. Ansonsten wird eine Fehlerbehandlung
durchgeführt.
get_lut,
query_lut,
set_color,
set_rgb,
set_hsi,
write_lut
Foundation