Плавная подгонка кривой с помощью 2D-данных о шуме

#python #curve-fitting #smoothing #polynomials #bspline

Вопрос:

У меня возникли некоторые проблемы со сглаживанием данных о местоположении в 2D. У меня есть датчик с именем GNSS, который выдает данные о местоположении, но GNSS не является точным, и он создает много шумовых данных, даже если он был стабильным в одном месте. Вот примерная координата в одном стабильном месте

  [  60764.23449229 -100140.80706004]
 [  60764.84850004 -100141.01120966]
 [  60764.51855838 -100140.84762562]
 [  60763.35537281 -100141.33637028]
 [  60764.61105273 -100140.87806004]
 [  60763.75202809 -100140.93057157]
 [  60764.76660587 -100140.95289355]
 [  60764.24586045 -100140.80742297]
 [  60764.43356906 -100140.82418556]
 [  60763.28317904 -100141.50751476]
 

После этого я пытаюсь продвинуть его вперед и получить эту примерную координату

  [  60764.81948855 -100140.98207046]
 [  60764.92936364 -100140.96721928]
 [  60764.99700105 -100140.7012187 ]
 [  60765.19893018 -100140.42903945]
 [  60765.51303984 -100140.02736587]
 [  60765.80870981 -100139.61403094]
 [  60766.25182758 -100139.03935881]
 [  60766.74092995 -100138.3961776 ]
 [  60767.2590066  -100137.71298507]
 [  60767.74847494 -100137.01536319]
 

Моя цель здесь-попытаться создать плавное движение с самого начала GNSS в стабильном месте и двигаться вперед, и я пытался с помощью полинома и B-сплайна создать плавную кривую, но я все еще сталкивался с некоторыми проблемами ( я только начал с кривой b-сплайна, я могу что-то пропустить ).

Есть ли какое-либо новое решение или решение b-сплайна для решения этой проблемы?

Спасибо

Ответ №1:

Я бы использовал альфа-бета-фильтр r для сглаживания данных

Я видел несколько его пакетов в Интернете, но алгоритм состоит всего из нескольких строк кода.

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