exponenta event banner

видение. KalmanFilter

Коррекция ковариации ошибок измерения, состояния и оценки состояния

Описание

Объект фильтра Калмана предназначен для отслеживания. Его можно использовать для прогнозирования будущего местоположения физического объекта, уменьшения шума в обнаруженном местоположении или для облегчения связывания нескольких физических объектов с соответствующими дорожками. Для каждого физического объекта можно настроить объект фильтра Калмана для отслеживания нескольких объектов. Для использования фильтра Калмана объект должен двигаться с постоянной скоростью или постоянным ускорением.

Создание

Алгоритм фильтра Калмана включает два этапа, прогнозирование и коррекцию (также известный как этап обновления). На первом шаге для прогнозирования текущего состояния используются предыдущие состояния. На втором этапе для коррекции состояния используется текущее измерение, например местоположение объекта. Фильтр Калмана реализует дискретную временную линейную систему State-Space System.

Примечание

Чтобы упростить настройку фильтра Калмана, можно использовать configureKalmanFilter для настройки фильтра Калмана. Он устанавливает фильтр для отслеживания физического объекта в декартовой системе координат, перемещающегося с постоянной скоростью или постоянным ускорением. Статистика одинакова по всем измерениям. Если необходимо настроить фильтр Калмана с различными допущениями, не используйте функцию, используйте этот объект напрямую.

В системе пространств состояний модель перехода состояния A и модель измерения H задаются следующим образом:

ПеременнаяСтоимость
A[1 1 0 0; 0 1 0 0; 0 0 1 1; 0 0 0 1]
H[1 0 0 0; 0 0 1 0]

Описание

пример

kalmanFilter = vision.KalmanFilter возвращает калмановый фильтр для дискретной временной системы с постоянной скоростью.

kalmanFilter = vision.KalmanFilter(StateTransitionModel,MeasurementModel) дополнительно конфигурирует модель управления, В.

kalmanFilter = vision.KalmanFilter(StateTransitionModel,MeasurementModel,ControlModel,Name,Value) настраивает свойства объекта фильтра Калмана, указанные как один или несколько Name,Value аргументы пары. Неопределенные свойства имеют значения по умолчанию.

Свойства

развернуть все

Модель, описывающая переход состояния между временными шагами (A), заданными как матрица M-by-M. После создания объекта это свойство изменить невозможно. Это свойство относится к переменной A в модели state-space.

Модель, описывающая состояние для преобразования измерения (H), заданная как матрица N-by-M. После создания объекта это свойство изменить невозможно. Это свойство относится к переменной H в модели state-space.

Модель, описывающая управляющий ввод в преобразование состояния (B), заданную как матрица M-by-L. После создания объекта это свойство изменить невозможно. Это свойство относится к переменной B в модели пространства.

Состояние (x), указанное как скаляр или вектор M-элемента. При указании State в качестве скаляра он будет расширен до вектора М-элемента. Это свойство относится к переменной x в модели state-space.

Ковариация ошибок оценки состояния (P), заданная как скаляр или матрица M-by-M. При указании StateCovariance в качестве скаляра он будет расширен до диагональной матрицы M-by-M. Это свойство относится к переменной P в системе state-space.

Ковариация шума процесса (Q), заданная как скаляр или матрица M-by-M. При указании ProcessNoise в качестве скаляра он будет расширен до диагональной матрицы M-by-M. Это свойство относится к переменной Q в модели state-space.

Ковариация шума измерения (R), заданная как скаляр или матрица N-by-N. При указании MeasurementNoise в качестве скаляра он будет расширен до диагональной матрицы N-на-N. Это свойство относится к переменной R в модели state-space.

Функции объекта

Используйте predict и correct функции, основанные на результатах обнаружения. Используйте distance функция для поиска лучших совпадений.

  • При обнаружении отслеживаемого объекта используйте predict и correct функции с объектом фильтра Калмана и измерением обнаружения. Вызовите функции в следующем порядке:

    [...] = predict(kalmanFilter);
    [...] = correct(kalmanFilter,measurement);

  • Если отслеживаемый объект не обнаружен, вызовите predict функцию, но не correct функция. Если отслеживаемый объект отсутствует или закрыт, измерения недоступны. Настройте функции с помощью следующей логики:

    [...] = predict(kalmanFilter);
    If measurement exists
    	[...] = correct(kalmanFilter,measurement);
    end

  • Если отслеживаемый объект становится доступным после отсутствия в течение последних t-1 последовательных временных шагов, можно вызвать predict функция t раз. Этот синтаксис особенно полезен для обработки асинхронного видео.. Например,

    for i = 1:k
      [...] = predict(kalmanFilter);
    end
    [...] = correct(kalmanFilter,measurement) 

