¿Es adecuado un filtro Kalman para filtrar las posiciones de los puntos proyectados, dados los ángulos de Euler del dispositivo de captura?

17

Mi sistema es el siguiente. Yo uso la cámara de un dispositivo móvil para rastrear un objeto. De este seguimiento, obtengo cuatro puntos 3D que proyecto en la pantalla, para obtener cuatro puntos 2D. Estos 8 valores son un poco ruidosos, debido a la detección, por lo que quiero filtrarlos para que el movimiento sea más suave y realista. Como segunda medición, uso la salida del giroscopio del dispositivo, que proporciona tres ángulos de Euler (es decir, la actitud del dispositivo). Esos son más precisos y con mayor frecuencia (hasta 100 Hz) que las posiciones 2D (alrededor de 20 Hz).

Mi primer intento fue con un filtro simple de paso bajo, pero el retraso fue importante, así que ahora trato de usar un filtro Kalman, con la esperanza de que pueda suavizar las posiciones con poco retraso. Como se vio en una pregunta anterior , un punto clave en un filtro de Kalman es la relación entre las mediciones y las variables de estado interno. Aquí las medidas son mis 8 coordenadas de puntos 2D y los 3 ángulos de Euler, pero no estoy seguro de qué debo usar como variables de estado interno y cómo debo conectar los ángulos de Euler a los puntos 2D. De ahí la pregunta principal, ¿es un filtro de Kalman incluso adecuado para este problema? Y si es así, ¿cómo?

Stéphane Péchard
fuente
Si todo el propósito es suavizar los valores con un retraso mínimo, puede intentar usar un filtro de fase mínima si aún no lo ha intentado. Me sorprendería si el filtrado kalman puede proporcionarle algo mejor que el "retraso de fase mínima". Para los filtros lineales, esperaría que un filtro de fase mínima ofrezca el menor retraso posible.
niaren
@niaren: Gracias por el comentario, también estudiaré esto.
Stéphane Péchard
1
No está claro cuáles son sus medidas. En el marco del filtro de Kalman, "medidas" se refieren a las cantidades que realmente observa. Si está midiendo cuatro puntos 3D (por ejemplo, fusionando varias imágenes de la cámara), esas son sus medidas. También debe decidir qué variables de estado está tratando de estimar. ¿Estás intentando rastrear las ubicaciones de los objetos 3D con el tiempo? Si es así, esas son sus variables de estado. Puede ser apropiado que la representación 2D se pueda usar solo para visualización y no se incluya como parte de su modelo. Detalles adicionales ayudarán a sugerir un enfoque.
Jason R
Como dice Jsaon, cuáles son sus medidas no están claras. Tú dices: From this tracking, I get four 3D points that I project on a mobile device screen, to get four 2D points. These 8 values are kinda noisyy luego dices What's available to me is the device's gyroscope output, which provides three Euler angles (i.e. the device attitude).. Cual es ¿Los cuatro puntos 2D o los tres ángulos de Euler? ¿O el tren de procesamiento tiene ángulos de Euler -> puntos 3D -> puntos 2D?
Peter K.
Tengo dos conjuntos de mediciones en realidad: las posiciones de los puntos detectados desde la cámara y los ángulos de Euler, pero no son triviales de relacionar. Además, solo me interesan las posiciones filtradas como salida. Editaré la pregunta para aclarar.
Stéphane Péchard

Respuestas:

4

Filtrado de paso bajo

Sería bueno saber qué quiere decir con "filtro de paso bajo simple".

Por ejemplo, si sus mediciones en el tiempo sonk

pagk=[Xkyk]

y sus estimaciones de paso bajo filtradas son:

pagkLPAGF=αpagk-1LPAGF+(1-α)pagk

entonces tendrá un retraso de grupo bastante grande en el filtro de aproximadamente (para alfa cercano a 1). 1/ /(1-α)

Modelado de la señal: enfoque simplista

Para usar el filtro de Kalman (o cualquier enfoque similar), debe tener un modelo de cómo se adquieren y actualizan sus mediciones.

Por lo general, esto se ve así:

ϵ k A B

pagk+1TRUmi=UNpagkTRUmi+siϵk
donde es el ruido de proceso (conducción), es la matriz de transición de estado, y es su matriz de entrada.ϵkUNsi

Y luego sus medidos son: donde es el ruido de salida (medición), es la matriz de salida , y es su matriz de ruido de medición.p k = C p T R U E k + D ν k ν k C Dpagk

pagk=CpagkTRUmi+reνk
νkCre

Aquí, el "estado" del modelo se elige como las posiciones verdaderas, y las cosas que mide son la salida.

A continuación, puede aplicar las ecuaciones de filtro de Kalman para obtener estimaciones de estado de la posición verdadera.pagkTRUmi^

Sin embargo, este enfoque es simplista porque no utiliza ningún conocimiento de cómo podrían moverse los puntos (ni utiliza sus 4 puntos y cualquier conocimiento que pueda tener sobre cómo se mueven juntos).

Modelando la Señal: Comenzando un Enfoque Mejor

Esta página muestra cómo configurar el problema relacionado con las posiciones y los ángulos de Euler. Está haciendo algo diferente de lo que necesita, pero el estado es:

pagkTRUmi=[Xk yk zk X˙k y˙k z˙k X¨k y¨k z¨k ϕ ψ θ ϕ˙ ψ˙ θ˙ ϕ¨ ψ¨ θ¨ ]T

y las medidas (salida) es

pagk=[Xk yk zk ϕ ψ θ ]T

Todo lo que el modelo en esa página realmente está haciendo es: (pero para cada uno de y ).x,y,z

XkTRUmi=norte=0 0kX˙norteTRUminorteΔt+12norte=0 0kX¨norteTRUmi(norteΔt)2
X,y,z

Esto es solo las clásicas "ecuaciones de movimiento". Vea la ecuación (3) aquí.

Peter K.
fuente
Mis estimaciones de paso bajo filtradas fueron:
pagk=αpagk-1+(α-1)pagk
Stéphane Péchard
@ StéphanePéchard: ¡Vaya! Sí, eché de menos que normalmente quieres una unidad de ganancia en CC. Aun así, el retraso del grupo seguirá siendo muy grande para cercano a uno, que probablemente no fue satisfactorio con ese enfoque. α
Peter K.
Intento aplicar el artículo al que me vinculó. Cuando una matriz At contiene valores de tiempo derivados como , ¿necesito calcularlos yo mismo cada vez que actualizo las mediciones de Kalman?
Δt;12(Δ2)
Stéphane Péchard
Δt1/ /Fs
1
FsΔtΔt12Δt2
0

Su filtro de paso bajo puede ser como;

pagk=αpagk-1+(1-α)zk

zkkpagkk

El LPF puede deformarse al siguiente:

pagk=pagk-1+K(zk-pagk-1)
K=(1-α)

K

fumio ueda
fuente