cfa_to_rgbcfa_to_rgbCfaToRgbCfaToRgbcfa_to_rgb彩色滤光片阵列至红绿蓝(算子)

名称

cfa_to_rgbcfa_to_rgbCfaToRgbCfaToRgbcfa_to_rgb — 将单通道彩色滤光片阵列 CFA(Color Filter Array)图像转换为 RGB 图像。

签名

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   ( Windows only)

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

HImage HImage.CfaToRgb(string CFAType, string interpolation)

def cfa_to_rgb(cfaimage: HObject, cfatype: str, interpolation: str) -> HObject

描述

cfa_to_rgbcfa_to_rgbCfaToRgbCfaToRgbCfaToRgbcfa_to_rgb 将单通道彩色滤光片阵列图像 CFAImageCFAImageCFAImageCFAImageCFAImagecfaimage 转换为 RGB 图像 RGBImageRGBImageRGBImageRGBImageRGBImagergbimage。彩色滤光片阵列图像通常由单芯片 CCD 相机生成。从彩色滤光片阵列图像到 RGB 图像的转换通常在相机本身完成,或由用于抓取图像的帧抓取卡设备驱动程序执行。然而,在某些情况下,设备驱动程序会直接将彩色滤光片阵列图像未经修改地传递过去。在此情况下,对应的 HALCON 帧抓取接口通常会将图像转换为 RGB 图像。因此,当图像并非通过 HALCON 帧抓取接口(如 grab_imagegrab_imageGrabImageGrabImageGrabImagegrab_imagegrab_image_asyncgrab_image_asyncGrabImageAsyncGrabImageAsyncGrabImageAsyncgrab_image_async)获取,而是通过帧抓取 SDK 的函数调用抓取,并使用 gen_image1gen_image1GenImage1GenImage1GenImage1gen_image1gen_image1_externgen_image1_externGenImage1ExternGenImage1ExternGenImage1Externgen_image1_extern 传递至 HALCON 时,通常会使用 cfa_to_rgbcfa_to_rgbCfaToRgbCfaToRgbCfaToRgbcfa_to_rgb 算子进行转换。

在单芯片 CCD 相机中,传感器前方的彩色滤光片阵列提供(子采样)的色彩信息。最常用的滤光片是所谓的拜耳滤光片。在此情况下,彩色滤光片阵列的布局如下: 输入图像 CFAImageCFAImageCFAImageCFAImageCFAImagecfaimage 的每个灰度值对应于其后方像素在对应彩色滤光片下的亮度值。因此,在上述布局中,像素(0,0)对应绿色值,而像素(0,1)对应蓝色值。拜耳滤光片布局完全由图像首行前两个元素决定,可通过参数 CFATypeCFATypeCFATypeCFATypeCFATypecfatype 进行选择。这尤其能确保正确转换从大图像裁剪出的滤光片阵列图像(例如使用 crop_partcrop_partCropPartCropPartCropPartcrop_partcrop_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 的倍数,否则操作速度将大幅降低。

执行信息

参数

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

模块

基础