Matlab Vehicle / Car Tracking / Kalman Filter / Шумоподавление - PullRequest
0 голосов
/ 16 января 2019

У меня есть следующий вызов. Я нанёс на камеру измерение расстояния автомобиля по количеству кадров. Как вы можете видеть на рисунке (у = расстояние, х = кадры), шум вызывает ошибки измерения. Измеряемое транспортное средство может теоретически ускоряться или постоянно двигаться. В этом случае он ездит постоянно.

Distance measurement with noise / matlab plot[1]

Distance measurement with and without noise / matlab plot[2]

Кто-нибудь знает, как я могу уменьшить его, чтобы уменьшить этот шум во время измерения? Распределение шума почти постоянно, что соответствует расстоянию. В настоящее время я пытаюсь найти решение с помощью фильтра Калмана в Matlab.

https://de.mathworks.com/help/vision/ref/vision.kalmanfilter.html https://de.mathworks.com/help/vision/ref/configurekalmanfilter.html

Подход Калмана выглядит следующим образом:

... % DistObj = Distance values from meausurement 

if count < 6
    HoldD(count) = {DistObj};  
        count = count +1; 
else
    HoldD(1) = []; 
    HoldD(end+1) = {DistObj}; 
end 

kalman = [];
for idx = 1: length(HoldD)
   location = HoldD{idx};
   if isempty(kalman)
     if ~isempty(location)
       stateModel = [1 1;0 1];
       measurementModel = [1 0];
       kalman = vision.KalmanFilter(stateModel,measurementModel,'ProcessNoise',2,'MeasurementNoise',16); %1e-4
       kalman.State = [location, 0];
     end
   else
     trackedLocation = predict(kalman);
     if ~isempty(location)
       d = distance(kalman,location);
       trackedLocation = correct(kalman,location);
     else
       print('Missing detection');
     end

    plot(fr,trackedLocation,'co');
    hold on 
%     plot(fr,DistObj,'ko');
%     hold on 

    xlim([-1 nFrames])
    ylim([0 70])

   end
 end

Может ли кто-нибудь помочь мне, пожалуйста?

...