set_lutT_set_lutSetLutSetLutset_lut (Operator)

Name

set_lutT_set_lutSetLutSetLutset_lut — Setzen einer Farbtabelle.

Signatur

set_lut( : : WindowHandle, LookUpTable : )

Herror T_set_lut(const Htuple WindowHandle, const Htuple LookUpTable)

void SetLut(const HTuple& WindowHandle, const HTuple& LookUpTable)

void HWindow::SetLut(const HTuple& LookUpTable) const

void HWindow::SetLut(const HString& LookUpTable) const

void HWindow::SetLut(const char* LookUpTable) const

void HWindow::SetLut(const wchar_t* LookUpTable) const   ( Nur Windows)

static void HOperatorSet.SetLut(HTuple windowHandle, HTuple lookUpTable)

void HWindow.SetLut(HTuple lookUpTable)

void HWindow.SetLut(string lookUpTable)

def set_lut(window_handle: HHandle, look_up_table: MaybeSequence[Union[int, float, str]]) -> None

Beschreibung

set_lutset_lutSetLutSetLutset_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:

S:

Systembereich, bzw. Benutzerbereich

G:

Grafikfarben

B:

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_regiondisp_regionDispRegionDispRegiondisp_region, disp_circledisp_circleDispCircleDispCircledisp_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_colorset_colorSetColorSetColorset_color und set_rgbset_rgbSetRgbSetRgbset_rgb gesetzt. Die Grautöne bzw. Farben der Bilddaten B werden von dem Operator disp_imagedisp_imageDispImageDispImagedisp_image verwendet. Diese können sich in Abhängigkeit von der aktuellen Farbtabelle ändern. Eine Ausnahme vom oben Beschriebenen machen die Operatoren set_grayset_graySetGraySetGrayset_gray (setzen einer Farbe aus dem Bereich B für Operatoren wie disp_regiondisp_regionDispRegionDispRegiondisp_region) und set_fixset_fixSetFixSetFixset_fix, die eine Modifikation der Grafikfarben ermöglicht.

Bei den heute üblichen Bildschirmen kann nur eine Farbtabelle pro Bildschirm geladen werden. set_lutset_lutSetLutSetLutset_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_lutset_lutSetLutSetLutset_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_lutquery_lutQueryLutQueryLutquery_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)

Wert Beschreibung
'default'"default""default""default""default" Es werden die beiden Grundfarben (i.allg. schwarz und weiß) verwendet.
Farbtabelle (Echtfarbe, statische Graustufen)

Wert Beschreibung
'default'"default""default""default""default" Von der Hardware vorgegebene Tabelle.
Grauwerttabellen (256 Farben)

Wert Beschreibung
'default'"default""default""default""default" Wie 'linear'"linear""linear""linear""linear".
'linear'"linear""linear""linear""linear" Lineares Ansteigen der Grauwerte von 0(schwarz) nach 255 (weiß).
'inverse'"inverse""inverse""inverse""inverse" Inverse Funktion zu 'linear'"linear""linear""linear""linear".
'sqr'"sqr""sqr""sqr""sqr" Ansteigen der Grauwerte als quadratische Funktion.
'inv_sqr'"inv_sqr""inv_sqr""inv_sqr""inv_sqr" Inverse Funktion zu 'sqr'"sqr""sqr""sqr""sqr".
'cube'"cube""cube""cube""cube" Ansteigen der Grauwerte als 3. Potenz-Funktion.
'inv_cube'"inv_cube""inv_cube""inv_cube""inv_cube" Inverse Funktion zu 'cube'"cube""cube""cube""cube".
'sqrt'"sqrt""sqrt""sqrt""sqrt" Ansteigen der Grauwerte als Quadratwurzelfunktion.
'inv_sqrt'"inv_sqrt""inv_sqrt""inv_sqrt""inv_sqrt" Inverse Funktion zu 'sqrt'"sqrt""sqrt""sqrt""sqrt".
'cubic_root'"cubic_root""cubic_root""cubic_root""cubic_root" Ansteigen der Grauwerte als 3. Wurzel-Funktion.
'inv_cubic_root'"inv_cubic_root""inv_cubic_root""inv_cubic_root""inv_cubic_root" Inverse Funktion zu 'cubic_root'"cubic_root""cubic_root""cubic_root""cubic_root".
Farbtabellen (256 Farben)

Wert Beschreibung
'color1'"color1""color1""color1""color1" Linearer Übergang von rot über grün nach blau.
'color2'"color2""color2""color2""color2" Fließender Übergang von gelb über rot, blau nach grün.
'color3'"color3""color3""color3""color3" Fließender Übergang von gelb über rot, blau, grün, rot nach blau.
'color4'"color4""color4""color4""color4" Fließender Übergang von gelb über rot nach blau.
'three'"three""three""three""three" Darstellung der drei Farben rot, grün, blau.
'six'"six""six""six""six" Darstellung der sechs Grundfarben gelb, rot, magenta, blau, cyan, grün.
'twelve'"twelve""twelve""twelve""twelve" Darstellung von 12 Farben.
'twenty_four'"twenty_four""twenty_four""twenty_four""twenty_four" Darstellung von 24 Farben.
'rainbow'"rainbow""rainbow""rainbow""rainbow" Darstellung der Spektralfarben von rot über grün nach blau.
'temperature'"temperature""temperature""temperature""temperature" Wärmetabelle von schwarz über rot und gelb nach weiß.
'change1'"change1""change1""change1""change1" Farbänderung nach jedem Pixel der Tabelle, und zwar abwechselnd die sechs Grundfarben.
'change2'"change2""change2""change2""change2" 5-fache Farbänderung von grün über rot nach blau.
'change3'"change3""change3""change3""change3" 3-fache Farbänderung von grün über rot nach blau.
'jet'"jet""jet""jet""jet" Fließender Übergang von blau über grün, gelb nach rot.
'inverse_jet'"inverse_jet""inverse_jet""inverse_jet""inverse_jet" Fließender Übergang von rot über gelb, grün nach blau.

