Прямое линейное преобразование (DLT) - алгоритм, который решает набор переменных из набора отношений подобия:
- за
куда и известные векторы, обозначает равенство с точностью до неизвестного скалярного умножения, а представляет собой матрицу (или линейное преобразование), которая содержит неизвестные, которые необходимо решить.
Этот тип отношений часто встречается в проективная геометрия. Практические примеры включают соотношение между трехмерными точками в сцене и их проекцию на плоскость изображения объекта. камеры-обскуры,[1] и омографии.
Вступление
Обычный система линейных уравнений
- за
можно решить, например, переписав его в виде матричного уравнения где матрицы и содержат векторы и в соответствующих столбцах. Учитывая, что существует единственное решение, оно задается формулой
Решения также могут быть описаны в случае, если уравнения переопределены или недоопределены.
Отличие задачи прямого линейного преобразования от приведенного выше стандартного случая заключается в том, что левая и правая части определяющего уравнения могут отличаться неизвестным мультипликативным множителем, который зависит от k. Как следствие, невозможно вычислить, как в стандартном случае. Вместо этого отношения подобия переписываются в виде собственных линейных однородных уравнений, которые затем могут быть решены стандартным методом. Комбинация переписывания уравнений подобия в виде однородных линейных уравнений и их решения стандартными методами называется алгоритм прямого линейного преобразования или же Алгоритм DLT. DLT приписывают Ивану Сазерленду.[2]
Пример
Предположим, что . Позволять и - два известных вектора, и мы хотим найти матрица такой, что
куда неизвестный скалярный множитель, связанный с уравнением k.
Чтобы избавиться от неизвестных скаляров и получить однородные уравнения, определите антисимметричную матрицу
и умножим обе части уравнения на слева
С следующие однородные уравнения, которые больше не содержат неизвестных скаляров, находятся под рукой
Чтобы решить из этой системы уравнений рассмотрим элементы векторов и и матрица :
- , , и
и полученное выше однородное уравнение принимает вид
- за
Это также можно записать в матричной форме:
- за
куда и оба являются 6-мерными векторами, определенными как
- и
Пока у нас есть 1 уравнение и 6 неизвестных. Систему однородных уравнений можно записать в матричной форме
куда это матрица, содержащая известные векторы в его рядах. Неизвестный может быть определена, например, разложение по сингулярным числам из ; является правым сингулярным вектором соответствующий сингулярному значению, равному нулю. Один раз определено, элементы матрицы можно переставить из вектора . Обратите внимание, что масштабирование или же не имеет значения (за исключением того, что он должен быть ненулевым), поскольку определяющие уравнения уже допускают неизвестное масштабирование.
На практике векторы и может содержать шум, что означает, что уравнения подобия действительны только приблизительно. Как следствие, может не быть вектора которое решает однородное уравнение точно. В этих случаях Всего наименьших квадратов решение можно использовать, выбрав как правый сингулярный вектор, соответствующий наименьшему сингулярному значению
Более общие случаи
В приведенном выше примере и , но общая стратегия переписывания соотношений подобия в однородные линейные уравнения может быть обобщена на произвольные измерения как для и
Если и предыдущие выражения все еще могут привести к уравнению
- за
куда сейчас Каждый k дает одно уравнение в неизвестные элементы и вместе эти уравнения можно записать для известных матрица и неизвестно 2кв.-мерный вектор Этот вектор можно найти так же, как и раньше.
В самом общем случае и . Основное отличие от предыдущей в том, что матрица сейчас и антисимметричный. Когда пространство таких матриц уже не одномерно, а размерно
Это означает, что каждое значение k обеспечивает M однородные уравнения типа
- за и для
куда это M-мерный базис пространства антисимметричные матрицы.
Пример п = 3
В случае, если п = 3 следующие три матрицы можно выбрать