Présentation de la fenêtre numérique
Deux nouveaux contrôles de fenêtre numérique fournissent un mécanisme de panoramique numérique, d’inclinaison et de zoom pour les caméras qui offrent des capteurs natifs haute résolution, afin qu’une application puisse se concentrer automatiquement sur des objets tels que des visages ou des panneaux de marqueurs dans une salle de conférence tout en conservant une fidélité optimale du capteur de caméra.
Cela permet aux applications d’obtenir des images plus détaillées de ces objets sans avoir à modifier les résolutions multimédias. Les contrôles MSXU de fenêtre numérique ciblent l’ensemble du capteur de caméra et non pas un canal ou un point de terminaison individuel.
MSXU_CONTROL_DIGITALWINDOW de contrôle de fenêtre numérique
Le contrôle MSXU de fenêtre numérique spécifie le champ d’affichage et le zoom de la caméra pendant la diffusion en continu de la caméra. Ce contrôle est un substitut potentiel pour panoramique, inclinaison et zoom. Ce contrôle s’applique uniquement lorsque l’appareil photo est activement en streaming.
Pour plus d’informations, consultez la section 2.2.2.11 Contrôle de fenêtre numérique dans les extensions Microsoft de la classe vidéo USB 1.5 .
MSXU_CONTROL_DIGITALWINDOW_CONFIG de contrôle de configuration de fenêtre numérique
Le contrôle MSXU de configuration de fenêtre numérique spécifie les limites de mise à l’échelle de l’appareil photo en fonction de toutes les résolutions disponibles. Les résolutions sont indépendantes du type multimédia, de sorte que deux types multimédias qui annoncent la même résolution d’affichage sont combinés en une seule fonctionnalité.
Consultez la section 2.2.2.12 Contrôle de configuration de fenêtre numérique dans les extensions Microsoft de la classe vidéo USB 1.5 pour plus d’informations.
Vue d’ensemble de l’implémentation
L’image suivante illustre une scène typique de salle de conférence capturée par l’appareil photo.
Le capteur d’image capture quelque chose de plus que l’image diffusée dans l’application cliente, qui est affichée dans la zone englobante rouge. Le cadre englobant orange illustre le champ de vue capturé par l’appareil photo en fonction du rapport d’aspect sélectionné. Pour le contrôle de fenêtre numérique, le cadre englobant par défaut est cette zone orange. Les coordonnées fournies le long du côté affichent les limites de cette zone. La sortie du capteur est rognée et mise à l’échelle de manière appropriée à la résolution du support de sortie à partir de cette zone.
Le tableau de marqueurs appelé dans l’image est un objet d’intérêt. Si une application souhaitait se concentrer sur cet objet, elle peut définir une fenêtre numérique pour l’englober.
La zone englobante verte est définie via le contrôle Fenêtre numérique dans cet exemple. Il englobe l’objet principal d’intérêt, la carte de marqueur. Le rectangle peut contenir des données qui ne sont pas en dehors de l’objet d’intérêt, car l’objet peut ne pas être rectangulaire ou ne pas être consulté du côté ou il n’a peut-être pas le même rapport d’aspect que le type de média.
La fenêtre numérique conserve le rapport d’aspect du format de sortie et la caméra met à l’échelle la sortie du capteur pour qu’elle corresponde. Les coordonnées spécifiées sont toujours relatives au cadre englobant par défaut d’origine.
Relation avec le contrôle de fenêtre numérique UVC 1.5
Les nouveaux contrôles MSXU de fenêtre numérique ci-dessous exécutent une fonction presque identique à la CT_DIGITAL_WINDOW_CONTROL trouvée dans la spécification de classe UVC 1.5 dans la section 4.2.2.1.19 Contrôle de fenêtre numérique.
Le specification.pdf de classe UVC 1.5 peut être téléchargé sur le site web de spécification de la classe vidéo USB.
Toutefois, il existe des différences importantes.
Étirement
Le CT_DIGITAL_WINDOW_CONTROL tel que spécifié permet à une application de définir la fenêtre sur un ensemble arbitraire de coordonnées qui ne sont limitées que par les valeurs GET_MIN, GET_MAX et GET_RES. Pour tenir ce champ d’affichage dans la fenêtre de sortie, ce comportement nécessite que l’appareil photo rejette ce qui doit être des demandes de SET_CUR légales ou pour implémenter un rééchantillonnement ou une nouvelle mise à l’échelle de l’image qui pourrait potentiellement fausser l’image horizontalement ou verticalement, c’est-à-dire modifier le rapport d’aspect.
Étant donné que la distorsion n’est probablement pas souhaitable, elle peut être évitée dans une implémentation CT_DIGITAL_WINDOW_CONTROL en rejetant ces demandes, mais plutôt que le contrôle contiennent une telle ambiguïté, le contrôle MSXU de fenêtre numérique maintient le champ d’affichage au rapport d’aspect de la résolution de sortie. Par conséquent, la mise à l’échelle n’est pas une fonctionnalité ou une option dans ce contrôle MSXU.
Trame automatique du visage
Le CT_DIGITAL_WINDOW_CONTROL n’a pas de concept de suivi des visages. D’autre part, le CT_REGION_OF_INTEREST_CONTROL a un tel concept, mais il est principalement utilisé pour détecter, signaler et mettre à jour potentiellement la région d’intérêt des contrôles 3A. En théorie, CT_REGION_OF_INTEREST_CONTROL pourrait être utilisé s’il est implémenté en tant que contrôle AutoUpdate, ce qui permettrait à un pilote de caméra de tirer parti de ce contrôle pour panoramique, incliner ou zoomer le CT_DIGITAL_WINDOW_CONTROL en synchronisation.
Ce nouveau contrôle permet un contrôle direct du suivi des visages pour ajuster le champ de vue en inclinant, en panoramique ou en zoomant numériquement pour conserver autant de visage visible que pratique. En outre, le suivi des visages utilisé sur ce contrôle reste indépendant de n’importe quelle région de contrôle des intérêts.
La méthode de suivi des visages dépend de l’implémentation.
Métadonnées par image
L’UVC 1.5 d’origine n’a pas de concept de métadonnées par image. Microsoft a étendu la spécification UVC pour prendre en charge les métadonnées incorporées dans les en-têtes de charge utile du frame. L’activation de cette prise en charge peut être effectuée via le contrôle MSXU_CONTROL_METADATA.
En outre, le CT_DIGITAL_WINDOW_CONTROL ne spécifie pas si le contrôle est synchrone ou asynchrone ou automatiquement mis à jour. En outre, le contrôle inclut des informations pas à pas utilisées pour l’animation de la modification par la caméra elle-même. Cela implique qu’un panoramique numérique, une inclinaison et un zoom peuvent prendre beaucoup de temps. Toutefois, étant donné que le contrôle aurait été défini sur de nouvelles coordonnées, il n’est pas clair combien de temps il faudrait pour terminer et quand ou comment il signalerait que la transition est effectuée. Pire, il n’y a pas d’informations sur l’emplacement dans le champ d’affichage du cadre actuel.
Cette ambiguïté peut être résolue avec les métadonnées par image injectées par la caméra, mais il n’est pas possible de demander CT_DIGITAL_WINDOW_CONTROL pour prendre en charge les métadonnées par image directement, car les métadonnées par image dépassent la portée de la spécification UVC.
Proportions
Il n’est pas clair ou non défini comment CT_DIGITAL_WINDOW_CONTROL gère différents ratios d’aspect. Pour rogner correctement le champ d’affichage, les valeurs GET_DEF et GET_CUR signalées par le contrôle UVC 1.5 doivent changer pour correspondre à l’aspect actuel après chaque sonde/validation. Pour gérer cela correctement, la CT_DIGITAL_WINDOW_CONTROL doit être un contrôle AutoUpdate et le pilote n’a pas besoin de mettre en cache le résultat GET_DEF, mais interrogez à nouveau cette valeur pour chaque résolution exposée par la caméra.
Cette complexité peut créer des problèmes de découverte lors de la tentative de mappage du contrôle de fenêtre numérique à une résolution spécifique. Vous ne savez peut-être pas à l’avance quelle partie du champ de vue du capteur l’appareil photo utiliserait par défaut tant que vous n’effectuez pas une sonde ou une validation sur tous les types multimédias pris en charge par l’appareil photo. Cela présente des problèmes potentiels liés à la découverte de valeurs de porc pour une résolution donnée, car celles-ci dépendent normalement du champ d’affichage du capteur en cours d’utilisation par ce format par rapport au champ total d’affichage disponible sur le capteur.
Fonctionnalités
La fenêtre numérique est liée à plusieurs contrôles existants :
Panoramique
Inclinaison
Zoom
Si l’appareil photo utilise des implémentations numériques pour l’un de ces contrôles, ils doivent modifier les valeurs signalées par La fenêtre numérique pour qu’elles correspondent au même champ d’affichage. De même, la fenêtre numérique doit modifier les valeurs signalées par ces contrôles. Toutes les implémentations numériques de ces contrôles doivent se mettre à jour pour rester synchronisées.
Microsoft ne définit pas la relation entre ces contrôles et uniquement que le dernier contrôle de jeu est prioritaire.
Régions d’intérêt
Étant donné que la fenêtre numérique modifie le champ d’affichage apparent (FOV), les coordonnées sélectionnées via n’importe quelle région d’intérêt (ROI) doivent être réinitialisées à leurs valeurs par défaut chaque fois qu’un SET est émis sur ce contrôle. La liste des contrôles de retour d’investissement actuels comprend les éléments suivants :
KSPROPERTY_CAMERACONTROL_REGION_OF_INTEREST_PROPERTY_ID
KSPROPERTY_CAMERACONTROL_EXTENDED_ROI_CONFIGCAPS / KSPROPERTY_CAMERACONTROL_EXTENDED_ROI_ISPCONTROL
En outre, ces contrôles Région d’intérêt spécifient leurs régions par rapport à la fenêtre de sortie, de sorte que les coordonnées qu’ils spécifient sont toujours un rectangle dans le champ d’affichage actuel. Étant donné que le contrôle Fenêtre numérique modifie le champ d’affichage actuel, un rectangle Région d’intérêt doit être remappé par l’appareil photo pour s’adapter à la fenêtre numérique actuelle. Par exemple, si la fenêtre numérique actuelle a une valeur (OriginX, OriginY) de (0,0, 0.0) et WindowSize de 0,5 et si une région d’intérêt (0.0, 0.0), (0.5, 0.5) est spécifiée, l’appareil photo doit remappper le rectangle Région d’intérêt sur les pixels correspondant à (0,0, 0,0,0), (0,25, 0,25) dans le champ d’affichage par défaut. Cela doit être analogue et cohérent avec le comportement apparent des contrôles panoramique, d’inclinaison et de zoom avec ces contrôles Région d’intérêt.
Diffusion en continu
Étant donné que les valeurs de fenêtre numérique valides disponibles dépendent du rapport d’aspect actuel, l’appareil photo doit avoir sélectionné un type multimédia et une interface de diffusion en continu pour qu’elle applique MinWindowSize.
Valeurs d’information
Le nonUpscalingWindowSize signalé est également signalé par résolution, mais il s’agit uniquement d’informations sur l’application. Cette valeur informe l’application de la valeur à définir en tant que WindowSize pour qu’elle ne soit pas mise à l’échelle de l’image source. Cela permet à l’application de capturer une image aux limites de la plage de fidélité du capteur photo.
Attributs de métadonnées
Si la caméra publie MSXU_CONTROL_DIGITALWINDOW, MSXU_CONTROL_DIGITALWINDOW_CONFIG et a défini une taille de mémoire tampon non nulle sur MSXU_CONTROL_METADATA, la caméra doit émettre l’attribut MF_CAPTURE_METADATA_DIGITAL_WINDOW pour chaque image. Il peut le fournir via un MFT d’appareil ou en incluant un attribut MetadataId_DigitalWindow (valeur de 7) dans la mémoire tampon de métadonnées brutes. Comment inclure des attributs de métadonnées est décrit plus en détail dans la section 2.2.3.1 Métadonnées au format Standard Microsoft.
Ces métadonnées sont utilisées pour signaler la fenêtre numérique appliquée à l’exemple actuel. Pour ce faire, il initialise l’KSCAMERA_METADATA_ITEMHEADER avec la valeur MetadataId_DigitalWindow et la taille de la structure et la copie sur les valeurs OriginX, OriginY et WindowSize appliquées à partir du contrôle de fenêtre numérique dans une structure KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_SETTING associée.
Voir aussi
Section 2.2.2.11 Contrôle de fenêtre numérique
Section 2.2.2.12 Contrôle de configuration de fenêtre numérique
Section 2.2.3.1 Métadonnées au format Standard Microsoft
Spécification de la classe vidéo USB
KSPROPERTY_CAMERACONTROL_EXTENDED_DIGITALWINDOW_CONFIGCAPS
KSPROPERTY_CAMERACONTROL_EXTENDED_DIGITALWINDOW
KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_CONFIGCAPS
KSCAMERA_EXTENDEDPROP_DIGITALWINDOW_CONFIGCAPSHEADER