Contenido principal

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

factorCameraSE3AndPointXYZ

Factor que relaciona la posición de la cámara SE(3), el punto de referencia 3D y la transformación del sensor opcional

Desde R2023a

    Descripción

    El objeto factorCameraSE3AndPointXYZ contiene factores de proyección visual que describen la relación entre la pose de una cámara estenopeica en el espacio de estados SE(3) y un punto de referencia 3D, o entre la pose de una cámara estenopeica en el espacio de estados SE(3), un punto de referencia 3D y una transformación del sensor. Puede utilizar este objeto para agregar uno o más factores a un objeto factorGraph.

    Puede utilizar factores que conecten una pose de cámara SE(3), un punto de referencia 3D y una transformación del sensor para estimar la transformación del sensor durante la calibración extrínseca entre una cámara y otro sensor. Puede especificar esta estimación de transformación del sensor como la propiedad SensorTransform de un objeto factorCameraSE3AndPointXYZ, que luego puede agregar a un gráfico de factores creado a partir de los datos de trayectoria recopilados después de la calibración.

    También puede utilizar factores que conecten una pose de cámara SE(3), un punto de referencia 3D y una transformación del sensor para refinar los valores de transformación del sensor durante la optimización. Para realizar este refinamiento, libere el nodo de transformación del sensor utilizando la función fixNode con el argumento flag especificado como false.

    El objeto factorCameraSE3AndPointXYZ requiere una licencia Computer Vision Toolbox™.

    Creación

    Descripción

    F = factorCameraSE3AndPointXYZ(nodeID,cameraIntrinsicMatrix) crea un objeto factorCameraSE3AndPointXYZ, F, con los números de identificación de nodo especificados nodeID y la matriz intrínseca de la cámara cameraIntrinsicMatrix. Puede crear un objeto factorCameraSE3AndPointXYZ que contenga múltiples factores.

    • Si nodeID es una matriz N por 2 de números enteros no negativos, entonces crea un objeto factorCameraSE3AndPointXYZ que contiene factores N, cada uno de los cuales relaciona una pose de una cámara estenopeica en el espacio de estados SE(3) y con un punto de referencia 3D.

    • Si nodeID es una matriz N por 3 de números enteros no negativos, entonces factorCameraSE3AndPointXYZ(nodeID,cameraIntrinsicMatrix) crea un objeto factorCameraSE3AndPointXYZ que contiene factores N, cada uno de los cuales relaciona una pose de una cámara estenopeica en el espacio de estados SE(3), un punto de referencia 3D y una transformación del sensor. En este caso, factorCameraSE3AndPointXYZ ignora cualquier valor especificado para la propiedad SensorTransform y lo establece en una transformación SE(3) que representa una rotación de identidad sin traducción.

    F = factorCameraSE3AndPointXYZ(___,Name=Value) especifica propiedades utilizando uno o más argumentos de nombre-valor además de los argumentos de la sintaxis anterior.

    ejemplo

    Argumentos de entrada

    expandir todo

    Números de identificación de nodo, especificados como una matriz N por 2 o N por 3 de números enteros no negativos. N es el número de factores. Este argumento establece la propiedad NodeID.

    • Si nodeID es una matriz de N por 2 de números enteros no negativos, entonces cada fila debe tener la forma [CameraPoseID LandmarkID], donde CameraPoseID es el ID de un nodo de pose de cámara de tipo POSE_SE3, y LandmarkID es el ID de un nodo de punto de referencia de tipo POINT_XYZ.

    • Si nodeID es una matriz de N por 3 de números enteros no negativos, entonces cada fila debe tener el formato [CameraPoseID LandmarkID SensorTransformID], donde CameraPoseID es el ID de un nodo de pose de cámara de tipo POSE_SE3, LandmarkID es el ID de un nodo de punto de referencia de tipo POINT_XYZ, y SensorTransformID es el ID de un nodo de transformación de sensor de tipo TRANSFORM_SE3. En este caso, factorCameraSE3AndPointXYZ ignora cualquier valor especificado para la propiedad SensorTransform y lo establece en una transformación SE(3) que representa una rotación de identidad sin traducción.

    Si un factor en el argumento nodeID especifica un ID de nodo que no existe en el gráfico de factores, entonces al agregar el factor al gráfico de factores se agrega un nodo del tipo correspondiente con ese ID al gráfico de factores.

    Para obtener más información sobre los tipos de nodos esperados de todos los factores admitidos, consulte Tipos de nodos esperados de objetos de factores.

    Matriz intrínseca de la cámara, especificada como una matriz de 3 por 3 o un arreglo de 3 por 3 por N. N es el número de factores. Cuando se especifica como una matriz de 3 por 3, la misma matriz intrínseca de la cámara se aplica a todos los factores. Una matriz intrínseca de cámara válida tiene la forma:

    [fx0cx0fycy001].

    Las coordenadas [cx, cy] especifican el punto principal de la cámara, en píxeles. Las coordenadas [fx, fy] especifican la distancia focal de la cámara, en píxeles.

    Este argumento establece la propiedad K.

    Nota

    Este argumento es equivalente a la propiedad K (Computer Vision Toolbox) del objeto cameraIntrinsics (Computer Vision Toolbox).

    Argumentos de par nombre-valor

    expandir todo

    Posición del punto de imagen medido, especificada como un vector fila de dos elementos o una matriz N por 2. N es el número de factores. Cada fila representa una observación puntual de una imagen 2-D [x y] de un punto 3-D específico en un marco de cámara específico.

    Este argumento establece Measurement.

    Tipos de datos: single | double

    Matriz de información asociada a la incertidumbre de la medición, especificada como una matriz de 2 por 2 o un arreglo de 2 por 2 por N. N es el número de factores. Cuando se especifica como una matriz de 2 por 2, la misma matriz de información se aplica a todos los factores.

    Este argumento establece Information.

    Tipos de datos: single | double

    Transformación que consiste en una traslación y rotación 3D para transformar los nodos de pose conectados al marco de referencia del sensor de la cámara inicial, especificado como un objeto se3.

    Una transformación de sensor es innecesaria si los nodos de pose de conexión contienen poses en el marco de referencia inicial del sensor de la cámara. De lo contrario, debe especificar la transformación del sensor.

    Si nodeID es una matriz N por 3 de números enteros no negativos, entonces factorCameraSE3AndPointXYZ ignora cualquier valor especificado para la propiedad SensorTransform y lo establece en una transformación SE(3) que representa una rotación de identidad sin traducción.

    Este argumento establece SensorTransform.

    Argumentos de salida

    expandir todo

    Factores que relacionan una pose de cámara SE(3), un punto 3D y una transformación de sensor opcional, devueltos como un objeto factorCameraSE3AndPointXYZ.

    • Si nodeID es una matriz N por 2 de números enteros no negativos, entonces F contiene factores que relacionan cada uno una pose de una cámara estenopeica en el espacio de estados SE(3) con un punto de referencia 3D.

    • Si nodeID es una matriz N por 3 de números enteros no negativos, entonces F contiene factores que relacionan cada uno una pose de una cámara estenopeica en el espacio de estados SE(3), un punto de referencia 3D y una transformación del sensor.

    Propiedades

    expandir todo

    Esta propiedad es de sólo lectura después de la creación del objeto. Para establecer esta propiedad, utilice el argumento nodeID al llamar a la función factorCameraSE3AndPointXYZ.

    Números de identificación de nodo, representados como una matriz N por 2 o N por 3 de números enteros no negativos. N es el número de factores.

    • Si NodeID es una matriz de N por 2 de números enteros no negativos, entonces cada fila tiene la forma [CameraPoseID LandmarkID], donde CameraPoseID es el ID de un nodo de pose de cámara de tipo POSE_SE3, y LandmarkID es el ID de un nodo de punto de referencia de tipo POINT_XYZ.

    • Si NodeID es una matriz de N por 3 de números enteros no negativos, entonces cada fila tiene la forma [CameraPoseID LandmarkID SensorTransformID], donde CameraPoseID es el ID de un nodo de pose de cámara de tipo POSE_SE3, LandmarkID es el ID de un nodo de punto de referencia de tipo POINT_XYZ, y SensorTransformID es el ID de un nodo de transformación de sensor de tipo TRANSFORM_SE3.

    Si un factor en la propiedad NodeID tiene un ID de nodo que no existe en el gráfico de factores, entonces al agregar el factor al gráfico de factores se agrega un nodo del tipo correspondiente con ese ID al gráfico de factores.

    Para obtener más información sobre los tipos de nodos esperados de todos los factores admitidos, consulte Tipos de nodos esperados de objetos de factores.

    Esta propiedad es de sólo lectura después de la creación del objeto. Debe especificar esta propiedad en la creación del objeto.

    Matriz intrínseca de la cámara, especificada como una matriz de 3 por 3 o un arreglo de 3 por 3 por N. N es el número de factores. Cuando se especifica como una matriz de 3 por 3, la misma matriz intrínseca de la cámara se aplica a todos los factores. La matriz intrínseca de la cámara tiene la forma:

    [fx0cx0fycy001].

    Las coordenadas [cx, cy] representan el punto principal de la cámara, en píxeles. Las coordenadas [fx ,fy] representan la distancia focal de la cámara, en píxeles.

    Nota

    Esta propiedad es equivalente a la propiedad K (Computer Vision Toolbox) del objeto cameraIntrinsics (Computer Vision Toolbox).

    Tipos de datos: double

    Posición del punto de imagen medido, especificada como un vector fila de dos elementos o una matriz N por 2. N es el número de factores. Cada fila representa una observación puntual de una imagen 2-D [x y] de un punto 3-D específico en un marco de cámara específico.

    Tipos de datos: single | double

    Matriz de información asociada a la incertidumbre de la medición, especificada como una matriz de 2 por 2 o un arreglo de 2 por 2 por N. N es el número de factores. Cuando se especifica como una matriz de 2 por 2, la misma matriz de información se aplica a todos los factores.

    Tipos de datos: single | double

    Transformación que consiste en una traslación y rotación 3D para transformar los nodos de pose conectados al marco de referencia del sensor de la cámara inicial, especificado como un objeto se3.

    Por ejemplo, si los nodos de pose conectados almacenan poses de IMU en el marco de referencia inicial del sensor IMU, la transformación del sensor gira y traduce una pose en el marco de referencia inicial del sensor IMU al marco de referencia inicial del sensor de la cámara. El marco de referencia inicial del sensor tiene la primera posición del sensor en su origen.

    Si nodeID es una matriz N por 3 de números enteros no negativos, entonces factorCameraSE3AndPointXYZ ignora cualquier valor especificado para la propiedad SensorTransform y lo establece en una transformación SE(3) que representa una rotación de identidad sin traducción.

    Funciones del objeto

    nodeTypeObtener el tipo de nodo en el gráfico de factores

    Ejemplos

    contraer todo

    Cree un objeto factorGraph.

    G = factorGraph;

    Genere una nueva ID de nodo única para representar un nodo de pose de cámara.

    camId = generateNodeID(G,1);

    Genere dos nuevos ID únicos para representar puntos 3D.

    pointIds = generateNodeID(G,2);

    Especifique una matriz intrínseca de la cámara.

    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

    Crea un objeto factorCameraSE3AndPointXYZ que especifica dos factores. El primer factor conecta el nodo de pose de la cámara y el primer nodo de punto. El segundo factor conecta el nodo de pose de la cámara y el segundo nodo de punto.

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

    Al agregar el objeto de factor al gráfico de factores, se agregan los nodos con ID camId y pointIds al gráfico de factores y los conectan según lo especificado por los factores.

    addFactor(G,fCam);

    El nodo camId es del tipo "POSE_SE3". Los nodos pointIds son del tipo "POINT_XYZ" y ambos se conectan al nodo de la cámara.

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

    Más acerca de

    expandir todo

    Historial de versiones

    Introducido en R2023a

    expandir todo