Уравнение для нелинейных данных - PullRequest
0 голосов
/ 02 октября 2018

У меня есть набор нелинейных данных.Данные - это координаты X & Y различных объектов / точек в видео (то есть координаты x & y пикселей одинаковых объектов во всех кадрах видео.) При построении значений в одном кадре я получаю нелинейнуюграфик, как показано на рисунке.

Я хочу сформировать уравнение для этого графика, чтобы, если у меня есть известная координата X в этом кадре, тогда соответствующая координата Y может быть получена с помощью этого уравнения (вид предсказания новой позиции, я не уверен, что эта идея верна или нет)

ИЛИ

Если эта идея нелогичнаМожете ли вы предложить что-то, что будет работать, чтобы я мог предсказать местоположение нового объекта, используя эти данные.

Любая помощь или новые идеи высоко ценится.

Ниже приведен пример моих данных:

X            Y


----------


214         182
830         185
1451        173
219         554
1453        548
214         941
830         934
1455        942
213         190
829         193
1450        181
218         561
1452        555
214         945
830         938
1455        946
213         190
828         193
1451        182
219         560
1452        554
214         945
830         938
1455        946
213         190
829         193
1450        181
219         556
1453        550
215         936
830         929
1455        937

Я выбрал 9 объектов в каждом кадре, поэтому первые 9 наборов данных принадлежат одному кадру и т. Д.

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Ваши XY данные выглядят следующим образом:

XY

По углам и серединам расположены скопления.

и когда добавляются линии, соединяющие последовательные точки

XY2

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

// predict location `(x,y)` of point based on index `i`
point = MOD(i-1,8)+1;  // get number 1-8 of the point (as shown above)
select case point
    case [1,4,6] : x = 215;
    case [2,7] : x = 829;
    case [3,5,8] : x = 1463;
end select
select case point
    case [1,2,3] : y = 186;
    case [4,5] : y = 555;
    case [6,7,8] : y = 940;
end select
0 голосов
/ 02 октября 2018

Вы должны разрезать эту кривую на множество линейных линий, поэтому, следуя значению X, вы окажетесь на линейной линии, и будет легко вычислить уравнение линии, зная 2 точки этой линии

...