数字窗口概述

两个新的数字窗口控件为提供高分辨率本机传感器的相机提供了数字平移、倾斜和缩放机制,以便应用程序可以选择性地对焦在会议室中的人脸或标记板等对象上,同时保持相机传感器的最佳保真度。

这使应用程序能够获取此类对象的更详细图像,而无需更改媒体分辨率。 数字窗口 MSXU 控件面向整个相机传感器,而不是单个管道或终结点。

数字窗口控制MSXU_CONTROL_DIGITALWINDOW

数字窗口 MSXU 控件指定相机流式传输时相机的视野和缩放。 此控件是“平移”、“倾斜”和“缩放”的可能替代项。 此控件仅在相机主动流式传输时适用。

有关详细信息,请参阅 Microsoft 扩展 USB 视频类 1.5 规范中的 2.2.2.11部分数字窗口控制

数字窗口配置控制MSXU_CONTROL_DIGITALWINDOW_CONFIG

数字窗口配置 MSXU 控件指定相机的缩放限制(给定所有可用分辨率)。 分辨率与媒体类型无关,因此广告相同显示分辨率的两种媒体类型合并为一个功能。

有关详细信息,请参阅 Microsoft 扩展 USB 视频类 1.5 规范中的 2.2.2.12数字窗口配置控制部分。

实现概述

下图演示了相机捕获的典型会议室场景。

完整传感器捕获。

图像传感器捕获的内容比流式传输到客户端应用程序的图像更多,后者显示在红色边界框中。 橙色边界框演示给定所选纵横比的相机捕获的视野。 对于数字窗口控件,默认边界框为此橙色框。 沿边给定的坐标显示此框的边界。 传感器的输出会根据此框的输出分辨率进行适当裁剪和缩放。

图像中标注的标记板是感兴趣的对象。 如果应用程序希望专注于此对象,它可能会设置一个数字窗口来包含它。

数字窗口缩放裁剪。

在此示例中,绿色边界框是通过数字窗口控件设置的。 它包含感兴趣的主要对象,即标记板。 矩形可能包含相关对象外部的数据,因为对象可能不是矩形,或者不能从一侧查看,或者它可能与媒体类型没有相同的纵横比。

数字窗口保持输出格式的纵横比,相机会放大传感器输出以匹配。 指定的坐标始终相对于原始的默认边界框。

与 UVC 1.5 数字窗口控件的关系

下面的新数字窗口 MSXU 控件执行的功能与 UVC 1.5 类规范第 4.2.2.1.19 节中的CT_DIGITAL_WINDOW_CONTROL几乎完全相同。

可以在 USB 视频类规范网站上下载 UVC 1.5 类 specification.pdf

但是,存在一些重要差异。

拉伸

指定的CT_DIGITAL_WINDOW_CONTROL允许应用程序将窗口设置为只受GET_MIN绑定的任意坐标集,GET_MAX和GET_RES值。 若要在输出窗口中适应此视场,此行为要求相机拒绝应为合法SET_CUR请求,或对可能水平或垂直扭曲图像的图像进行重新采样或重新缩放,即更改纵横比。

由于失真可能是不可取的,因此可以通过拒绝此类请求在CT_DIGITAL_WINDOW_CONTROL实现中避免,但数字窗口 MSXU 控件不会包含这种模糊性,而是在输出分辨率的纵横比下维护视野。 因此,重新缩放不是此 MSXU 控件中的功能或选项。

自动 Face-Framing

CT_DIGITAL_WINDOW_CONTROL没有任何人脸跟踪的概念。 另一方面,CT_REGION_OF_INTEREST_CONTROL确实有这样一个概念,但这主要用于检测、报告和可能更新 3A 控件的感兴趣区域。 理论上,CT_REGION_OF_INTEREST_CONTROL如果作为 AutoUpdate 控件实现,则可以使用它,这样相机驱动程序就可以利用该控件来同步平移、倾斜或缩放CT_DIGITAL_WINDOW_CONTROL。

此新控件允许直接控制人脸跟踪,通过以数字方式倾斜、平移或缩放来调整视场,使人脸尽可能多地可见。 此外,此控件上使用的人脸跟踪仍然独立于任何相关区域控制。

人脸跟踪的方法依赖于实现。

每帧元数据

原始 UVC 1.5 没有每帧元数据的概念。 Microsoft 扩展了 UVC 规范,以支持框架的有效负载标头中嵌入的元数据。 可以通过 MSXU_CONTROL_METADATA 控件启用此支持。

此外,CT_DIGITAL_WINDOW_CONTROL不指定控件是同步更新还是异步更新或自动更新。 此外,该控件还包含用于相机本身的更改动画的步进信息。 这意味着数字平移、倾斜和缩放可能需要很长时间才能完成。 但是,由于控件已设置为新坐标,因此不清楚完成转换需要多长时间,以及何时或如何报告转换已完成。 更糟的是,没有关于当前帧在视野中的何处来源的信息。