Die Farbtabelle LookUpTableLookUpTableLookUpTablelookUpTablelook_up_table, die in WindowHandleWindowHandleWindowHandlewindowHandlewindow_handle verwendet wird, kann auf die folgenden Arten festgelegt werden:

Name der Farbtabelle

Farbtabelle wird durch Übergabe ihres Namen ausgewählt (siehe query_lutquery_lutQueryLutQueryLutquery_lut).

Dateiname der Farbtabelle

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'"lut_dir""lut_dir""lut_dir""lut_dir" in set_systemset_systemSetSystemSetSystemset_system).

Tupel

RGB-Werte direkt als Tupel setzen. Die Anzahl der Parameterwerte muss der Anzahl der aktuell in der Farbtabelle verwendeten Pixel entsprechen.

Beliebige der oben genannten Kombinationen mit benutzerdefiniertem Wertebereich

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_lutset_lutSetLutSetLutset_lut ein Tupel in der Form [LUT, g_min, g_max] übergibt (wobei 'LUT'"LUT""LUT""LUT""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.

Achtung

set_lutset_lutSetLutSetLutset_lut kann nur bei Bildschirmen mit 256 Graustufen/Farben verwendet werden.

Ausführungsinformationen

Parameter

WindowHandleWindowHandleWindowHandlewindowHandlewindow_handle (input_control)  window HWindow, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Fensteridentifikator.

LookUpTableLookUpTableLookUpTablelookUpTablelook_up_table (input_control)  filename.read(-array) HTupleMaybeSequence[Union[int, float, str]]HTupleHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double)

Name der Farbtabelle, Werte der Farbtabelle (RGB) oder der Name der Datei.

Default: 'default' "default" "default" "default" "default"

Wertevorschläge: 'default'"default""default""default""default", 'linear'"linear""linear""linear""linear", 'inverse'"inverse""inverse""inverse""inverse", 'sqr'"sqr""sqr""sqr""sqr", 'inv_sqr'"inv_sqr""inv_sqr""inv_sqr""inv_sqr", 'cube'"cube""cube""cube""cube", 'inv_cube'"inv_cube""inv_cube""inv_cube""inv_cube", 'sqrt'"sqrt""sqrt""sqrt""sqrt", 'inv_sqrt'"inv_sqrt""inv_sqrt""inv_sqrt""inv_sqrt", 'cubic_root'"cubic_root""cubic_root""cubic_root""cubic_root", 'inv_cubic_root'"inv_cubic_root""inv_cubic_root""inv_cubic_root""inv_cubic_root", 'color1'"color1""color1""color1""color1", 'color2'"color2""color2""color2""color2", 'color3'"color3""color3""color3""color3", 'color4'"color4""color4""color4""color4", 'three'"three""three""three""three", 'six'"six""six""six""six", 'twelve'"twelve""twelve""twelve""twelve", 'twenty_four'"twenty_four""twenty_four""twenty_four""twenty_four", 'rainbow'"rainbow""rainbow""rainbow""rainbow", 'temperature'"temperature""temperature""temperature""temperature", 'cyclic_gray'"cyclic_gray""cyclic_gray""cyclic_gray""cyclic_gray", 'cyclic_temperature'"cyclic_temperature""cyclic_temperature""cyclic_temperature""cyclic_temperature", 'hsi'"hsi""hsi""hsi""hsi", 'change1'"change1""change1""change1""change1", 'change2'"change2""change2""change2""change2", 'change3'"change3""change3""change3""change3", 'jet'"jet""jet""jet""jet", 'jet_inverse'"jet_inverse""jet_inverse""jet_inverse""jet_inverse"

Dateiendung: .lut

Beispiel (HDevelop)

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

Beispiel (C)

Htuple WindowHandleTuple, LUTs;
read_image(&Image,"monkey");
create_tuple(&WindowHandleTuple,1);
set_i(WindowHandleTuple,WindowHandle,0);
T_query_lut(WindowHandleTuple,&LUTs) \:
for(i=0; i<length_tuple(LUTs)-1; i++)
{
  set_lut(WindowHandle,get_s(LUTs,i));
  fwrite_string(FileHandle,"current table: ");
  fwrite_string(FileHandle,get_s(LUTs,i));
  fnew_line(FileHandle);
  get_mbutton(WindowHandle,NULL,NULL,NULL);
};

Beispiel (HDevelop)

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

Beispiel (HDevelop)

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

Ergebnis

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

Vorgänger

query_lutquery_lutQueryLutQueryLutquery_lut, get_lutget_lutGetLutGetLutget_lut

Siehe auch

get_lutget_lutGetLutGetLutget_lut, query_lutquery_lutQueryLutQueryLutquery_lut, set_colorset_colorSetColorSetColorset_color, set_rgbset_rgbSetRgbSetRgbset_rgb, set_hsiset_hsiSetHsiSetHsiset_hsi, write_lutwrite_lutWriteLutWriteLutwrite_lut

Modul

Foundation