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