2.13.2. V4L2_META_FMT_D4XX (‘D4XX’)¶
Intel D4xx UVC 摄像头元数据
2.13.2.1. 描述¶
Intel D4xx(D435、D455 及其他)摄像头在其 UVC 有效负载头部中包含每帧元数据,遵循 Microsoft(R) UVC 扩展提案 [1]。这意味着,在标准 UVC 头部之后的私有 D4XX 元数据以块的形式组织。D4XX 摄像头实现了 Microsoft 提出的几种标准块类型以及几种专有块类型。支持的标准元数据类型包括 MetadataId_CaptureStats(ID 3)、MetadataId_CameraExtrinsics(ID 4)和 MetadataId_CameraIntrinsics(ID 5)。有关其描述,请参阅 [1]。本文档描述了 D4xx 摄像头使用的专有元数据类型。
V4L2_META_FMT_D4XX 缓冲区遵循 V4L2_META_FMT_UVC 的元数据缓冲区布局,唯一的区别是它还包含专有的有效负载头部数据。D4xx 摄像头使用批量传输,每帧只发送一个有效负载,因此它们的头部不能大于 255 字节。
本文档实现了 Intel 配置版本 3 [9]。
以下是 D4xx 摄像头使用的专有 Microsoft 风格元数据类型,所有字段均为小端序
字段 |
描述 |
---|---|
深度控制 |
|
__u32 ID |
0x80000000 |
__u32 Size |
大小(字节),包含 ID(所有协议版本:60) |
__u32 Version |
本结构的版本。本文档涵盖版本 1、2 和 3。添加新字段时,版本号将递增。 |
__u32 Flags |
标志位掩码:请参阅 [2] 下文 |
__u32 Gain |
增益值(内部单位),与用于捕获帧的 V4L2_CID_GAIN 控制相同 |
__u32 Exposure |
曝光时间(微秒),用于捕获帧 |
__u32 Laser power |
激光 LED 功率 0-360,用于深度测量 |
__u32 AE mode |
0: 手动;1: 自动曝光 |
__u32 Exposure priority |
曝光优先级值:0 - 恒定帧率 |
__u32 AE ROI left |
AE 感兴趣区域的左边界(所有 ROI 值均以像素为单位,介于 0 和最大宽度或高度之间) |
__u32 AE ROI right |
AE 感兴趣区域的右边界 |
__u32 AE ROI top |
AE 感兴趣区域的上边界 |
__u32 AE ROI bottom |
AE 感兴趣区域的下边界 |
__u32 Preset |
预设选择器值,默认值:0,除非用户更改 |
__u8 Emitter mode (v3 only) (__u32 Laser mode for v1) [8] |
0: 关,1: 开,与 v1 中的 __u32 Laser 模式相同 |
__u8 RFU byte (v3 only) |
备用字节,供将来使用 |
__u16 LED Power (v3 only) |
LED 功率值 0-360 (F416 SKU) |
捕获时序 |
|
__u32 ID |
0x80000001 |
__u32 Size |
大小(字节),包含 ID(所有协议版本:40) |
__u32 Version |
本结构的版本。本文档对应版本 xxx。添加新字段时,版本号将递增。 |
__u32 Flags |
标志位掩码:请参阅 [3] 下文 |
__u32 Frame counter |
单调递增计数器 |
__u32 Optical time |
从帧开始到帧中间的微秒时间 |
__u32 Readout time |
用于读取帧的微秒时间 |
__u32 Exposure time |
帧曝光时间(微秒) |
__u32 Frame interval |
微秒 = 1000000 / 帧率 |
__u32 Pipe latency |
从帧开始到 USB 缓冲区数据写入的微秒时间 |
配置 |
|
__u32 ID |
0x80000002 |
__u32 Size |
大小(字节),包含 ID (v1:36, v3:40) |
__u32 Version |
本结构的版本。本文档对应版本 xxx。添加新字段时,版本号将递增。 |
__u32 Flags |
标志位掩码:请参阅 [4] 下文 |
__u8 Hardware type |
摄像头硬件版本 [5] |
__u8 SKU ID |
摄像头硬件配置 [6] |
__u32 Cookie |
内部同步 |
__u16 Format |
图像格式代码 [7] |
__u16 Width |
宽度(像素) |
__u16 Height |
高度(像素) |
__u16 Framerate |
每秒请求帧率 |
__u16 Trigger |
字节 0:位 0:深度和 RGB 同步,位 1:外部触发 |
__u16 Calibration count (v3 only) |
校准计数器,请参阅 [4] 下文 |
__u8 GPIO input data (v3 only) |
GPIO 读取,请参阅 [4] 下文(从 FW 5.12.7.0 开始支持) |
__u32 Sub-preset info (v3 only) |
子预设选择信息,请参阅 [4] 下文 |
__u8 reserved (v3 only) |
RFU 字节。 |
[1] https://docs.microsoft.com/en-us/windows-hardware/drivers/stream/uvc-extensions-1-5
[2] 深度控制标志指定哪些字段有效
0x00000001 Gain
0x00000002 Exposure
0x00000004 Laser power
0x00000008 AE mode
0x00000010 Exposure priority
0x00000020 AE ROI
0x00000040 Preset
0x00000080 Emitter mode
0x00000100 LED Power
[3] 捕获时序标志指定哪些字段有效
0x00000001 Frame counter
0x00000002 Optical time
0x00000004 Readout time
0x00000008 Exposure time
0x00000010 Frame interval
0x00000020 Pipe latency
[4] 配置标志指定哪些字段有效
0x00000001 Hardware type
0x00000002 SKU ID
0x00000004 Cookie
0x00000008 Format
0x00000010 Width
0x00000020 Height
0x00000040 Framerate
0x00000080 Trigger
0x00000100 Cal count
0x00000200 GPIO Input Data
0x00000400 Sub-preset Info
[5] 摄像头型号
0 DS5
1 IVCAM2
[6] 8 位摄像头硬件配置位域
[1:0] depthCamera
00: no depth
01: standard depth
10: wide depth
11: reserved
[2] depthIsActive - has a laser projector
[3] RGB presence
[4] Inertial Measurement Unit (IMU) presence
[5] projectorType
0: HPTG
1: Princeton
[6] 0: a projector, 1: an LED
[7] reserved
[7] 各视频流接口的图像格式代码
深度
1 Z16
2 Z
左侧传感器
1 Y8
2 UYVY
3 R8L8
4 Calibration
5 W10
鱼眼传感器
1 RAW8
[8] “激光模式”在版本 3 中被替换为三个不同的字段。“激光”已更名为“发射器”,因为摄像头投影仪有多种技术。由于我们有另一个“激光功率”字段,我们引入了“LED 功率”作为额外的发射器。
- “激光模式”__u32 字段已拆分为::
1 __u8 Emitter mode 2 __u8 RFU byte 3 __u16 LED Power
这是版本 1 和版本 3 之间的更改。所有版本 1、2 和 3 都与相同的数据格式向后兼容,并且都受支持。有关哪些属性有效,请参阅 [2]。
[9] LibRealSense SDK 元数据源: https://github.com/IntelRealSense/librealsense/blob/master/src/metadata.h