cfa_to_rgbcfa_to_rgbCfaToRgbCfaToRgbcfa_to_rgb彩色滤光片阵列至红绿蓝(算子)
名称
cfa_to_rgbcfa_to_rgbCfaToRgbCfaToRgbcfa_to_rgb — 将单通道彩色滤光片阵列 CFA(Color Filter Array)图像转换为 RGB 图像。
签名
描述
cfa_to_rgbcfa_to_rgbCfaToRgbCfaToRgbCfaToRgbcfa_to_rgb 将单通道彩色滤光片阵列图像 CFAImageCFAImageCFAImageCFAImageCFAImagecfaimage 转换为 RGB 图像 RGBImageRGBImageRGBImageRGBImageRGBImagergbimage。彩色滤光片阵列图像通常由单芯片 CCD 相机生成。从彩色滤光片阵列图像到 RGB 图像的转换通常在相机本身完成,或由用于抓取图像的帧抓取卡设备驱动程序执行。然而,在某些情况下,设备驱动程序会直接将彩色滤光片阵列图像未经修改地传递过去。在此情况下,对应的 HALCON 帧抓取接口通常会将图像转换为 RGB 图像。因此,当图像并非通过 HALCON 帧抓取接口(如 grab_imagegrab_imageGrabImageGrabImageGrabImagegrab_image 或 grab_image_asyncgrab_image_asyncGrabImageAsyncGrabImageAsyncGrabImageAsyncgrab_image_async)获取,而是通过帧抓取 SDK 的函数调用抓取,并使用 gen_image1gen_image1GenImage1GenImage1GenImage1gen_image1 或
gen_image1_externgen_image1_externGenImage1ExternGenImage1ExternGenImage1Externgen_image1_extern 传递至 HALCON 时,通常会使用 cfa_to_rgbcfa_to_rgbCfaToRgbCfaToRgbCfaToRgbcfa_to_rgb 算子进行转换。
在单芯片 CCD 相机中,传感器前方的彩色滤光片阵列提供(子采样)的色彩信息。最常用的滤光片是所谓的拜耳滤光片。在此情况下,彩色滤光片阵列的布局如下:
输入图像 CFAImageCFAImageCFAImageCFAImageCFAImagecfaimage 的每个灰度值对应于其后方像素在对应彩色滤光片下的亮度值。因此,在上述布局中,像素(0,0)对应绿色值,而像素(0,1)对应蓝色值。拜耳滤光片布局完全由图像首行前两个元素决定,可通过参数 CFATypeCFATypeCFATypeCFATypeCFATypecfatype 进行选择。这尤其能确保正确转换从大图像裁剪出的滤光片阵列图像(例如使用
crop_partcrop_partCropPartCropPartCropPartcrop_part 或 crop_rectangle1crop_rectangle1CropRectangle1CropRectangle1CropRectangle1crop_rectangle1 实现)。
用于插值RGB值的算法由参数 InterpolationInterpolationInterpolationInterpolationinterpolationinterpolation 决定。当
InterpolationInterpolationInterpolationInterpolationinterpolationinterpolation = 'bilinear'"bilinear""bilinear""bilinear""bilinear""bilinear" 时,执行双线性插值。该算法速度极快,但通常会在强边缘处产生“拉链状”伪影和色彩伪影。当 InterpolationInterpolationInterpolationInterpolationinterpolationinterpolation =
'bilinear_dir'"bilinear_dir""bilinear_dir""bilinear_dir""bilinear_dir""bilinear_dir" 时,执行改进版双线性插值,可减少拉链状伪影,尤其在图像的水平或垂直边缘处效果显著。但结果在强边缘处仍可能出现色彩伪影。该算法运行时间仅比双线性插值略长。当 InterpolationInterpolationInterpolationInterpolationinterpolationinterpolation =
'bilinear_enhanced'"bilinear_enhanced""bilinear_enhanced""bilinear_enhanced""bilinear_enhanced""bilinear_enhanced" 时,将执行增强版双线性插值,在多数情况下比其他两种双线性算法产生更少的拉链状伪影和色彩伪影。该算法运行时间显著长于其他两种算法。
若将 'mmx_enable'"mmx_enable""mmx_enable""mmx_enable""mmx_enable""mmx_enable" 设置为 'true'"true""true""true""true""true"(且 SIMD 指令集可用),则在
InterpolationInterpolationInterpolationInterpolationinterpolationinterpolation = 'bilinear'"bilinear""bilinear""bilinear""bilinear""bilinear" 和
InterpolationInterpolationInterpolationInterpolationinterpolationinterpolation = 'bilinear_dir'"bilinear_dir""bilinear_dir""bilinear_dir""bilinear_dir""bilinear_dir" 时,byte 图像的内部计算将采用 SIMD 技术执行。
当 InterpolationInterpolationInterpolationInterpolationinterpolationinterpolation = 'bilinear'"bilinear""bilinear""bilinear""bilinear""bilinear" 和
InterpolationInterpolationInterpolationInterpolationinterpolationinterpolation = 'bilinear_dir'"bilinear_dir""bilinear_dir""bilinear_dir""bilinear_dir""bilinear_dir" 时,cfa_to_rgbcfa_to_rgbCfaToRgbCfaToRgbCfaToRgbcfa_to_rgb
可在 OpenCL 设备上执行。输入图像的宽度对于 byte 图像应为 4 的倍数,对于 uint2 图像应为 2 的倍数,否则操作速度将大幅降低。
执行信息
- 支持 OpenCL 计算设备。
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 在元组级别上自动并行化。
- 在域级别上自动并行化。
参数
CFAImageCFAImageCFAImageCFAImageCFAImagecfaimage (输入对象) singlechannelimage(-array) → objectHImageHObjectHImageHobject (byte* / uint2*) *允许用于计算设备
输入图像。
RGBImageRGBImageRGBImageRGBImageRGBImagergbimage (输出对象) multichannel-image(-array) → objectHImageHObjectHImageHobject * (byte / uint2)
输出图像。
CFATypeCFATypeCFATypeCFATypeCFATypecfatype (输入控制) string → HTuplestrHTupleHtuple (string) (string) (HString) (char*)
颜色滤波阵列类型。
默认值:
'bayer_gb'
"bayer_gb"
"bayer_gb"
"bayer_gb"
"bayer_gb"
"bayer_gb"
值列表:
'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"
InterpolationInterpolationInterpolationInterpolationinterpolationinterpolation (输入控制) string → HTuplestrHTupleHtuple (string) (string) (HString) (char*)
插值类型。
默认值:
'bilinear'
"bilinear"
"bilinear"
"bilinear"
"bilinear"
"bilinear"
值列表:
'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_rgbCfaToRgbCfaToRgbCfaToRgbcfa_to_rgb 在所有参数正确时返回 2 (H_MSG_TRUE)。当输入为空时,可设置行为通过算子 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>)set_system("no_object_result", <Result>)。如有必要,则抛出异常。
可能的前趋
gen_image1_externgen_image1_externGenImage1ExternGenImage1ExternGenImage1Externgen_image1_extern,
gen_image1gen_image1GenImage1GenImage1GenImage1gen_image1,
grab_imagegrab_imageGrabImageGrabImageGrabImagegrab_image
可能的后继
decompose3decompose3Decompose3Decompose3Decompose3decompose3
另见
trans_from_rgbtrans_from_rgbTransFromRgbTransFromRgbTransFromRgbtrans_from_rgb
模块
基础