У меня есть некоторые данные в python, которые представляют движение обнаруженных ключевых точек SURF по нескольким кадрам видео.Мне нужно отделить точки, которые колеблются, от точек, испытывающих другие виды движения.Я думаю, что я должен быть в состоянии сделать это, подгоняя синусоидальную функцию к данным и затем устанавливая пороговые значения параметров, чтобы отбрасывать движение вне параметров того, что я ищу.
Итак, я определил общий синусфункция и вызов scipy.optimize.curve_fit
def sine(x,a,b,c,d):
return a * np.sin(b*(x+c)) + d
opt, cov = opt.curve_fit(sine, np.linspace(0,119,119), x[:,5])
(x[:,5]
- это элемент данных, который, как мне известно, имеет довольно чистые и очевидные синусоидальные характеристики)
Но когда я строю sine(sine(np.linspace(0,119,119), *opt)
против x[:,5]
в matplotlib я получаю кривую, которая не похожа ни на что, кроме моих данных, за исключением, возможно, смещения по оси y
Я что-то упустил, или это просто за пределамичто можно сделать?