Игра в идеальный тетрис: как выровнять и масштабировать две кривые с помощью масштабирования и переноса?

] Учитывая параметры масштабирования по оси y (s) и смещения по оси x (t), как масштабировать и выравнивать две не совпадающие кривые, когда целью является максимизация суперпозиции кривых (а не минимизация расстояния)?

Как указал @DWin, это можно было бы переименовать в «Как идеально играть в тетрис с помощью R», хотя у него есть приложения, выходящие далеко за рамки победы в игре тетрис.

Вариация этого вопроса может включать любое количество преобразований твердого тела (вращение, перемещение и масштабирование).

Имея кривую 1

curve1<-data.frame(x=c(1,1,2,2,3),
                   y=c(9,6,6,3,3))

with(curve1, plot(x=x, y=y, type="l", xlim=c(0,10), ylim=c(0,10)))

enter image description here

и кривую 2

curve2<-data.frame(x=c(4,5,5,6,6,7),
                   y=c(2,2,1,1,2,3))

with(curve2, plot(x=x, y=y, type="l", xlim=c(0,10), ylim=c(0,10)))

curve 2

, я хочу найти s и t, которые максимизируют суперпозицию между двумя кривыми.

В идеале метод должен быть в R с использованием optim.

В этом составленном примере t=3 и s=1/3, так что

t=3
s=1/3

with(curve2, plot(x=x, y=y, type="l", xlim=c(0,10), ylim=c(0,10)))

with(curve1, lines(x=x+t, y=y*s, col="red"))

enter image description here

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

Следы, которые я исследовал:

  • минимизация площади между кривыми
  • алгоритм наложения двух кривых
  • анализ формы с использованием пакета shape
  • Итеративная ближайшая точка (ICP), если кто-то реализовал ее в R или может портировать одну из C реализации
  • Бонусные баллы за метод, использующий максимальное правдоподобие (при нормальном распределении ошибок).

    10
    задан Community 23 May 2017 в 12:13
    поделиться