MFCameraExtrinsic_CalibratedTransform structure (mfapi.h)

Transformation décrivant l’emplacement d’une caméra par rapport à d’autres caméras ou à une référence externe établie.

Syntaxe

typedef struct _MFCameraExtrinsic_CalibratedTransform {
  GUID          CalibrationId;
  MF_FLOAT3     Position;
  MF_QUATERNION Orientation;
} MFCameraExtrinsic_CalibratedTransform;

Membres

CalibrationId

GUID de référence identifiant le processus d’étalonnage des données, permettant à différents consommateurs d’identifier les données d’étalonnage du même processus.

Position

Position de transformation.

Orientation

Rotation de transformation.

Remarques

La valeur Position doit être exprimée en coordonnées réelles en unités de mètres. Le système de coordonnées de position et d’orientation doit être cartésien droitier, comme illustré dans le diagramme suivant.

Système de coordonnées cartésien droitier
Important

La position et l’orientation ont des interprétations différentes pour les groupes de capteurs autonomes et pour les appareils Windows Mixed Reality.

### Groupes de capteurs autonomes

Pour les groupes de capteurs autonomes, la position et l’orientation expriment l’emplacement de l’origine du groupe dans le système de coordonnées du capteur. Par exemple, une valeur Position de {-5, 0, 0} signifie que l’origine se trouve à 5 mètres à gauche du capteur, et donc que le capteur est à 5 mètres à droite de l’origine. Un capteur positionné 2 mètres au-dessus de l’origine doit spécifier une position de {0, -2, 0}, car il s’agit de la position de l’origine par rapport au capteur.

Si le capteur est aligné sur l’origine, la rotation est le quaternion d’identité et le vecteur avant est le long de l’axe -Z {0, 0, -1}. Si le capteur effectue une rotation de +30 degrés autour de l’axe Y à partir de l’origine (c’est-à-dire vers la gauche), la valeur Orientation doit être une rotation de -30 degrés autour de l’axe Y, car elle représente l’orientation de l’origine, par rapport au capteur.

appareils Windows Mixed Reality

Les capteurs attachés à un appareil Windows Mixed Reality (par exemple, un HoloLens) expriment leur étalonnage à l’aide de la convention opposée, de sorte que la position et l’orientation indiquent l’emplacement du capteur dans le système de coordonnées de l’appareil. Par exemple, un capteur situé à 5 centimètres à droite de l’origine de l’appareil aura une position de {0,05, 0, 0} car il s’agit de la position du capteur, par rapport à l’appareil. De même, si un capteur est pivoté de +10 degrés autour de l’axe Y de l’appareil (c’est-à-dire vers la gauche), la valeur Orientation est une rotation de +10 degrés autour de l’axe Y, car elle représente l’orientation du capteur, par rapport à l’appareil. En outre, l’ÉtalonnageId peut être transmis à SpatialGraphInteropPreview.CreateLocatorForNode pour créer un SpatialLocator qui représente l’appareil Windows Mixed Reality. Cela peut être utilisé pour calculer l’emplacement du capteur dans l’espace d’une trame donnée, en interrogeant l’emplacement du SpatialLocator au moment où la trame a été capturée, et en combinant cela avec la position et l’orientation de l’MFCameraExtrinsic_CalibratedTransform. Pour interroger l’emplacement d’un frame sur l’appareil, transmettez l’horodatage de l’image donnée par IMFSample ::GetSampleTime à PerceptionTimestampHelper.FromSystemRelativeTargetTime, puis transmettez le paramètre PerceptionTimestamp obtenu à SpatialLocator.TryLocateAtTimestamp.

Pour déterminer si un IMFSample provient d’un capteur attaché à un appareil Windows Mixed Reality, recherchez la propriété suivante attachée au cadre, définie sur MFCameraExtrinsicsCalibrationType_SpatialGraphDynamicNode:

typedef enum _MFCameraExtrinsicsCalibrationType
{
    MFCameraExtrinsicsCalibrationType_Unknown = 0,
    MFCameraExtrinsicsCalibrationType_SpatialGraphDynamicNode = 1
} MFCameraExtrinsicsCalibrationType;

DEFINE_GUID(MFSampleExtension_CameraExtrinsicsCalibrationType, 0x3524e3b0, 0xc355, 0x49f1, 0xb8, 0xb0, 0xd0, 0xdd, 0x62, 0xde, 0x37, 0xa7);
 

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10 (applications de bureau uniquement)
Serveur minimal pris en charge Windows Server 2016 (applications de bureau uniquement)
En-tête mfapi.h

Voir aussi

Media Foundation Structures