Übersicht über das digitale Fenster

Zwei neue Digitale Fenster-Steuerelemente bieten einen Mechanismus für digitale Verschiebung, Neigung und Zoom für Kameras, die hochauflösende native Sensoren bieten, sodass eine Anwendung sich automatisch selektiv auf Objekte wie Gesichter oder Markerboards in einem Konferenzraum konzentrieren kann, während die optimale Genauigkeit vom Kamerasensor erhalten bleibt.

Auf diese Weise können Anwendungen Bilder mit höheren Details von solchen Objekten abrufen, ohne dass Medienauflösungen geändert werden müssen. Die MSXU-Steuerelemente für digitale Fenster zielen auf den gesamten Kamerasensor und nicht auf ein einzelnes Rohr oder Endpunkt ab.

Digitale Fenstersteuerung MSXU_CONTROL_DIGITALWINDOW

Das MsXU-Steuerelement "Digital Window" gibt das Ansichtsfeld und den Zoom der Kamera an, während die Kamera gestreamt wird. Dieses Steuerelement ist ein potenzieller Ersatz für "Schwenken", "Neigen" und "Zoom". Dieses Steuerelement gilt nur, wenn die Kamera aktiv gestreamt wird.

Ausführliche Informationen finden Sie unter Abschnitt 2.2.2.11 Digital Window Control in den Microsoft-Erweiterungen für USB Video Class 1.5 .

Digital Window Config Control MSXU_CONTROL_DIGITALWINDOW_CONFIG

Das MsXU-Steuerelement "Digital Window Config" gibt die Skalierungsgrenzwerte der Kamera an, die alle verfügbaren Auflösungen aufweisen. Auflösungen sind unabhängig vom Medientyp, sodass zwei Medientypen, die dieselbe Anzeigeauflösung anzeigen, in einer Funktion kombiniert werden.

Ausführliche Informationen finden Sie unter Abschnitt 2.2.2.12 Digital Window Config Control in den Microsoft-Erweiterungen für USB Video Class 1.5 .

Implementierungsübersicht

Die folgende Abbildung zeigt eine typische Konferenzraumszene, die von der Kamera erfasst wird.

Vollständige Sensorerfassung.

Der Bildsensor erfasst etwas mehr als das Bild, das an die Clientanwendung gestreamt wird, die im roten Begrenzungsfeld angezeigt wird. Das orange umgebende Feld veranschaulicht das von der Kamera erfasste Ansichtsfeld mit dem ausgewählten Seitenverhältnis. Für das digitale Fenstersteuerelement ist das standardmäßige umgebende Feld dieses orangefarbene Feld. Die auf der Seite angegebenen Koordinaten zeigen die Grenzen dieses Felds an. Die Ausgabe des Sensors wird zugeschnitten und entsprechend auf die Ausgabemedienauflösung aus diesem Feld skaliert.

Das markierungsbrett, das im Bild aufgerufen wird, ist ein Objekt von Interesse. Wenn sich eine Anwendung auf dieses Objekt konzentrieren möchte, kann es ein digitales Fenster festlegen, um es einzuschließen.

Digitales Fenster skaliert zugeschnitten.

Das grüne Begrenzungsfeld wird über das Digital Window-Steuerelement in diesem Beispiel festgelegt. Es umfasst das primäre Objekt von Interesse, das Markerboard. Das Rechteck kann Daten enthalten, die sich außerhalb des interessanten Objekts befinden, da das Objekt möglicherweise nicht rechteckig ist oder nicht von der Seite aus angezeigt wird oder nicht dasselbe Seitenverhältnis wie der Medientyp aufweist.

Das digitale Fenster Standard das Seitenverhältnis des Ausgabeformats und die Kamera passt die Sensorausgabe entsprechend an. Die angegebenen Koordinaten sind immer relativ zum ursprünglichen, standardmäßigen Begrenzungsfeld.

Beziehung zu UVC 1.5 Digital Window Control

Die folgenden neuen MSXU-Steuerelemente für digitale Fenster führen eine Funktion aus, die fast identisch mit dem CT_DIGITAL_WINDOW_CONTROL in uvC 1.5 Klassenspezifikation unter Abschnitt 4.2.2.1.19 Digital Window Control gefundenen ist.

Die UVC 1.5 Class specification.pdf kann auf der Website der USB-Videoklasse heruntergeladen werden.

Es gibt jedoch einige wichtige Unterschiede.

Stretching

Die CT_DIGITAL_WINDOW_CONTROL, wie angegeben, ermöglicht es einer Anwendung, das Fenster auf einen beliebigen Satz von Koordinaten festzulegen, die nur an die GET_MIN, GET_MAX und GET_RES Werte gebunden sind. Damit dieses Ansichtsfeld innerhalb des Ausgabefensters passt, muss die Kamera entweder ablehnen, was legal sein sollte, SET_CUR Anforderungen oder um Resampling oder Rescaling des Bilds zu implementieren, das das Bild möglicherweise horizontal oder vertikal verzerrt, d. h. das Seitenverhältnis ändern kann.

