デジタル ウィンドウの概要

2 つの新しいデジタル ウィンドウ制御は、高解像度のネイティブ センサーを備えたカメラのデジタル パン、チルト、ズームのメカニズムを提供します。これにより、アプリケーションは、カメラ センサーからの最適な忠実度を維持しながら、会議室内の顔やマーカー ボードなどのオブジェクトに自動的に焦点を合わせることできます。

これにより、アプリケーションは、メディアの解像度を変更することなく、このようなオブジェクトのより詳細な画像を取得できます。 デジタル ウィンドウ MSXU 制御は、個々のパイプまたはエンドポイントではなく、カメラ センサー全体を対象とします。

デジタル ウィンドウ 制御 MSXU_CONTROL_DIGITALWINDOW

デジタル ウィンドウ MSXU 制御は、カメラのストリーミング中にカメラの視野とズームを指定します。 この制御は、パン、チルト、ズームの代替となる可能性があります。 この制御は、カメラがアクティブにストリーミングしている間にのみ適用されます。

詳細については、「USB ビデオ クラスの Microsoft 拡張機能仕様(1.5 バージョン )」セクション 2.2.2.11 「デジタル ウィンドウ コントロール」を参照してください。

デジタル ウィンドウ構成制御 MSXU_CONTROL_DIGITALWINDOW_CONFIG

デジタル ウィンド 構成 MSXU 制御は、使用可能なすべての解像度を持つカメラのスケーリング制限を指定します。 解像度はメディア タイプに依存しないため、同じディスプレイ解像度をアドバタイズする 2 つのメディアタイプが 1 つの機能に組み合わされます。

詳細については、「USB ビデオ クラスの Microsoft 拡張機能仕様(1.5 バージョン )」セクション 2.2.2.12 「デジタル ウィンドウ 構成制御」を参照してください。

実装の概要

次の図は、カメラによってキャプチャされた一般的な会議室シーンを示しています。

full sensor capture.

イメージ センサーは、クライアント アプリケーションにストリーミングされた画像以上のもの(赤い境界ボックスに表示されます)をキャプチャします。 オレンジ色の境界ボックスは、選択したアスペクト比を持つカメラによってキャプチャされた視野を示しています。 デジタル ウィンドウ制御のデフォルトの境界ボックスは、このオレンジ色のボックスです。 側面に沿って指定された座標は、このボックスの境界を示します。 センサーの出力は、このボックスからの出力メディア解像度に合わせて適切にトリミングおよびスケーリングされます。

画像内で呼び出されたマーカー ボードは、関心のあるオブジェクトです。 アプリケーションがこのオブジェクトに焦点を当てたい場合は、そのオブジェクトを囲むようにデジタル ウィンドウを設定することができます。

digital window scaled cropped.

この例では、緑色の境界ボックスはデジタル ウィンドウ制御を介して設定されます。 このボックスは、主なオブジェクトであるマーカーボードを囲んでいます。 矩形は、オブジェクトが矩形でなかったり、横から見ていなかったり、メディア タイプと同じアスペクト比を持っていなかったりするため、関心のあるオブジェクトの外側にあるデータを含んでいる可能性があります。

デジタル ウィンドウは出力フォーマットのアスペクト比を維持し、カメラはそれに合わせてセンサー出力をアップスケールします。 指定された座標は、常に元のデフォルトの境界ボックスからの相対座標です。

UVC 1.5 デジタル ウィンドウ制御との関係

以下の新しいデジタル ウィンドウ MSXU 制御は、セクション 4.2.2.1.19 「デジタル ウィンドウ制御」の UVC 1.5 クラス仕様で見つかった CT_DIGITAL_WINDOW_CONTROL とほぼ同じ機能を実行します。

UVC 1.5 クラス仕様.pdfは、USB ビデオ クラス仕様 Web サイトからダウンロードできます。

ただし、重要な違いがいくつかあります。

拡張

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 制御の関心領域を検出、報告、更新するために使用されます。 理論的には、CT_REGION_OF_INTEREST_CONTROL は、AutoUpdate 制御として実装されている場合に利用できます。これにより、カメラ ドライバーはその制御を利用して CT_DIGITAL_WINDOW_CONTROL を同期してパン、チルト、ズームすることができます。

