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 Grautabellen koennen können auch zusammen mit Echtfarben Graphikkarten verwendet werden. In diesem Fall wird die Tabelle durch Software simuliert, das heißt, dass das ein Bild bei der Ausgabe über die Tabelle bearbeitet wird.
WindowsNT spezifisch: Wird die Grafikkarte nicht im Echtfarbenmodus verwendet, so muss nach dem Einstellen der Farbtabelle das Bild neue ausgegeben werden.
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:
Grauwerttabellen (1-7 Bildebenen)
Es werden die beiden Grundfarben (i.allg. schwarz und weiß) verwendet.
Farbtabelle (Echtfarbe, Statische Graustufen)
Von der Hardware vorgegebene Tabelle.
Grauwerttabellen (256 Farben)
Wie 'linear'.
Lineares Ansteigen der Grauwerte von 0(schwarz) nach 255 (weiß).
Inverse Funktion zu 'linear'.
Ansteigen der Grauwerte als quadratische Funktion.
Inverse Funktion zu 'sqr'.
Ansteigen der Grauwerte als 3. Potenz-Funktion.
Inverse Funktion zu 'cube'.
Ansteigen der Grauwerte als Quadratwurzelfunktion.
Inverse Funktion zu 'sqrt'.
Ansteigen der Grauwerte als 3. Wurzel-Funktion.
Inverse Funktion zu 'cubic_root'.
Farbtabellen (256 Farben)
Linearer Übergang von rot über grün nach blau.
Fließender Übergang von gelb über rot, blau nach grün.
Fließender Übergang von gelb über rot, blau, grün, rot nach blau.
Fließender Übergang von gelb über rot nach blau.
Darstellung der drei Farben rot, grün, blau.
Darstellung der sechs Grundfarben gelb, rot, magenta, blau, cyan, grün.
Darstellung von 12 Farben.
Darstellung von 24 Farben.
Darstellung der Spektralfarben von rot über grün nach blau.
Wärmetabelle von schwarz über rot und gelb nach weiß.
Farbänderung nach jedem Pixel der Tabelle, und zwar abwechselnd die sechs Grundfarben.
5-fache Farbänderung von grün über rot nach blau.
3-fache Farbänderung von grün über rot nach blau.
Weiterhin kann eine Farbtabelle aus einer Datei eingelesen werden. Diese
Datei muss in jeder Zeile drei Zahlen von 0 bis 255 enthalten, wobei die
erste Zahl dem Rotanteil, die zweite dem Grünanteil und die dritte dem
Blauanteil für die Darstellung einer Farbe entspricht. Die Anzahl der
Zeilen ist beliebig. Dabei wird die erste Zeile als erster Grauwert, die
letzte als letzter Grauwert verwendet. Ist die Anzahl der Zeilen geringer
als die Zahl der Grauwerte in der Farbtabelle, so werden die vorhandenen
Werte gleichmäßig über das ganze Intervall verteilt. Ist die Anzahl zu
hoch, werden (gleichmäßig verteilt) Zeilen bei der Besetzung der
Farbtabelle ignoriert. Diese Datei muss unter dem Namen
„LookUpTable
.lut“ abgespeichert sein. Der Dateiname wird ohne
Extension angegeben. Die Datei wird im aktuellen Directory und dann in
einem ausgezeichneten Directory ( siehe
set_system(::'lut_dir',<Pfad>:)
) gesucht.
Der Aufruf von set_lut
kann auch mit einem Tupel von RGB-Werten
erfolgen.
Diese werden dann direkt gesetzt. Es ist zu beachten, dass die Anzahl der
Parameterwerte, der Anzahl der aktuell verwendeten Pixel in der Farbtabelle
entsprechen müssen.
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)
Name der Farbtabelle, Werte der Farbtabelle (RGB) oder der Name der Datei.
Defaultwert: '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'
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