Анализ прокрутов / Нахождение угла между двумя изображениями, представленными двумя наборами 2d точек - PullRequest
1 голос
/ 24 февраля 2011

Если у меня есть 2 набора точек, я могу повернуть одну вокруг с помощью Анализ прокруток , чтобы выровнять одну с другой.

Но предположим, что эти 2 набора точек прикреплены к изображениям, и я хотел бы также повернуть изображения. Можно ли как-нибудь повернуть изображение вместо вращения только точек? В этом уроке для поворота используется скалярное произведение (решить u, s, v = svd(p1', p2), а затем сделать p2 . v . u', p 'транспонируется в p)

Однако это не говорит мне, каков угол между изображениями.

Страница в википедии вычисляет угол между каждой парой точек, которые я думаю.

Может быть, то, что я спрашиваю, невозможно? Если я поверну первый набор точек, чтобы выровнять его с первым, разве я не могу также повернуть соответствующие изображения на угол? Точка бытия, какой это угол?

Я заметил, что v . u' дает мне матрицу 2 x 2, которая, кажется, является матрицей вращения (есть страница википедии, но я не могу ссылаться там из-за публикации привилегий). Я получил грех и cos третьего и первого элементов, а затем использовал arctan2, но результаты, которые я получаю, довольно странные. Я знаю, что они должны быть преобразованы из радианов, но я не уверен, что то, что я делаю, правильно. При попытке поворота на gimp мне кажется, что это не то, чего я хочу, но я попробую еще немного.

1 Ответ

1 голос
/ 24 февраля 2011

Кажется, ваш подход в основном правильный. Две вещи, которые приходят на ум:

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

2) Я думаю, что вы, возможно, слишком усложняете свои вычисления углов. v * u 'представляется правильной матрицей вращения, но я считаю, что для правильного угла требуется только один из элементов матрицы в матрице 2x2. Например, просто используйте acos () первой записи матрицы. Как вы заметили, это (в зависимости от программы) даст вам ответ в радианах, который вам придется преобразовать в градусы, если вы хотите попробовать вращение в gimp и т. Д.

Надеюсь, это поможет!

...