この新しい制御を使用すると、顔の追跡を直接制御して、デジタルでチルト、パン、またはズームすることで視野を調整し、顔をできるだけ多く見える状態に保つことができます。 さらに、この制御で使用される顔追跡は、関心制御のどの領域からも独立しています。

顔追跡の方法は実装に依存します。

フレームごとのメタデータ

元の UVC 1.5 には、フレームごとのメタデータの概念がありません。 Microsoft は、フレームのペイロード ヘッダーに埋め込まれたメタデータをサポートするように UVC 仕様を拡張しました。 このサポートを有効にするには、MSXU_CONTROL_METADATA 制御を使用します。

さらに、CT_DIGITAL_WINDOW_CONTROLでは、制御が同期更新か非同期更新か自動更新かを指定しません。 さらに、制御には、カメラ自体による変更のアニメーションに使用されるステップ情報が含まれています。 これは、デジタルパン、チルト、ズームが完了するまでにかなりの時間がかかる可能性があることを意味します。 ただし、制御は新しい座標に設定されていたため、完了するまでにどのくらいの時間がかかり、移行が完了したことをいつ、どのように報告するかは不明です。 さらに悪いことに、視野内の現在のフレームがどこから発生したかについての情報はありません。

このあいまいさは、カメラによって挿入されたフレームごとのメタデータで解決できますが、フレームごとのメタデータが UVC 仕様の範囲外であるため、フレームごとのメタデータを直接サポートするために CT_DIGITAL_WINDOW_CONTROL を必要とすることはできません。

アスペクト比

CT_DIGITAL_WINDOW_CONTROL が異なるアスペクト比をどのように処理するかは不明または未定義です。 視野を正しくクロップするには、UVC 1.5 制御によって報告される GET_DEF および GET_CUR の値を、プローブ/コミットのたびに現在のアスペクトに一致するように変更する必要があります。 これを正しく処理するには、CT_DIGITAL_WINDOW_CONTROL が AutoUpdate 制御である必要があり、ドライバーは GET_DEF 結果をキャッシュせずに、カメラによって公開されるすべての解像度に対してこの値を再度クエリする必要があります。

この複雑さは、デジタル ウィンドウ制御を特定の解像度に対応させようとする際に、発見上の問題を引き起こす可能性があります。 カメラでサポートされているすべてのメディア タイプでプローブまたはコミットを実行するまで、カメラがデフォルトでセンサーの視野のどの部分を使用するか、事前にわからない場合があります。 これは、ある解像度のポーチ値を発見する際に潜在的な問題を引き起こします。なぜなら、ポーチ値は、センサーで利用可能な全視野に対する、そのフォーマットで通常使用されているセンサーの視野に依存するからです。

機能

デジタル ウィンドウは、いくつかの既存の制御に関連しています。

  • パン

  • 傾斜

  • ズーム

カメラがこれらの制御のいずれかにデジタル実装を使用する場合は、デジタル ウィンドウによって報告される値を同じ視野に合わせて変更する必要があります。 同様に、デジタル ウィンドウでは、これらの制御によって報告される値を変更する必要があります。 これらの制御のすべてのデジタル実装は、同期を維持するために互いに更新する必要があります。

Microsoft では、これらの制御間の関係を定義せず、最後に設定された制御が優先されるだけです。

目的領域

デジタル ウィンドウは見かけの視野(FOV)を変更するため、関心領域(ROI)制御で選択した座標は、この制御に SET が発行されるたびにデフォルトにリセットされる必要があります。 現在の 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 を介して、または生のメタデータ バッファーに MetadataId_DigitalWindow (値 7) 属性を含めることで提供できます。 メタデータ属性を含める方法については、セクション 2.2.3.1 「Microsoft 標準フォーマットのメタデータ」で詳しく説明します。

このメタデータは、現在のサンプルに適用されているデジタル ウィンドウを報告するために使用されます。 これは、KSCAMERA_METADATA_ITEMHEADER を MetadataId_DigitalWindow の値と構造体のサイズで初期化し、適用された 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