Name
cfa_to_rgbcfa_to_rgbCfaToRgbcfa_to_rgbCfaToRgbCfaToRgb — Umwandlung eines einkanaligen Farbmosaikbildes in ein RGB-Bild.
cfa_to_rgbcfa_to_rgbCfaToRgbcfa_to_rgbCfaToRgbCfaToRgb wandelt ein einkanaliges Farbmosaikbild
CFAImageCFAImageCFAImageCFAImageCFAImageCFAImage in ein RGB-Bild RGBImageRGBImageRGBImageRGBImageRGBImageRGBImage 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_rgbcfa_to_rgbCfaToRgbcfa_to_rgbCfaToRgbCfaToRgb bietet sich also
hauptsächlich dann zur Verwendung an, wenn die Bilder nicht mit dem
HALCON-Framegrabber-Interface (grab_imagegrab_imageGrabImagegrab_imageGrabImageGrabImage oder
grab_image_asyncgrab_image_asyncGrabImageAsyncgrab_image_asyncGrabImageAsyncGrabImageAsync) eingezogen werden, sondern mit einer
selbstgeschriebenen Funktionalität, die das Bild mit
gen_image1gen_image1GenImage1gen_image1GenImage1GenImage1 oder gen_image1_externgen_image1_externGenImage1Externgen_image1_externGenImage1ExternGenImage1Extern 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:
Jeder Grauwert des Eingabebildes CFAImageCFAImageCFAImageCFAImageCFAImageCFAImage entspricht der
Helligkeit des Pixels hinter dem entsprechenden Farbfilter. In der
obigen Anordnung entspricht also das Pixel (0,0) einem Grünwert, das
Pixel (0,1) einem Blauwert. Die Anordnung des Bayer-Filters wird
vollständig bestimmt durch die ersten zwei Elemente der ersten
Bildzeile, welche mit CFATypeCFATypeCFATypeCFATypeCFATypeCFAType festgelegt werden kann. Dies
erlaubt insbesondere die korrekte Umwandlung von Farbmosaikbildern,
die aus einem größeren Bild ausgeschnitten worden sind (z.B. mit
crop_partcrop_partCropPartcrop_partCropPartCropPart oder crop_rectangle1crop_rectangle1CropRectangle1crop_rectangle1CropRectangle1CropRectangle1).
Der Algorithmus, der zur Berechnung der RGB-Werte verwendet wird,
wird mit InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation festgelegt. Für
InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation = 'bilinear'"bilinear""bilinear""bilinear""bilinear""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
InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation = 'bilinear_dir'"bilinear_dir""bilinear_dir""bilinear_dir""bilinear_dir""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 InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation
= 'bilinear_enhanced'"bilinear_enhanced""bilinear_enhanced""bilinear_enhanced""bilinear_enhanced""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'"mmx_enable""mmx_enable""mmx_enable""mmx_enable""mmx_enable" auf 'true'"true""true""true""true""true" gesetzt wird (und
die verwendete Hardware SIMD-Technologie unterstützt), wird die
Berechnung für byte-Bilder für InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation =
'bilinear'"bilinear""bilinear""bilinear""bilinear""bilinear" und InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation =
'bilinear_dir'"bilinear_dir""bilinear_dir""bilinear_dir""bilinear_dir""bilinear_dir" intern unter Verwendung von SIMD-Technologie
durchgeführt.
cfa_to_rgbcfa_to_rgbCfaToRgbcfa_to_rgbCfaToRgbCfaToRgb kann für InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation =
'bilinear'"bilinear""bilinear""bilinear""bilinear""bilinear" und InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation =
'bilinear_dir'"bilinear_dir""bilinear_dir""bilinear_dir""bilinear_dir""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.
- Unterstützt OpenCL Compute Devices.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Automatisch parallelisiert auf Tupelebene.
- Automatisch parallelisiert auf Domainebene.
Art des Farbmosaiks.
Defaultwert:
'bayer_gb'
"bayer_gb"
"bayer_gb"
"bayer_gb"
"bayer_gb"
"bayer_gb"
Werteliste: 'bayer_bg'"bayer_bg""bayer_bg""bayer_bg""bayer_bg""bayer_bg", 'bayer_gb'"bayer_gb""bayer_gb""bayer_gb""bayer_gb""bayer_gb", 'bayer_gr'"bayer_gr""bayer_gr""bayer_gr""bayer_gr""bayer_gr", 'bayer_rg'"bayer_rg""bayer_rg""bayer_rg""bayer_rg""bayer_rg"
Art der Interpolation.
Defaultwert:
'bilinear'
"bilinear"
"bilinear"
"bilinear"
"bilinear"
"bilinear"
Werteliste: 'bilinear'"bilinear""bilinear""bilinear""bilinear""bilinear", 'bilinear_dir'"bilinear_dir""bilinear_dir""bilinear_dir""bilinear_dir""bilinear_dir", 'bilinear_enhanced'"bilinear_enhanced""bilinear_enhanced""bilinear_enhanced""bilinear_enhanced""bilinear_enhanced"
cfa_to_rgbcfa_to_rgbCfaToRgbcfa_to_rgbCfaToRgbCfaToRgb 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>:)set_system("no_object_result", <Result>)SetSystem("no_object_result", <Result>)set_system("no_object_result", <Result>)SetSystem("no_object_result", <Result>)SetSystem("no_object_result", <Result>) festlegen.
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
gen_image1_externgen_image1_externGenImage1Externgen_image1_externGenImage1ExternGenImage1Extern,
gen_image1gen_image1GenImage1gen_image1GenImage1GenImage1,
grab_imagegrab_imageGrabImagegrab_imageGrabImageGrabImage
decompose3decompose3Decompose3decompose3Decompose3Decompose3
trans_from_rgbtrans_from_rgbTransFromRgbtrans_from_rgbTransFromRgbTransFromRgb
Foundation