Estimación de pose 3D - Enciclopedia
La estimación de postura 3D es un proceso de predecir la transformación de un objeto desde una postura de referencia definida por el usuario, dada una imagen o un escaneo 3D. Surge en la visión por computadora o la robótica, donde la postura o transformación de un objeto puede utilizarse para alineación de modelos de diseño asistido por computadora, identificación, agarre o manipulación del objeto.
Los datos de imagen a partir de los cuales se determina la postura de un objeto pueden ser una única imagen, un par de imágenes estereoscópicas o una secuencia de imágenes, donde típicamente la cámara se mueve con una velocidad conocida. Los objetos que se consideran pueden ser bastante generales, incluyendo seres vivos o partes del cuerpo, por ejemplo, una cabeza o manos. Sin embargo, los métodos que se utilizan para determinar la postura de un objeto suelen ser específicos para una clase de objetos y no se puede esperar generalmente que funcionen bien para otros tipos de objetos.
Desde una cámara 2D no calibrada
Es posible estimar la rotación y traslación 3D de un objeto 3D desde una única foto 2D, si se conoce un modelo 3D aproximado del objeto y los puntos correspondientes en la imagen 2D. Una técnica común desarrollada en 1995 para resolver esto es POSIT, donde se estima directamente la postura 3D desde los puntos del modelo 3D y los puntos de la imagen 2D, y corrige los errores iterativamente hasta encontrar una buena estimación desde una única imagen. La mayoría de las implementaciones de POSIT solo funcionan en puntos no coplanares (en otras palabras, no funcionará con objetos planos o planos).
Otra aproximación es registrar un modelo CAD 3D sobre la fotografía de un objeto conocido mediante la optimización de una medida de distancia adecuada con respecto a los parámetros de postura.
La medida de distancia se calcula entre el objeto en la fotografía y la proyección del modelo CAD 3D en una postura dada. La proyección perspectiva o la proyección ortogonal es posible dependiendo de la representación de postura utilizada. Este enfoque es adecuado para aplicaciones donde se tiene un modelo CAD 3D de un objeto conocido (o categoría de objeto).
Desde una cámara 2D calibrada
Dada una imagen 2D de un objeto y la cámara que está calibrada con respecto a un sistema de coordenadas del mundo, también es posible encontrar la postura que da el objeto 3D en su sistema de coordenadas del objeto. Esto funciona de la siguiente manera.
= Extracción de 3D de 2D =
Comenzando con una imagen 2D, se extraen puntos de imagen que corresponden a esquinas en la imagen. Los rayos de proyección desde los puntos de imagen se reconstruyen a partir de los puntos 2D para que los puntos 3D, que deben incidir con los rayos reconstruidos, puedan determinarse.
= Pseudocódigo =
El algoritmo para determinar la estimación de postura se basa en el algoritmo de punto más cercano iterativo. La idea principal es determinar las correspondencias entre características 2D de la imagen y puntos en la curva del modelo 3D.
(a) Reconstruir rayos de proyección desde los puntos de imagen
(b) Estimar el punto más cercano de cada rayo de proyección a un punto en la contorno 3D
(c) Estimar la postura del contorno utilizando esta conjunción de correspondencias
(d) volver a (b)
El algoritmo anterior no tiene en cuenta imágenes que contienen un objeto que está parcialmente oculto. El siguiente algoritmo asume que todos los contornos están rígidamente acoplados, lo que significa que la postura de un contorno define la postura de otro contorno.
(a) Reconstruir rayos de proyección desde los puntos de imagen
(b) Para cada rayo de proyección R:
(c) Para cada contorno 3D:
(c1) Estimar el punto más cercano P1 del rayo R a un punto en el contorno
(c2) si (n 1) elegir P1 como el punto real para la correspondencia punto-linea
(c3) de lo contrario comparar P1 con P:
si dist(P1, R) es menor que dist(P, R) entonces
elegir P1 como el nuevo P
(d) Usar (P, R) como conjunción de correspondencias.
(e) Estimar la postura con esta conjunción de correspondencias
(f) Transformar contornos, volver a (b)
Estimación de postura a través de comparación
Existen sistemas que utilizan una base de datos de un objeto en diferentes rotaciones y traslaciones para comparar una imagen de entrada contra ella para estimar la postura. Sin embargo, la precisión de estos sistemas está limitada a situaciones que se representan en su base de datos de imágenes, aunque el objetivo es reconocer una postura, en lugar de determinarla.
Software
posest, una biblioteca GPL C/C++ para la estimación de postura 6DoF a partir de correspondencias 3D-2D.
diffgeom2pose, solver rápido de Matlab para la estimación de postura 6DoF a partir de solo dos correspondencias 3D-2D de puntos con direcciones (vector), o puntos en curvas (punto-tangente). Los puntos pueden estar atribuidos con direcciones de características SIFT.
MINUS: paquete C++ para la estimación de postura relativa de tres vistas. Incluye casos de tres puntos correspondientes con líneas en estos puntos (como en posiciones y orientaciones de características, o puntos de curva con tangentes), y también para tres puntos correspondientes y una correspondencia de línea.
Nvidia FoundationPose, un modelo de fondo unificado de aprendizaje profundo para la estimación y seguimiento de postura 6DoF de objetos, que admite tanto configuraciones basadas en modelos 3D como sin modelos 3D.
Ver también
Reconocimiento de gestos
Reconocimiento de objetos 3D
Estimación de postura de cuerpo articulado
Calibración de la cámara
Homografía (visión por computadora)
Tensores trifocales
Estimación de postura
Referencias
Bibliografía
Rosenhahn, B. "Fundamentos sobre la Estimación de Postura 2D-3D."
Rosenhahn, B. "Estimación de Postura de Contornos 3D Libre-forma en Geometría Conformal."
Athitsos, V. "Estimación de la Postura 3D de las Manos desde una Imagen Desordenada."
Enlaces externos
Estimación de una Postura 3D