3

Kalman 필터링이 처음이지만 MATLAB을 사용하여 비디오 프레임의 객체를 예측하고 추적하는 칼만 필터를 적용 할 수 있습니까?비디오 프레임에 대한 Kalman 필터 추적 및 예측

추가 정보 : 총에서 20 개의 일련의 이미지가 순차적으로 나옵니다 (이미지의 버스트 샷). 프레임에서 일부 이미지 처리를 했으므로 이제 총알을 포인트로 나타낼 수 있습니다. 21 번째 프레임에서 총알 위치를 예측할 수 있습니까?

참고 : 이미지 프레임을 반복하고 비디오를 만든 다음 칼만 필터 예측을 위해 넣어야합니다. 그러나 프레임을 비디오로 만들지 않고도 예측을 수행 할 수 있습니다.

감사합니다. vision.KalmanFilter

행동이 표시 문서의 데모가 :

"컴퓨터 비전 시스템 Tooblox"

답변

2

시작 프레임 20 개에 칼만 필터를 적용한 경우 다음 대답을 이해할 수 있습니다.

21 번째 프레임이없는 경우.

그런 다음 X(t+1) = A*X(t)+B(u)+Noise

이것은 예측 진술, 당신은 프레임 21의 값을 예측할 수있다. A = 상태, atrix, B = 제어 매트릭스. X (t) = 칼만 필터에 의해 할당 된 20 번째 프레임의 탄환의 위치.

21 번째 프레임이 없다면 위의 값을 사용하여 21 번째 프레임에 글 머리표를 표시 할 수 있습니다. 이것은 칼만 필터의 주요 특징 중 하나입니다. 예를 들어 관측 값이 없더라도 다음 프레임에서 값을 예측할 수 있습니다. 이것은 센서가 감지하지 못하는 대부분의 시간 때문에 매우 일반적인 실용적인 사례입니다. 그 물체를 선택하면 관측 값이 없습니다.

그리고 21 번째 프레임을 얻은 경우 관측 값을 가져 와서 예측을 업데이트하십시오.

유칼리 필터 및 추적을 위해 YouTube에서 Student dave 튜토리얼을 확인하는 것이 좋습니다. Udacity link에있는 우디시 코스로 가십시오.

문제에 대한 칼만 필터 기능은 여기

void Kalman_Filter(float *Zx, float *Zy) 
{ 

    Mat Zt = (Mat_<float>(2, 1) << *Zx, *Zy); 

    //prediction 
    Predict = A*Prior;// +B*a; 

    //covariacne 
    P = P*P*A.t() + Ex; 

    //measurement uopdate 
    Mat Kt = P*H.t()*(H*P*H.t() + Ez); 
    // 
    Prior = Predict + Kt*(Zt - H*Predict); 
    // 
    P = (I - Kt*H)*P; 
    // 
    *Zx = Prior.at<float>(0, 0); 
    *Zy = Prior.at<float>(1, 0); 
    // 
    return; 

} 

싶습니다 * ZX와 * ZY는 관측 값과 x와 당신이 발견 한 포인트 크기의 총알의 y 위치가 포함되어 있습니다.

0

위치를 예측하는 것이 그리 어렵지 않습니다. 시간이 지남에 따라 위치의 변화를 평균화하고이를 사용하여 새로운 위치를 예측합니다.

예를 들어 알려진 총 프레임 속도의 연속 프레임에서 총알이 50, 46, 41, 37 위치에 있다고 가정 해 봅시다.위치 차이는 -4, -5, -4입니다. 원하는대로 평균을 사용하십시오. 속도가 평균 (칼만은-필터 지수 평균을 사용) -4.33

다음 프레임에서

예측 된 위치에 따라서 37 + (-4.33) = 32.67 픽셀

입니다 내가 무엇을보고, 당신은 그래서 Kalman- 필요하지에서 필터. 당신이 위치 만 관찰하면. 예측하고 업데이트 할 필요가 없습니다. 칼만 필터는 관련 물체를 측정하는 여러 개의 센서 또는 복잡한 시스템 동작이있을 때 실제로 빛납니다. (고속 이미징에서는 종종 중력을 무시할 수 있습니다. 모든 동작이 선형이므로 쉽게 시스템을 사용할 수 있습니다.)

질문에 대답하려면 : 예, 칼만 필터를 사용하여 글 머리표를 추적 할 수 있습니다. 그러나 이러한 간단한 사용 사례의 경우 과도한 사용으로 보입니다.