可以通过相机注入的每帧元数据来解决这种歧义,但不能要求CT_DIGITAL_WINDOW_CONTROL直接支持每帧元数据,因为每帧元数据超出了 UVC 规范的范围。

纵横比

目前还不清楚或未定义CT_DIGITAL_WINDOW_CONTROL如何处理不同的纵横比。 若要正确裁剪视野,UVC 1.5 控件报告的GET_DEF和GET_CUR值需要更改,以匹配每次探测/提交后的当前方面。 若要正确处理此问题,CT_DIGITAL_WINDOW_CONTROL应该是 AutoUpdate 控件,驱动程序不需要缓存GET_DEF结果,而是针对相机公开的每个分辨率再次查询此值。

尝试将数字窗口控件映射到特定解决方案时,这种复杂性可能会导致发现问题。 在对相机支持的所有媒体类型执行探测或提交之前,你可能事先不知道相机默认将使用传感器视野的哪个部分。 这会带来发现给定分辨率的任何门廊值的潜在问题,因为这些值依赖于通常由该格式使用的传感器的视场,相对于传感器上可用的总视野。

功能

数字窗口与多个现有控件相关:

  • 平移

  • Tilt

  • Zoom

如果相机对其中任何控件使用数字实现,则必须更改数字窗口报告的值,以匹配相同的视野。 同样,数字窗口必须更改这些控件报告的值。 这些控件的所有数字实现必须相互更新才能保持同步。

Microsoft 不定义这些控件之间的关系,仅定义最后一组控件优先。

感兴趣的区域

由于数字窗口更改了明显的视场 (FOV) ,因此每当向此控件发出 SET 时,应将任何相关区域选择的坐标 (ROI) 控件重置为默认值。 当前 ROI 控件的列表包括:

  • KSPROPERTY_CAMERACONTROL_REGION_OF_INTEREST_PROPERTY_ID

  • KSPROPERTY_CAMERACONTROL_EXTENDED_ROI_CONFIGCAPS / KSPROPERTY_CAMERACONTROL_EXTENDED_ROI_ISPCONTROL

此外,这些感兴趣区域控件指定其相对于输出窗口的区域,因此它们指定的坐标始终是当前视野中的矩形。 由于“数字窗口”控件更改了当前视野,因此相机必须重新映射“兴趣区域”矩形,以适应当前数字窗口。 例如,如果当前数字窗口具有 (OriginXOriginY) (0.0, 0.0) ,WindowSize 为 0.5,如果感兴趣区域 (0.0,0.0) , (0.5, 0.5) ,相机必须将感兴趣区域矩形重新映射到对应于 (0.0 的像素, 0.0) , (默认视野中的 0.25、0.25) 。 这应该与具有这些兴趣区域控件的平移、倾斜和缩放控件的明显行为相似且一致。

流式处理

由于可用的有效数字窗口值依赖于当前纵横比,因此相机必须选择媒体类型和流式处理接口才能强制执行 MinWindowSize

信息值

报告的 NonUpscalingWindowSize 也按分辨率报告,但它仅向应用程序提供信息。 此值告知应用程序要设置为 WindowSize 的值,以便不提升源图像。 这样,应用程序就可以在相机传感器保真度范围内的限制下捕获图像。

元数据属性

如果相机播发MSXU_CONTROL_DIGITALWINDOW、MSXU_CONTROL_DIGITALWINDOW_CONFIG并在MSXU_CONTROL_METADATA上设置了非零缓冲区大小,则相机必须针对每帧发出MF_CAPTURE_METADATA_DIGITAL_WINDOW属性。 它可以通过设备 MFT 或通过在原始元数据缓冲区中包含 7) 属性的MetadataId_DigitalWindow (值来提供此功能。 第 2.2.3.1 节 Microsoft 标准格式元数据中进一步介绍了如何包含元数据属性。

此元数据用于报告应用于当前示例的数字窗口。 它通过使用值MetadataId_DigitalWindow和结构的大小初始化KSCAMERA_METADATA_ITEMHEADER,并将数字窗口控件中应用的 OriginXOriginYWindowSize 值复制到关联的KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_SETTING结构中来执行此操作。

另请参阅

第 2.2.2.11 部分数字窗口控制

第 2.2.2.12 部分数字窗口配置控制

第 2.2.3.1 部分 Microsoft 标准格式元数据

USB 视频类规范

KSPROPERTY_CAMERACONTROL_EXTENDED_DIGITALWINDOW_CONFIGCAPS

KSPROPERTY_CAMERACONTROL_EXTENDED_DIGITALWINDOW

KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_CONFIGCAPS

KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_CONFIGCAPSHEADER

KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_SETTING

KSCAMERA_METADATA_DIGITALWINDOW