2.16. 在 V4L2 中定义色彩空间

在 V4L2 中,色彩空间由四个值定义。第一个是色彩空间标识符 (枚举 v4l2_colorspace),它定义了色度、默认传递函数、默认 Y’CbCr 编码和默认量化方法。第二个是传递函数标识符 (枚举 v4l2_xfer_func),用于指定非标准传递函数。第三个是 Y’CbCr 编码标识符 (枚举 v4l2_ycbcr_encoding),用于指定非标准 Y’CbCr 编码,第四个是量化标识符 (枚举 v4l2_quantization),用于指定非标准量化方法。大多数情况下,只需要填写 struct v4l2_pix_format 或 struct v4l2_pix_format_mplane 的色彩空间字段。

HSV 格式 中,“色调”被定义为圆柱形颜色表示中的角度。通常,这个角度以度为单位测量,即 0-360 度。当我们将这个角度值映射到 8 位时,有两种基本方法:将角度值除以 2 (0-179),或使用整个范围 0-255,将角度值除以 1.41。枚举 v4l2_hsv_encoding 指定使用哪种编码。

注意

所有色彩空间的默认 R’G’B’ 量化都是全范围。HSV 格式始终是全范围。

type v4l2_colorspace
V4L2 色彩空间

标识符

详细信息

V4L2_COLORSPACE_DEFAULT

默认色彩空间。应用程序可以使用此选项让驱动程序填写色彩空间。

V4L2_COLORSPACE_SMPTE170M

请参阅 色彩空间 SMPTE 170M (V4L2_COLORSPACE_SMPTE170M)

V4L2_COLORSPACE_REC709

请参阅 色彩空间 Rec. 709 (V4L2_COLORSPACE_REC709)

V4L2_COLORSPACE_SRGB

请参阅 色彩空间 sRGB (V4L2_COLORSPACE_SRGB)

V4L2_COLORSPACE_OPRGB

请参阅 色彩空间 opRGB (V4L2_COLORSPACE_OPRGB)

V4L2_COLORSPACE_BT2020

请参阅 色彩空间 BT.2020 (V4L2_COLORSPACE_BT2020)

V4L2_COLORSPACE_DCI_P3

请参阅 色彩空间 DCI-P3 (V4L2_COLORSPACE_DCI_P3)

V4L2_COLORSPACE_SMPTE240M

请参阅 色彩空间 SMPTE 240M (V4L2_COLORSPACE_SMPTE240M)

V4L2_COLORSPACE_470_SYSTEM_M

请参阅 色彩空间 NTSC 1953 (V4L2_COLORSPACE_470_SYSTEM_M)

V4L2_COLORSPACE_470_SYSTEM_BG

请参阅 色彩空间 EBU Tech. 3213 (V4L2_COLORSPACE_470_SYSTEM_BG)

V4L2_COLORSPACE_JPEG

请参阅 色彩空间 JPEG (V4L2_COLORSPACE_JPEG)

V4L2_COLORSPACE_RAW

原始色彩空间。这用于原始图像捕获,其中图像经过最小处理,并使用设备的内部色彩空间。使用此“色彩空间”处理图像的软件必须了解捕获设备的内部结构。

type v4l2_xfer_func
V4L2 传递函数

标识符

详细信息

V4L2_XFER_FUNC_DEFAULT

使用色彩空间定义的默认传递函数。

V4L2_XFER_FUNC_709

使用 Rec. 709 传递函数。

V4L2_XFER_FUNC_SRGB

使用 sRGB 传递函数。

V4L2_XFER_FUNC_OPRGB

使用 opRGB 传递函数。

V4L2_XFER_FUNC_SMPTE240M

使用 SMPTE 240M 传递函数。

V4L2_XFER_FUNC_NONE

不使用传递函数(即使用线性 RGB 值)。

V4L2_XFER_FUNC_DCI_P3

使用 DCI-P3 传递函数。

V4L2_XFER_FUNC_SMPTE2084

使用 SMPTE 2084 传递函数。请参阅 传递函数 SMPTE 2084 (V4L2_XFER_FUNC_SMPTE2084)

type v4l2_ycbcr_encoding
V4L2 Y’CbCr 编码

标识符

详细信息

V4L2_YCBCR_ENC_DEFAULT

使用色彩空间定义的默认 Y’CbCr 编码。

V4L2_YCBCR_ENC_601

使用 BT.601 Y’CbCr 编码。

V4L2_YCBCR_ENC_709

使用 Rec. 709 Y’CbCr 编码。

V4L2_YCBCR_ENC_XV601

使用扩展色域 xvYCC BT.601 编码。

V4L2_YCBCR_ENC_XV709

使用扩展色域 xvYCC Rec. 709 编码。

V4L2_YCBCR_ENC_BT2020

使用默认的非恒定亮度 BT.2020 Y’CbCr 编码。

V4L2_YCBCR_ENC_BT2020_CONST_LUM

使用恒定亮度 BT.2020 Yc’CbcCrc 编码。

V4L2_YCBCR_ENC_SMPTE_240M

使用 SMPTE 240M Y’CbCr 编码。

type v4l2_hsv_encoding
V4L2 HSV 编码

标识符

详细信息

V4L2_HSV_ENC_180

对于色调,每个 LSB 是两度。

V4L2_HSV_ENC_256

对于色调,360 度映射到 8 位,即每个 LSB 大约是 1.41 度。

type v4l2_quantization
V4L2 量化方法

标识符

详细信息

V4L2_QUANTIZATION_DEFAULT

使用色彩空间定义的默认量化编码。对于 R’G’B’ 和 HSV,这始终是全范围。对于 Y’CbCr,通常是有限范围。

V4L2_QUANTIZATION_FULL_RANGE

使用全范围量化编码。即,范围 [0…1] 映射到 [0…255](可能会被裁剪到 [1…254] 以避免 0x00 和 0xff 值)。Cb 和 Cr 从 [-0.5…0.5] 映射到 [0…255](可能会被裁剪到 [1…254] 以避免 0x00 和 0xff 值)。

V4L2_QUANTIZATION_LIM_RANGE

使用有限范围量化编码。即,范围 [0…1] 映射到 [16…235]。Cb 和 Cr 从 [-0.5…0.5] 映射到 [16…240]。有限范围不能与 HSV 一起使用。