Name
cfa_to_rgbcfa_to_rgbCfaToRgbcfa_to_rgbCfaToRgbCfaToRgb — Convert a single-channel color filter array image into an RGB image.
cfa_to_rgbcfa_to_rgbCfaToRgbcfa_to_rgbCfaToRgbCfaToRgb converts a single-channel color filter array
image CFAImageCFAImageCFAImageCFAImageCFAImageCFAImage into an RGB image RGBImageRGBImageRGBImageRGBImageRGBImageRGBImage. Color
filter array images are typically generated by single-chip CCD
cameras. The conversion from color filter array image to RGB image
is typically done on the camera itself or is performed by the device
driver of the frame grabber that is used to grab the image. In some
cases, however, the device driver simply passes the color filter
array image through unchanged. In this case, the corresponding
HALCON frame grabber interface typically converts the image into an
RGB image. Hence, the operator cfa_to_rgbcfa_to_rgbCfaToRgbcfa_to_rgbCfaToRgbCfaToRgb is normally used
if the images are not being grabbed using the HALCON frame grabber
interface (grab_imagegrab_imageGrabImagegrab_imageGrabImageGrabImage or grab_image_asyncgrab_image_asyncGrabImageAsyncgrab_image_asyncGrabImageAsyncGrabImageAsync), but are
grabbed using function calls from the frame grabber SDK, and are
passed to HALCON using gen_image1gen_image1GenImage1gen_image1GenImage1GenImage1 or
gen_image1_externgen_image1_externGenImage1Externgen_image1_externGenImage1ExternGenImage1Extern.
In single-chip CCD cameras, a color filter array in front of the
sensor provides (subsampled) color information. The most frequently
used filter is the so-called Bayer filter. The color filter array
has the following layout in this case:
Each gray value of the input image CFAImageCFAImageCFAImageCFAImageCFAImageCFAImage corresponds to
the brightness of the pixel behind the corresponding color filter.
Hence, in the above layout, the pixel (0,0) corresponds to a green
color value, while the pixel (0,1) corresponds to a blue color
value. The layout of the Bayer filter is completely determined by
the first two elements of the first row of the image, and can be
chosen with the parameter CFATypeCFATypeCFATypeCFATypeCFATypeCFAType. In particular, this
enables the correct conversion of color filter array images that
have been cropped out of a larger image (e.g., using
crop_partcrop_partCropPartcrop_partCropPartCropPart or crop_rectangle1crop_rectangle1CropRectangle1crop_rectangle1CropRectangle1CropRectangle1).
The algorithm that is used to interpolate the RGB values is
determined by the parameter InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation. For
InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation = 'bilinear'"bilinear""bilinear""bilinear""bilinear""bilinear", a bilinear
interpolation is performed. While this algorithm is very fast, it
typically leads to “zipper-like” artifacts and color artifacts at
strong edges. For InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation =
'bilinear_dir'"bilinear_dir""bilinear_dir""bilinear_dir""bilinear_dir""bilinear_dir", a modified version of the bilinear
interpolation is performed that may lead to fewer zipper-like
artifacts, especially at horizontal or vertical edges in the image.
The results may still exhibit color artifacts at strong edges,
however. The runtime of this algorithm is only slightly longer than
that of bilinear interpolation. For InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation =
'bilinear_enhanced'"bilinear_enhanced""bilinear_enhanced""bilinear_enhanced""bilinear_enhanced""bilinear_enhanced", an enhanced version of the bilinear
interpolation is performed that produces fewer zipper-like artifacts
and color artifacts than the other two bilinear algorithms in most
cases. The runtime of this algorithm is significantly longer than
that of the other two algorithms.
If 'mmx_enable'"mmx_enable""mmx_enable""mmx_enable""mmx_enable""mmx_enable" is set to 'true'"true""true""true""true""true" (and the SIMD
instruction set is available), the internal calculations for byte
images are performed using SIMD technology for
InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation = 'bilinear'"bilinear""bilinear""bilinear""bilinear""bilinear" and
InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation = 'bilinear_dir'"bilinear_dir""bilinear_dir""bilinear_dir""bilinear_dir""bilinear_dir".
For InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation = 'bilinear'"bilinear""bilinear""bilinear""bilinear""bilinear" and
InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation = 'bilinear_dir'"bilinear_dir""bilinear_dir""bilinear_dir""bilinear_dir""bilinear_dir", cfa_to_rgbcfa_to_rgbCfaToRgbcfa_to_rgbCfaToRgbCfaToRgb
can be executed on OpenCL devices. The width of the input image should be
a multiple of four for byte images, or two for uint2 images, as the
operation will be much slower otherwise.
- Supports OpenCL compute devices.
- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Automatically parallelized on tuple level.
- Automatically parallelized on domain level.
Color filter array type.
Default value:
'bayer_gb'
"bayer_gb"
"bayer_gb"
"bayer_gb"
"bayer_gb"
"bayer_gb"
List of values: '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"
Interpolation type.
Default value:
'bilinear'
"bilinear"
"bilinear"
"bilinear"
"bilinear"
"bilinear"
List of values: '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 returns 2 (H_MSG_TRUE) if all parameters are correct. If
the input is empty the behavior can be set via
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>). If necessary,
an exception is raised.
gen_image1_externgen_image1_externGenImage1Externgen_image1_externGenImage1ExternGenImage1Extern,
gen_image1gen_image1GenImage1gen_image1GenImage1GenImage1,
grab_imagegrab_imageGrabImagegrab_imageGrabImageGrabImage
decompose3decompose3Decompose3decompose3Decompose3Decompose3
trans_from_rgbtrans_from_rgbTransFromRgbtrans_from_rgbTransFromRgbTransFromRgb
Foundation