cfa_to_rgbcfa_to_rgbCfaToRgbCfaToRgb (Operator)

Name

cfa_to_rgbcfa_to_rgbCfaToRgbCfaToRgb — Umwandlung eines einkanaligen Farbmosaikbildes in ein RGB-Bild.

Signatur

cfa_to_rgb(CFAImage : RGBImage : CFAType, Interpolation : )

Herror cfa_to_rgb(const Hobject CFAImage, Hobject* RGBImage, const char* CFAType, const char* Interpolation)

Herror T_cfa_to_rgb(const Hobject CFAImage, Hobject* RGBImage, const Htuple CFAType, const Htuple Interpolation)

void CfaToRgb(const HObject& CFAImage, HObject* RGBImage, const HTuple& CFAType, const HTuple& Interpolation)

HImage HImage::CfaToRgb(const HString& CFAType, const HString& Interpolation) const

HImage HImage::CfaToRgb(const char* CFAType, const char* Interpolation) const

HImage HImage::CfaToRgb(const wchar_t* CFAType, const wchar_t* Interpolation) const   (Nur Windows)

static void HOperatorSet.CfaToRgb(HObject CFAImage, out HObject RGBImage, HTuple CFAType, HTuple interpolation)

HImage HImage.CfaToRgb(string CFAType, string interpolation)

Beschreibung

cfa_to_rgbcfa_to_rgbCfaToRgbCfaToRgbCfaToRgb wandelt ein einkanaliges Farbmosaikbild CFAImageCFAImageCFAImageCFAImageCFAImage in ein RGB-Bild RGBImageRGBImageRGBImageRGBImageRGBImage 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_rgbCfaToRgbCfaToRgbCfaToRgb bietet sich also hauptsächlich dann zur Verwendung an, wenn die Bilder nicht mit dem HALCON-Framegrabber-Interface (grab_imagegrab_imageGrabImageGrabImageGrabImage oder grab_image_asyncgrab_image_asyncGrabImageAsyncGrabImageAsyncGrabImageAsync) eingezogen werden, sondern mit einer selbstgeschriebenen Funktionalität, die das Bild mit gen_image1gen_image1GenImage1GenImage1GenImage1 oder gen_image1_externgen_image1_externGenImage1ExternGenImage1ExternGenImage1Extern 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 CFAImageCFAImageCFAImageCFAImageCFAImage 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 CFATypeCFATypeCFATypeCFATypeCFAType 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_partCropPartCropPartCropPart oder crop_rectangle1crop_rectangle1CropRectangle1CropRectangle1CropRectangle1).

Der Algorithmus, der zur Berechnung der RGB-Werte verwendet wird, wird mit InterpolationInterpolationInterpolationInterpolationinterpolation festgelegt. Für InterpolationInterpolationInterpolationInterpolationinterpolation = '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 InterpolationInterpolationInterpolationInterpolationinterpolation = '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 InterpolationInterpolationInterpolationInterpolationinterpolation = '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" auf 'true'"true""true""true""true" gesetzt wird (und die verwendete Hardware SIMD-Technologie unterstützt), wird die Berechnung für byte-Bilder für InterpolationInterpolationInterpolationInterpolationinterpolation = 'bilinear'"bilinear""bilinear""bilinear""bilinear" und InterpolationInterpolationInterpolationInterpolationinterpolation = 'bilinear_dir'"bilinear_dir""bilinear_dir""bilinear_dir""bilinear_dir" intern unter Verwendung von SIMD-Technologie durchgeführt.

cfa_to_rgbcfa_to_rgbCfaToRgbCfaToRgbCfaToRgb kann für InterpolationInterpolationInterpolationInterpolationinterpolation = 'bilinear'"bilinear""bilinear""bilinear""bilinear" und InterpolationInterpolationInterpolationInterpolationinterpolation = '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.

Ausführungsinformationen

Parameter

CFAImageCFAImageCFAImageCFAImageCFAImage (input_object)  singlechannelimage(-array) objectHImageHImageHobject (byte* / uint2*) *erlaubt für Compute Devices

Eingabebild.

RGBImageRGBImageRGBImageRGBImageRGBImage (output_object)  multichannel-image(-array) objectHImageHImageHobject * (byte / uint2)

Ausgabebild.

CFATypeCFATypeCFATypeCFATypeCFAType (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Art des Farbmosaiks.

Defaultwert: 'bayer_gb' "bayer_gb" "bayer_gb" "bayer_gb" "bayer_gb"

Werteliste: 'bayer_bg'"bayer_bg""bayer_bg""bayer_bg""bayer_bg", 'bayer_gb'"bayer_gb""bayer_gb""bayer_gb""bayer_gb", 'bayer_gr'"bayer_gr""bayer_gr""bayer_gr""bayer_gr", 'bayer_rg'"bayer_rg""bayer_rg""bayer_rg""bayer_rg"

InterpolationInterpolationInterpolationInterpolationinterpolation (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Art der Interpolation.

Defaultwert: 'bilinear' "bilinear" "bilinear" "bilinear" "bilinear"

Werteliste: 'bilinear'"bilinear""bilinear""bilinear""bilinear", 'bilinear_dir'"bilinear_dir""bilinear_dir""bilinear_dir""bilinear_dir", 'bilinear_enhanced'"bilinear_enhanced""bilinear_enhanced""bilinear_enhanced""bilinear_enhanced"

Ergebnis

cfa_to_rgbcfa_to_rgbCfaToRgbCfaToRgbCfaToRgb 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>)SetSystem("no_object_result", <Result>)SetSystem("no_object_result", <Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

gen_image1_externgen_image1_externGenImage1ExternGenImage1ExternGenImage1Extern, gen_image1gen_image1GenImage1GenImage1GenImage1, grab_imagegrab_imageGrabImageGrabImageGrabImage

Nachfolger

decompose3decompose3Decompose3Decompose3Decompose3

Siehe auch

trans_from_rgbtrans_from_rgbTransFromRgbTransFromRgbTransFromRgb

Modul

Foundation