Main Content

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

factorCameraSE3AndPointXYZ

Facteur lié à la pose de la caméra SE(3) et au point 3D

Depuis R2023a

    Description

    L'objet factorCameraSE3AndPointXYZ décrit le facteur de projection visuelle reliant les poses d'une caméra sténopé dans l'espace d'état SE(3) et les points de repère 3D. Vous pouvez ajouter cet objet comme facteur à un objet factorGraph .

    L'objet factorCameraSE3AndPointXYZ nécessite Computer Vision Toolbox™.

    Création

    Description

    F = factorCameraSE3AndPointXYZ(nodeID,cameraIntrinsicMatrix) crée un objet factorCameraSE3AndPointXYZ , F, avec la propriété de paires d'ID de nœud spécifiée NodeID définie sur nodeID et la propriété K définie sur cameraIntrinsicMatrix. L'objet factor prend en charge la construction de plusieurs facteurs avec différentes paires d'ID de nœud en même temps.

    exemple

    F = factorCameraSE3AndPointXYZ(___,Name=Value) spécifie les propriétés en utilisant un ou plusieurs arguments nom-valeur en plus des arguments de la syntaxe précédente.

    Propriétés

    développer tout

    Ce propriété est en lecture seule.

    Paires d'ID de nœud, spécifiées sous la forme d'une matrice N-par-2 d'entiers non négatifs. N est le nombre de facteurs. Chaque ligne représente un facteur qui se connecte aux nœuds de types POSE_SE3 et POINT_XYZ aux ID de nœud spécifiés dans le graphique de facteurs. Les lignes sont de la forme [CameraPoseID LandmarkID], où CameraPoseID est l'ID du nœud de pose de la caméra et LandmarkID est l'ID du nœud de repère.

    Si un facteur dans cet objet factorCameraSE3AndPointXYZ spécifie un nœud qui n'existe pas dans le graphique de facteurs avec l'ID spécifié, un nœud du type requis avec cet ID est automatiquement créé et l'ajoute au graphique de facteurs. lorsque vous ajoutez le facteur au graphique des facteurs.

    Vous devez spécifier cette propriété lors de la création de l'objet.

    Pour plus d'informations sur les types de nœuds attendus de tous les facteurs pris en charge, consultez Types de nœuds attendus pour les objets facteurs.

    Types de données : double

    Ce propriété est en lecture seule.

    Matrice intrinsèque de la caméra, spécifiée comme matrice 3 x 3 ou matrice 3 x 3 x N . N est le nombre de facteurs. Lorsqu'elle est spécifiée comme matrice 3 x 3, la même matrice intrinsèque de la caméra s'applique à tous les facteurs. La matrice 3x3 a le format

    [fx0cx0fycy001].

    Les coordonnées [cx, cy] représentent le point principal de la caméra, en pixels. Les coordonnées [fx , fy] représentent la distance focale de la caméra, en pixels.

    Remarque

    Cette propriété est équivalente à la propriété K (Computer Vision Toolbox) de l'objet cameraIntrinsics (Computer Vision Toolbox) de Computer Vision Toolbox.

    Vous devez spécifier cette propriété lors de la création de l'objet.

    Types de données : double

    Position mesurée du point d'image, spécifiée sous la forme d'un vecteur ligne à deux éléments ou d'une matrice N-by-2. N est le nombre de facteurs. Chaque ligne représente une observation de point d'image 2D [x y] d'un point 3D spécifié dans un cadre de caméra spécifié.

    Types de données : single | double

    Matrice d'informations associée à l'incertitude de la mesure, spécifiée sous la forme d'une matrice 2 par 2 ou d'un tableau 2 par 2 par N . N est le nombre de facteurs. Lorsqu'elle est spécifiée sous forme de matrice 2 x 2, la même matrice d'informations s'applique à tous les facteurs.

    Types de données : single | double

    Transformation consistant en une translation et une rotation 3D pour transformer les nœuds de pose de connexion au cadre de référence initial du capteur de caméra, spécifié comme un objet se3 .

    Par exemple, si les nœuds de pose connectés stockent les poses IMU dans le cadre de référence initial du capteur IMU, la transformation du capteur tourne et traduit une pose dans le cadre de référence initial du capteur IMU en cadre de référence initial du capteur de caméra. Le référentiel initial du capteur a la toute première pose du capteur à son origine.

    Une transformation de capteur n'est pas nécessaire si les nœuds de pose de connexion contiennent des poses dans le cadre de référence initial du capteur de caméra. Sinon, vous devez spécifier la transformation du capteur.

    Fonctions d'objet

    nodeTypeObtenir le type de nœud dans le graphique de facteurs

    Exemples

    réduire tout

    Créez un objet factorGraph .

    G = factorGraph;

    Générez un nouvel ID de nœud unique pour représenter un nœud de pose de caméra.

    camId = generateNodeID(G,1);

    Générez deux nouveaux identifiants uniques pour représenter les points 3D.

    pointIds = generateNodeID(G,2);

    Spécifiez une matrice intrinsèque de caméra.

    focalLength    = [800 800]; % specified in units of pixels
    principalPoint = [320 240]; % in pixels [x, y]
    cameraIntrinsicMatrix = [focalLength(1) 0 principalPoint(1); ...
                             0 focalLength(2) principalPoint(2); ...
                             0 0 1];
    
    camMeasurements = [240 115; ... % first factor measurement
                       100 315];    % second factor measurement

    Créez un objet factorCameraSE3AndPointXYZ qui spécifie deux facteurs. Le premier facteur connecte le nœud de pose de caméra et le premier nœud de point. Le deuxième facteur connecte le nœud de pose de caméra et le deuxième nœud de point.

    fCam = factorCameraSE3AndPointXYZ([camId pointIds(1); camId pointIds(2)], ...
                                      cameraIntrinsicMatrix, ...
                                      Measurement=camMeasurements);

    L'ajout de l'objet facteur au graphique de facteurs ajoute les nœuds avec les ID camId et pointIds au graphique de facteurs, en les connectant comme spécifié par les facteurs.

    addFactor(G,fCam);

    Le nœud camId est de type "POSE_SE3". Les nœuds pointIds sont de type "POINT_XYZ", et tous deux se connectent au nœud de la caméra.

    nodeType(G,camId)
    ans = 
    "POSE_SE3"
    
    nodeType(G,pointIds(1))
    ans = 
    "POINT_XYZ"
    
    nodeType(G,pointIds(2))
    ans = 
    "POINT_XYZ"
    

    En savoir plus

    développer tout

    Historique des versions

    Introduit dans R2023a