Da Verzerrungen wahrscheinlich unerwünscht sind, kann es in einer CT_DIGITAL_WINDOW_CONTROL Implementierung vermieden werden, indem solche Anforderungen abgelehnt werden, aber nicht das Steuerelement eine solche Mehrdeutigkeit enthält, Standard das Steuerelement "Digital Window MSXU" das Sichtfeld im Seitenverhältnis der Ausgabeauflösung enthält. Daher ist rescaling kein Feature oder eine Option in diesem MSXU-Steuerelement.

Auto Face-Framing

Die CT_DIGITAL_WINDOW_CONTROL hat kein Konzept der Gesichtsverfolgung. Andererseits hat die CT_REGION_OF_INTEREST_CONTROL ein solches Konzept, aber dies wird hauptsächlich verwendet, um den 3A-Steuerelementbereich zu erkennen, zu melden und potenziell zu aktualisieren. Theoretisch könnte CT_REGION_OF_INTEREST_CONTROL verwendet werden, wenn es als AutoUpdate-Steuerelement implementiert wird, das es einem Kameratreiber ermöglicht, dieses Steuerelement zum Schwenken, Kippen oder Zoomen der CT_DIGITAL_WINDOW_CONTROL synchron zu nutzen.

Dieses neue Steuerelement ermöglicht die direkte Steuerung der Gesichtsverfolgung, um das Sichtfeld anzupassen, indem sie kippen, schwenken oder zoomen, um so viel sichtbar wie praktisch zu halten. Darüber hinaus wird die gesichtsverfolgung, die für dieses Steuerelement verwendet wird, wieder Standard unabhängig von jeder Region von Interessensteuerung.

Die Methode der Gesichtsverfolgung ist abhängig.

Metadaten pro Frame

Der ursprüngliche UVC 1.5 verfügt nicht über ein Konzept der Metadaten pro Frame. Microsoft hat die UVC-Spezifikation erweitert, um Metadaten zu unterstützen, die in die Nutzlastheader des Frames eingebettet sind. Das Aktivieren dieser Unterstützung kann über das MSXU_CONTROL_METADATA-Steuerelement erfolgen.

Darüber hinaus gibt die CT_DIGITAL_WINDOW_CONTROL nicht an, ob das Steuerelement synchron oder asynchron oder automatisch aktualisiert wird. Darüber hinaus enthält das Steuerelement Schrittinformationen, die für die Animation der Änderung durch die Kamera selbst verwendet werden. Dies bedeutet, dass eine digitale Verschiebung, Neigung und Zoom viel Zeit in Anspruch nehmen kann. Da das Steuerelement jedoch auf neue Koordinaten festgelegt wäre, ist unklar, wie lange es dauern würde, bis das Steuerelement abgeschlossen ist und wann oder wie der Übergang zurückgesetzt wird. Schlimmer noch gibt es keine Informationen darüber, wo der aktuelle Frame aus dem Sichtfeld stammt.

Diese Mehrdeutigkeit könnte mit pro Frame-Metadaten aufgelöst werden, die von der Kamera eingefügt werden, aber es ist nicht möglich, CT_DIGITAL_WINDOW_CONTROL die Unterstützung von Metadaten pro Frame direkt zu erfordern, da die Metadaten pro Frame über den Umfang der UVC-Spezifikation hinausgehen.

Seitenverhältnisse

Es ist unklar oder nicht definiert, wie CT_DIGITAL_WINDOW_CONTROL unterschiedliche Seitenverhältnisse behandelt. Um das Sichtfeld korrekt zuzuschneiden, müssen die vom UVC 1.5-Steuerelement gemeldeten werte GET_DEF und GET_CUR Werte nach jedem Probe-/Commit entsprechend dem aktuellen Aspekt geändert werden. Um dies korrekt zu behandeln, sollte die CT_DIGITAL_WINDOW_CONTROL ein AutoUpdate-Steuerelement sein, und der Treiber muss das GET_DEF Ergebnis nicht zwischenspeichern, sondern diesen Wert für jede Auflösung, die von der Kamera verfügbar gemacht wird, erneut abfragen.

Diese Komplexität könnte bei dem Versuch, das digitale Fenstersteuerelement einer bestimmten Auflösung zuzuordnen, Probleme verursachen. Möglicherweise wissen Sie im Voraus nicht, welcher Teil des Ansichtsfelds des Sensors die Kamera standardmäßig verwenden würde, bis Sie eine Probe ausführen oder einen Commit für alle Medientypen ausführen, die von der Kamera unterstützt werden. Dies stellt potenzielle Probleme bei der Ermittlung von Veranschaulichungswerten für eine bestimmte Auflösung dar, da diese vom Ansichtsfeld des Sensors normalerweise abhängig sind, das von diesem Format relativ zum gesamt auf dem Sensor verfügbaren Sichtfeld verwendet wird.

Funktionalität

Das digitale Fenster ist mit mehreren vorhandenen Steuerelementen verknüpft:

  • Schwenken

  • Neigung

  • Zoom

