Выровнять облака точек по 3 точкам корреляции? - PullRequest
2 голосов
/ 11 декабря 2008

Допустим, у меня есть 3 облака точек: первое с 3 точками {x1, y1, z1}, {x2, y2, z2}, {x3, y3, z3} и второе облако точек с теми же точками, что и {xx1 , yy1, zz1}, {xx2, yy2, zz2}, {xx3, yy3, zz3} ... Я предполагаю, что для выравнивания второго облака точек сначала нужно умножить точки второго на T [3x3matrix].

1) Так как мне найти эту матрицу преобразования (T)? Я пытался сделать уравнения вручную, но не смог их решить. Есть ли где-нибудь решение, потому что я уверен, что я не первый, кто сталкивается с проблемой.

2) Я предполагаю, что матрица может включать перекос и сдвиг. Есть ли способ найти матрицу только с 7 степенями свободы (3translation, 3rotation, 1scale)?

Ответы [ 4 ]

4 голосов
/ 11 декабря 2008

Матрица преобразования T1, которая принимает единичные векторы {1, 0, 0}, {0, 1, 0} и {0, 0, 1} в {x1, y1, z1}, {x2, y2, z2}, {x3, y3, z3} просто

     | x1 x2 x3 |
T1 = | y1 y2 y3 |
     | z1 z2 z3 |

И аналогично преобразование T2, которое переводит эти 3 единичных вектора во второй набор точек, равно

     | xx1 xx2 xx3 |
T2 = | yy1 yy1 yy3 |
     | zz1 zz2 zz3 |

Следовательно, матрица, которая переводит первые три точки во вторые три точки, определяется как T2 * T1 -1 . Если T1 неособо, то это преобразование определяется однозначно, поэтому у него нет степеней свободы. Если T1 - особая матрица, то не может быть решений или может быть бесконечно много решений.

Когда вы говорите, что хотите получить 7 степеней свободы, это в некоторой степени является неправильным использованием терминологии. В общем случае эта матрица состоит из 3 степеней свободы вращения, 3 степеней масштабирования и 3 степеней сдвига, что в сумме составляет 9. Вы можете определить эти параметры, выполнив QR-факторизацию . Матрица Q дает вам параметры вращения, а матрица R - параметры масштабирования (по диагонали) и параметры сдвига (выше диагонали).

1 голос
/ 11 декабря 2008

Преобразование с семью параметрами , о котором вы говорите, называется трехмерным конформным преобразованием или иногда трехмерным преобразованием подобия, учитывая, что два облака похожи. Если две фигуры идентичны, решение Адама Розенфилда будет хорошим. Там, где есть небольшие различия, и вы хотите получить наилучшее соответствие, наиболее часто используемое решение - это преобразование Гельмерта , которое использует метод наименьших квадратов для минимизации остатков. Википедия и гугл материал на этот взгляд не кажутся великолепными. Я ссылаюсь на это расчеты Ghilani & Wolf , p345. Это также отличная книга по математике применительно к пространственным задачам и хорошее дополнение к библиотеке.

edit: версия этого преобразования для Адама с 9 параметрами упоминается как аффинное преобразование

1 голос
/ 11 декабря 2008

Подход Адама Розенфилда правильный. Но решение как T2 * Inv (T1) неверно. Так как в матричном умножении A * B! = B * A: Следовательно, результатом является Inv (T1) * T2

0 голосов
/ 29 декабря 2008

Вот пример вычисления наименьших квадратов оценок параметров 2D-аффинного преобразования в R.

...