correctКоррекция ковариации ошибок измерения, состояния и оценки состояния
predictПрогноз измерения
distanceДоверительное значение измерения

Примеры

свернуть все

Отслеживание местоположения физического объекта, движущегося в одном направлении.

Создание синтетических данных, имитирующих 1-D местоположение физического объекта, движущегося с постоянной скоростью.

detectedLocations = num2cell(2*randn(1,40) + (1:40));

Моделирование отсутствующих обнаружений путем установки пустых элементов.

detectedLocations{1} = [];
  for idx = 16: 25 
      detectedLocations{idx} = []; 
  end

Создайте рисунок, чтобы показать расположение обнаружений и результаты использования фильтра Калмана для отслеживания.

figure;
hold on;
ylabel('Location');
ylim([0,50]); 
xlabel('Time');
xlim([0,length(detectedLocations)]);

Figure contains an axes. The axes is empty.

Создайте 1-D фильтр Калмана с постоянной скоростью при первом обнаружении физического объекта. Спрогнозировать местоположение объекта на основе предыдущих состояний. Если объект обнаружен на текущем шаге времени, используйте его расположение для исправления состояний.

kalman = []; 
for idx = 1: length(detectedLocations) 
   location = detectedLocations{idx}; 
   if isempty(kalman)
     if ~isempty(location) 
       
       stateModel = [1 1;0 1]; 
       measurementModel = [1 0]; 
       kalman = vision.KalmanFilter(stateModel,measurementModel,'ProcessNoise',1e-4,'MeasurementNoise',4);
      kalman.State = [location, 0]; 
     end 
   else
     trackedLocation = predict(kalman);
     if ~isempty(location) 
       plot(idx, location,'k+');
      d = distance(kalman,location); 
       title(sprintf('Distance:%f', d));
       trackedLocation = correct(kalman,location); 
     else 
       title('Missing detection'); 
     end 
     pause(0.2);
     plot(idx,trackedLocation,'ro'); 
   end 
 end 
legend('Detected locations','Predicted/corrected locations');

Figure contains an axes. The axes with title Distance:3.126145 contains 66 objects of type line. These objects represent Detected locations, Predicted/corrected locations.

Используйте фильтр Калмана для удаления шума из случайного сигнала, искаженного нулевым средним гауссовым шумом.

Синтезируйте случайный сигнал, который имеет значение 1 и испорчен нулевым средним гауссовым шумом со стандартным отклонением 0,1.

x = 1;
len = 100;
z = x + 0.1 * randn(1,len);

Удалите шум из сигнала с помощью фильтра Калмана. Ожидается, что состояние будет постоянным, а измерение будет таким же, как и состояние.

stateTransitionModel = 1;
measurementModel = 1;
obj = vision.KalmanFilter(stateTransitionModel,measurementModel,'StateCovariance',1,'ProcessNoise',1e-5,'MeasurementNoise',1e-2);

z_corr = zeros(1,len);
for idx = 1: len
 predict(obj);
 z_corr(idx) = correct(obj,z(idx));
end

Результаты графика.

figure, plot(x * ones(1,len),'g-'); 
hold on;
plot(1:len,z,'b+',1:len,z_corr,'r-');
legend('Original signal','Noisy signal','Filtered signal');

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Original signal, Noisy signal, Filtered signal.

Алгоритмы

развернуть все

Ссылки

[1] Уэлч, Грег и Гэри Бишоп, Введение в фильтр Калмана, TR 95-041. Университет Северной Каролины в Чапел-Хилл, факультет компьютерных наук.

[2] Блэкман, С. Слежение за несколькими целями с применением радаров. Artech House, Inc., стр. 93, 1986.

Расширенные возможности

.

См. также

Функции

Представлен в R2012b