
칼만필터를 이용한 세번째 예제는 '영상 속의 물체를 추적하기'이다. 영상 처리 기법으로 찾아낸 물체의 위치를 입력 받아 정확한 위치를 추정하는 것이다.
1.1
1.2
1.3
가장 먼저 상태 변수(state variable)를 1.1과 같이 정의한다. 즉, 관심있는 물리량을 객체의 영상 내 위치로 설정한다. 이에 따라 행렬 와 는 다음과 같다.
2.1
의 경우 2.1에서 볼 수 있듯이 '현재 위치= 직전 위치 + 이동 거리' 라는 기본적인 물리 법칙이다. 의 경우 축과 축 방향의 위치만 측정하고 속도는 측정하지 않는다는 의미이다. 마지막으로 잡음의 공분산 행렬인 을 결정해야 한다. 이 예제에서는 두 잡음을 다음과 같이 설정한다.

function [xh, yh] = TrackKalman(xm, ym)
persistent A H Q R
persistent x_hat P
persistent firstRun
if isempty(firstRun)
dt = 1; % 1 Hz
A = [1, dt, 0, 0
0, 1, 0, 0
0, 0, 1, dt
0, 0, 0, 1];
H = [1, 0, 0, 0
0, 0, 1, 0];
Q = 1.0 * eye(4);
R = 50.0 * eye(2);
%{
x_hat = [pos_x
vel_x
pos_y
vel_y]
%}
x_hat = [0, 0, 0, 0]';
P = 100 * eye(4);
firstRun = 1;
end
xp = A*x_hat;
Pp = A*P*A' + Q;
K = Pp*H' * inv(H*Pp*H' + R);
z = [xm, ym]';
x_hat = xp + K*(z - H*xp);
P = Pp - K*H*Pp;
% 추정 위치 반환
xh = x_hat(1);
yh = x_hat(3);

결과 화면에서는 확인할 수 없지만 코드를 처음 실행 시 Kalman Filter에 의한 추정값은 전혀 엉뚱한 곳을 가리키고 있었다. 이에 따라 실험적으로 행렬 Q와 R을 수정해가며 칼만 필터의 성능을 개선해야된다는 사실을 알 수 있었다.
칼만 필터는 어렵지 않아 - 김성필 저, 한빛아카데미