Wenn die Kamera digitale Implementierungen für eines dieser Steuerelemente verwendet, müssen sie die von Digital Window gemeldeten Werte so ändern, dass sie mit demselben Ansichtsfeld übereinstimmen. Ebenso muss das digitale Fenster die von diesen Steuerelementen gemeldeten Werte ändern. Alle digitalen Implementierungen dieser Steuerelemente müssen sich gegenseitig aktualisieren, damit sie synchronisiert werden Standard.

Microsoft definiert nicht die Beziehung zwischen diesen Steuerelementen und nur, dass das zuletzt festgelegte Steuerelement Vorrang hat.

Interessenbereiche

Da das digitale Fenster das scheinbare Ansichtsfeld (Field of View, FOV) ändert, sollten Koordinaten, die über eine beliebige Region von Interesse (ROI) ausgewählt wurden, auf ihre Standardwerte zurückgesetzt werden, wenn ein SET für dieses Steuerelement ausgegeben wird. Die Liste der aktuellen ROI-Steuerelemente umfasst:

  • KSPROPERTY_CAMERACONTROL_REGION_OF_INTEREST_PROPERTY_ID

  • KSPROPERTY_CAMERACONTROL_EXTENDED_ROI_CONFIGCAPS /KSPROPERTY_CAMERACONTROL_EXTENDED_ROI_ISPCONTROL

Darüber hinaus geben diese Regions-of-Interest-Steuerelemente ihre Regionen relativ zum Ausgabefenster an, sodass die angegebenen Koordinaten immer ein Rechteck im aktuellen Ansichtsfeld sind. Da das Steuerelement "Digitales Fenster" das aktuelle Ansichtsfeld ändert, muss ein Rechteck "Region von Interesse" von der Kamera neu zugeordnet werden, damit es in das aktuelle digitale Fenster passt. Wenn z. B. das aktuelle digitale Fenster einen (OriginX, OriginY) von (0,0) aufweist, 0.0) und eine WindowSize von 0,5 und wenn eine Region von (0,0, 0,0), (0,5, 0,5) angegeben ist, muss die Kamera das Rechteck region of Interest zu den Pixeln neu zuordnen, die (0,0, 0,0), (0,25, 0,25) im Standardfeld der Ansicht entsprechen. Dies sollte mit dem scheinbaren Verhalten der Verschiebungs-, Neigungs- und Zoomsteuerungen mit diesen Steuerelementen für den Bereich von Interesse übereinstimmen.

Streaming

Da gültige Digitale Fensterwerte vom aktuellen Seitenverhältnis abhängig sind, muss die Kamera einen Medientyp und eine Streamingschnittstelle ausgewählt haben, damit die MinWindowSize erzwungen wird.

Informationswerte

Die gemeldete NonUpscalingWindowSize wird auch pro Auflösung gemeldet, ist jedoch nur informational für die Anwendung. Dieser Wert informiert die Anwendung darüber, welcher Wert als WindowSize festgelegt werden soll, um keine Upscaling des Quellbilds zu erhalten. Auf diese Weise kann die Anwendung ein Bild an den Grenzen der Genauigkeit des Kamerasensors erfassen.

Metadatenattribute

Wenn die Kamera MSXU_CONTROL_DIGITALWINDOW ankündigen, MSXU_CONTROL_DIGITALWINDOW_CONFIG und für MSXU_CONTROL_METADATA eine Puffergröße ohne Null festgelegt hat, muss die Kamera das MF_CAPTURE_METADATA_DIGITAL_WINDOW Attribut für jeden Frame ausgeben. Sie kann dies über ein Device MFT bereitstellen oder ein MetadataId_DigitalWindow -Attribut (Wert von 7) in den Rohmetadatenpuffer einschließen. Wie Metadatenattribute eingeschlossen werden, wird weiter in Abschnitt 2.2.3.1 Microsoft Standardformatmetadaten beschrieben.

Diese Metadaten werden verwendet, um zu melden, welches digitale Fenster auf das aktuelle Beispiel angewendet wurde. Dazu initialisieren Sie die KSCAMERA_METADATA_ITEMHEADER mit dem Wert MetadataId_DigitalWindow und der Größe der Struktur und kopieren Sie die angewendeten OriginX-, OriginY - und WindowSize-Werte aus dem digitalen Fenstersteuerelement in eine zugeordnete KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_SETTING Struktur.

Weitere Informationen

Abschnitt 2.2.2.11 Digitale Fenstersteuerung

Section 2.2.2.12 Digital Window Config Control

Abschnitt 2.2.3.1 Microsoft Standardformat-Metadaten

SPEZIFIKATION der USB-Videoklasse

KSPROPERTY_CAMERACONTROL_EXTENDED_DIGITALWINDOW_CONFIGCAPS

KSPROPERTY_CAMERACONTROL_EXTENDED_DIGITALWINDOW

KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_CONFIGCAPS

KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_CONFIGCAPSHEADER

KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_SETTING

KSCAMERA_METADATA_DIGITALWINDOW