| Operatoren |
cfa_to_rgb — Umwandlung eines einkanaligen Farbmosaikbildes in ein RGB-Bild.
cfa_to_rgb(CFAImage : RGBImage : CFAType, Interpolation : )
cfa_to_rgb wandelt ein einkanaliges Farbmosaikbild CFAImage in ein RGB-Bild RGBImage um. Farbmosaikbilder werden typischerweise von Ein-Chip-CCD-Kameras erzeugt. Die Transformation von Farbmosaikbild in RGB-Bild erfolgt typischerweise auf der Kamera selbst oder wird vom Gerätetreiber des verwendeten Framegrabbers durchgeführt. In manchen Fällen wird allerdings vom Gerätetreiber das Farbmosaikbild ohne Verarbeitung weitergereicht. In diesem Fall wird typischerweise im jeweiligen HALCON-Framegrabber-Interface die Konversion in ein RGB-Bild durchgeführt. Der Operator cfa_to_rgb bietet sich also hauptsächlich dann zur Verwendung an, wenn die Bilder nicht mit dem HALCON-Framegrabber-Interface (grab_image oder grab_image_async) eingezogen werden, sondern mit einer selbstgeschriebenen Funktionalität, die das Bild mit gen_image1 oder gen_image1_extern an HALCON übergibt.
Bei Ein-Chip-CCD-Kameras sorgt ein Farbmosaikfilter vor dem Sensor für die Erzeugung (unterabgetasteter) Farbinformation. Der am häufigsten verwendete Farbmosaikfilter ist der sog. Bayer-Filter. Die Farbfilter vor den Sensorelementen des CCD-Chips haben hierbei folgende Anordnung:
Der Algorithmus, der zur Berechnung der RGB-Werte verwendet wird, wird mit Interpolation festgelegt. Für Interpolation = 'bilinear' wird eine bilineare Interpolation durchgeführt. Dieser Algorithmus ist sehr schnell, führt aber typischerweise an starken Kanten zu „reißverschlussartigen“ Artefakten und Farbartefakten. Für Interpolation = 'bilinear_dir' wird eine modifizierte Variante der bilinearen Interpolation durchgeführt, die zu weniger reißverschlussartigen Artefakten, speziell bei horizontalen oder vertikalen Kanten im Bild, führen kann. Das Ergebnis kann aber immer noch Farbartefakte an starken Kanten enthalten. Die Laufzeit dieses Algorithmus' ist nur wenig länger als die der bilinearen Interpolation. Für Interpolation = 'bilinear_enhanced' wird eine verbesserte Version der bilinearen Interpolation verwendet, die in den meisten Fällen deutlich weniger reißverschlussartige Artefakte und Farbartefakte erzeugt als die anderen beiden bilinearen Algorithmen. Die Laufzeit dieses Algorithmus ist deutlich länger als die der anderen beiden Algorithmen.
Falls 'mmx_enable' auf 'true' gesetzt wird (und die verwendete Hardware SIMD-Technologie unterstützt), wird die Berechnung für byte-Bilder für Interpolation = 'bilinear' und Interpolation = 'bilinear_dir' intern unter Verwendung von SIMD-Technologie durchgeführt.
cfa_to_rgb kann für Interpolation = 'bilinear' und Interpolation = 'bilinear_dir' auf OpenCL Geräten ausgeführt werden. Dabei sollte die Breite des Eingabebildes ein vielfaches von vier (für byte-Bilder) bzw. zwei (für uint2-Bilder) betragen, da die Berechnung sonst um ein vielfaches langsamer ist.
Eingabebild.
Ausgabebild.
Art des Farbmosaiks.
Defaultwert: 'bayer_gb'
Werteliste: 'bayer_bg', 'bayer_gb', 'bayer_gr', 'bayer_rg'
Art der Interpolation.
Defaultwert: 'bilinear'
Werteliste: 'bilinear', 'bilinear_dir', 'bilinear_enhanced'
cfa_to_rgb liefert den Wert 2 (H_MSG_TRUE), falls die Parameter korrekt sind. Das Verhalten bei leerer Eingabe (keine Eingabebilder vorhanden) lässt sich mittels set_system(::'no_object_result', <Result>:) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
gen_image1_extern, gen_image1, grab_image
Foundation
| Operatoren |