數字視窗概觀
兩個新的數位視窗控件可為提供高解析度原生感測器的相機提供數位平移、傾斜和縮放的機制,讓應用程式可以選擇性地將焦點放在會議室中的臉部或標記板等對象,同時保留相機感測器的最佳逼真度。
這可讓應用程式取得這類對象的詳細數據影像,而不需要變更媒體解析度。 數字視窗 MSXU 控制件會以整個相機感測器為目標,而不是個別管道或端點。
數字視窗 MSXU 控制件會指定相機串流時相機的檢視和縮放欄位。 此控件可能是平移、傾斜和縮放的替代專案。 此控件僅適用於相機主動串流時。
如需詳細資訊,請參閱 Microsoft 擴充功能中的 2.2.2.11 數字視窗控制件。
數字窗口設定 MSXU 控制件會指定相機的縮放限制,指定所有可用解析度。 解析度與媒體類型無關,因此兩種媒體類型廣告相同的顯示解析度會合併成一項功能。
如需詳細資訊,請參閱 Microsoft 延伸模組中的 2.2.2.12 數字視窗組態控件一節。
下圖說明相機所擷取的典型會議室場景。
影像感測器會擷取比串流至用戶端應用程式之影像更多的內容,如紅色周框方塊所示。 橙色周框方塊說明相機所擷取的檢視字段,因為選取的外觀比例。 對於數字視窗控件,預設周框方塊是這個橙色方塊。 沿著側邊指定的座標會顯示此方塊的界限。 感測器的輸出會裁剪並適當地調整為此方塊的輸出媒體解析度。
影像中指出的標記板是感興趣的物件。 如果應用程式想要將焦點放在這個物件上,它可能會設定數字視窗來包含它。
綠色周框方塊是透過本範例中的數字視窗控件來設定。 它包含感興趣的主要對象,標記板。 矩形可能包含不在感興趣的物件之外的數據,因為物件可能不是矩形,或者它可能不是從側面檢視,或者它可能沒有與媒體類型相同的外觀比例。
數位窗口會維持輸出格式的外觀比例,而相機會將感測器輸出向上調整以符合。 指定的座標一律與原始的預設周框方塊相對。
下方的新數字視窗 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 控制件中的功能或選項。
CT_DIGITAL_WINDOW_CONTROL沒有任何臉部追蹤的概念。 另一方面,CT_REGION_OF_INTEREST_CONTROL確實有這樣的概念,但這主要是用來偵測、報告並可能更新 3A 控件感興趣的區域。 理論上,如果它實作為 AutoUpdate 控件,就可以使用CT_REGION_OF_INTEREST_CONTROL,這可讓相機驅動程式利用該控件同步流覽、傾斜或縮放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結果,而是針對相機公開的每個解析度再次查詢此值。
嘗試將數字視窗控件對應至特定解析度時,這種複雜性可能會造成探索問題。 在相機支援的所有媒體類型上執行探查或認可之前,您可能事先不知道相機預設會使用感測器視野的哪個部分。 這會產生探索指定解析度之任何門廊值的潛在問題,因為這些值通常相依於感測器上可用的檢視總計欄位,而該格式通常取決於感測器上可用的檢視範圍總計。
數位視窗與數個現有的控制項相關:
移動瀏覽
傾斜
Zoom
如果相機針對這些控件使用數位實作,則必須變更 Digital Window 所報告的值,以符合相同的檢視字段。 同樣地,Digital Window 必須變更這些控件所報告的值。 這些控制件的所有數位實作都必須彼此更新,才能保持同步。
Microsoft 不會定義這些控件之間的關聯性,而且只會定義最後一個設定控件的優先順序。
因為數位視窗會變更明顯的檢視字段 (FOV),因此每當 SET 發出給此控件時,透過任何感興趣的區域 (ROI) 控制項選取的座標應該重設為預設值。 目前的 ROI 控制件清單包括:
KSPROPERTY_CAMERACONTROL_REGION_OF_INTEREST_PROPERTY_ID
KSPROPERTY_CAMERACONTROL_EXTENDED_ROI_CONFIGCAPS/ KSPROPERTY_CAMERACONTROL_EXTENDED_ROI_ISPCONTROL
此外,這些感興趣的區域控件會指定其相對於輸出視窗的區域,因此它們指定的座標一律是目前檢視欄位中的矩形。 由於數位視窗控制項會變更目前的視野,因此相機必須重新對應感興趣的區域矩形,以符合目前的數字視窗。 例如,如果目前的數字視窗具有 (OriginX, OriginY) 的 (0.0, 0.0) 和 WindowSize 為 0.5,而且如果指定了感興趣的區域 (0.0, 0.0), (0.5, 0.5), 相機必須將感興趣的區域矩形重新對應至預設檢視欄位中對應至 (0.0, 0.0), (0.25, 0.25, 0.25) 的圖元。 這應該與平移、傾斜和縮放控件的明顯行為類似且一致,這些感興趣區域控件。
由於可用的有效數字視窗值相依於目前的外觀比例,因此相機必須選取媒體類型和串流介面,才能強制執行 MinWindowSize。
回報的 NonUpscalingWindowSize 也會依解析度報告,但只會向應用程式提供資訊。 此值會通知應用程式要設定為 WindowSize 的值,以取得來源影像的升幅。 這可讓應用程式擷取相機感測器精確度範圍限制的影像。
如果相機公告MSXU_CONTROL_DIGITALWINDOW,MSXU_CONTROL_DIGITALWINDOW_CONFIG且已在MSXU_CONTROL_METADATA上設定非零的緩衝區大小,則相機必須針對每個畫面發出MF_CAPTURE_METADATA_DIGITAL_WINDOW屬性。 它可以透過裝置 MFT 或原始元數據緩衝區中包含MetadataId_DigitalWindow (值為 7) 屬性來提供此功能。 如何在第 2.2.3.1 節 Microsoft 標準格式元數據中 進一步說明包含元數據屬性。
此元數據可用來報告套用至目前範例的數字視窗。 其作法是使用值MetadataId_DigitalWindow和結構的大小初始化KSCAMERA_METADATA_ITEMHEADER,然後從數字視窗控件將套用 的 OriginX、 OriginY 和 WindowSize 值複製到相關聯的KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_SETTING結構。
Section 2.2.2.12 Digital Window Config Control
第 2.2.3.1 節 Microsoft Standard 格式元數據
KSPROPERTY_CAMERACONTROL_EXTENDED_DIGITALWINDOW_CONFIGCAPS
KSPROPERTY_CAMERACONTROL_EXTENDED_DIGITALWINDOW
KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_CONFIGCAPS
KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_CONFIGCAPSHEADER