칼만 (Kalman) 필터는 캡처 장치의 오일러 각도를 고려하여 투영 된 포인트 위치를 필터링하는 데 적합합니까?


17

내 시스템은 다음과 같습니다. 모바일 장치의 카메라를 사용하여 물체를 추적합니다. 이 추적에서 4 개의 2D 점을 얻기 위해 화면에 투영 한 4 개의 3D 점을 얻습니다. 이 8 가지 값은 감지로 인해 잡음이 심하므로 움직임을 더 매끄럽고 사실적으로 만들기 위해 필터링하고 싶습니다. 두 번째 측정으로, 장치의 자이로 스코프 출력을 사용하여 3 개의 오일러 각도 (예 : 장치 자세)를 제공합니다. 이들은 2D 위치 (약 20Hz)보다 더 정확하고 더 높은 주파수 (최대 100Hz)입니다.

첫 번째 시도는 간단한 저역 통과 필터를 사용했지만 지연이 중요했기 때문에 이제는 Kalman 필터를 사용하여 약간의 지연으로 위치를 부드럽게 할 수 있기를 바랍니다. 이전 질문에서 볼 수 있듯이 Kalman 필터의 핵심 요점은 측정 값과 내부 상태 변수 간의 관계입니다. 여기에 내 8 2D 점 좌표와 3 오일러 각도가 측정되지만 내부 상태 변수로 사용해야 할 내용과 오일러 각도를 2D 포인트에 연결하는 방법을 잘 모르겠습니다. 따라서 주요 질문은 칼만 필터가이 문제에 적합합니까? 그리고 만약 그렇다면 어떻게?


전체 지연이 최소 지연으로 값을 부드럽게하는 것이라면, 아직 시도하지 않은 경우 최소 위상 필터를 사용해보십시오. 칼만 필터링이 '최소 위상 지연'보다 나은 것을 줄 수 있다면 놀랍습니다. 선형 필터의 경우 최소 위상 필터가 가능한 최소 지연을 제공 할 것으로 예상합니다.
niaren

@niaren : 댓글 주셔서 감사합니다, 나는 이것도 공부합니다.
Stéphane Péchard

1
측정 값이 무엇인지 확실하지 않습니다. 칼만 필터 프레임 워크에서 "측정"은 실제로 관찰하는 수량을 나타냅니다. 네 개의 3D 포인트를 측정하는 경우 (예 : 여러 카메라 이미지를 함께 융합하여) 측정 한 것입니다. 또한 추정하려는 상태 변수를 결정해야합니다. 시간이 지남에 따라 3D 객체 위치를 추적하려고합니까? 그렇다면 상태 변수입니다. 2D 표현은 표시 용으로 만 사용할 수 있으며 모델의 일부로 포함되지 않는 것이 좋습니다. 추가 세부 사항은 접근 방식을 제안하는 데 도움이됩니다.
Jason R

Jsaon이 말했듯이 측정 결과가 명확하지 않습니다. 당신은 말합니다 : 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 noisy그리고 나중에 당신은 말합니다 What's available to me is the device's gyroscope output, which provides three Euler angles (i.e. the device attitude).. 무엇 이니? 네 개의 2D 점 또는 세 개의 오일러 각도? 아니면 처리 기차가 오일러 ​​각도-> 3D 포인트-> 2D 포인트로 이동합니까?
Peter K.

실제로 두 가지 측정 세트가 있습니다. 카메라에서 감지 된 지점 위치와 오일러 각도입니다. 또한 출력으로 필터링 된 위치에만 관심이 있습니다. 명확히하기 위해 질문을 편집하겠습니다.
Stéphane Péchard

답변:


4

저역 통과 필터링

"간단한 저역 통과 필터"의 의미를 아는 것이 좋습니다.

예를 들어, 시간 의 측정 k

pk=[xkyk]

저역 통과 필터링 된 추정치는 다음과 같습니다.

pkLPF=αpk1LPF+(1α)pk

그러면 필터에서 약 (1에 가까운 알파의 경우 )에 상당히 큰 그룹 지연이 발생합니다 . 1/(1α)

신호 모델링 : 단순한 접근

칼만 필터 (또는 이와 유사한 방법)를 사용하려면 측정을 획득하고 업데이트하는 방법에 대한 모델이 있어야합니다.

일반적으로 다음과 같습니다.

여기서, ϵ k 는 프로세스 (구동) 노이즈이고, A 는 상태 전이 매트릭스이며, B 는 입력 매트릭스입니다.

pk+1TRUE=ApkTRUE+Bϵk
ϵkAB

측정 된 는 다음과 같습니다. p k = C p T R U E k + D ν k 여기서 ν k 는 출력 (측정) 노이즈, C 는 출력 매트릭스, D 는 측정 노이즈 매트릭스입니다.pk

pk=CpkTRUE+Dνk
νkCD

여기에서 모델의 "상태"는 실제 위치로 선택되며 측정하는 것은 출력입니다.

그런 상태 추정치를 얻기 위해이에 칼만 필터 방정식을 적용 할 수 있습니다 실제 위치.pkTRUE^

그러나이 방법은 포인트가 어떻게 움직일 지에 대한 지식을 사용하지 않기 때문에 간단합니다 (4 포인트와 포인트가 함께 움직이는 방법에 대한 지식을 사용하지 않음).

신호 모델링 : 더 나은 접근 방식 시작

이 페이지는 위치 및 오일러 각도와 관련된 문제를 설정하는 방법을 보여줍니다. 필요한 것과 다른 일을하고 있지만 상태는 다음과 같습니다.

pkTRUE=[xk yk zk x˙k y˙k z˙k x¨k y¨k z¨k ϕ ψ θ ϕ˙ ψ˙ θ˙ ϕ¨ ψ¨ θ¨ ]T

측정 (출력)은

pk=[xk yk zk ϕ ψ θ ]T

xkTRUE=n=0kx˙nTRUEnΔt+12n=0kx¨nTRUE(nΔt)2
x,y,z

이것은 단지 고전적인 "운동 방정식"입니다. 여기 방정식 (3)을 참조하십시오.


pk=αpk1+(α1)pk

α

내가 링크 한 기사를 적용하려고합니다. At 행렬에 와 같은 미분 시간 값이 포함 된 경우
Δt;12(Δ2)

Δt1/fs

1
fsΔtΔt12Δt2

0

저역 통과 필터는 다음과 같습니다.

pk=αpk1+(1α)zk

zkkpkk

LPF는 다음으로 변형 될 수 있습니다.

pk=pk1+K(zkpk1)
케이=(1α)

케이

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.