Пряме лінійне перетворення

Матеріал з testwiki
Версія від 02:41, 31 січня 2023, створена imported>BunykBot (Виправлена суміш розкладок)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

Пряме лінійне перетворення (англ. Direct linear transformation, DLT ) - це алгоритм, який знаходить набір змінних із набору відношень подібності:

𝐱k𝐀𝐲k для k=1,,N

де 𝐱k і 𝐲k відомі вектори, позначає рівність до невідомого скалярного множника, і 𝐀 - це матриця (або лінійне перетворення) що складається із невідомих.

Залежності такого типу часто зустрічаються в проективній геометрії . Практичні приклади включають взаємозв'язок між 3D-точками сцени та їх проєкцією на площину зображення камери-обскури [1] та гомографії .

Вступ

Звичайна система лінійних рівнянь

𝐱k=𝐀𝐲k для k=1,,N

може бути розв'яза, наприклад, перетворенням її у матричне рівняння 𝐗=𝐀𝐘 де матриці 𝐗 і 𝐘 містять вектори 𝐱k і 𝐲k у відповідних стовпцях. Якщо існує унікальний розв'язок, то його можна визначити як

𝐀=𝐗𝐘T(𝐘𝐘T)1.

Проблема прямого лінійного перетворення відрізняється від наведеного вище стандартного випадку тим, що ліва та права сторони рівняння можуть відрізнятися на невідомий множник k, свій для кожного рівняння. Як наслідок, 𝐀 неможливо обчислити стандартним шляхом. Натомість відношення подібності переписуються як система лінійних однорідних рівнянь, яка потім може бути вирішена стандартним методом. Представлення рівнянь подібності як системи однорідних лінійних рівнянь із подальшим її розв’язанням стандартними методами зветься алгоритмом прямого лінійного перетворення або алгоритмом DLT . Метод DLT приписується Айвену Сазерленду. [2]

Приклад

Припустимо, що k{1,...,N} . Нехай 𝐱k=(x1k,x2k)2 і 𝐲k=(y1k,y2k,y3k)3 два відомі вектори і ми хочемо знайти 2×3 матрицю 𝐀 таку, що

αk𝐱k=𝐀𝐲k

де αk0 - невідомий скалярний коефіцієнт, пов'язаний з рівнянням k .

Щоб позбутися невідомих скалярів та отримати однорідні рівняння, визначемо антисиметричну матрицю

𝐇=(0110)

та помножемо обидві сторони рівняння на 𝐱kT𝐇 зліва

(𝐱kT𝐇)αk𝐱k=(𝐱kT𝐇)𝐀𝐲kαk𝐱kT𝐇𝐱k=𝐱kT𝐇𝐀𝐲k

Оскільки 𝐱kT𝐇𝐱k=0, наведені однорідні рівняння більше не містять невідомих скалярів

𝐱kT𝐇𝐀𝐲k=0

Для того, щоб знайти 𝐀 з цього набору рівнянь розглянемо елементи векторів 𝐱k і 𝐲k і матрицю 𝐀 :

𝐱k=(x1kx2k)𝐲k=(y1ky2ky3k) , і 𝐀=(a11a12a13a21a22a23)

Наведене вище однорідне рівняння отримує вигляд

0=a11x2ky1ka21x1ky1k+a12x2ky2ka22x1ky2k+a13x2ky3ka23x1ky3k для k=1,,N.

Або у матричній формі:

0=𝐛kT𝐚 для k=1,,N

де 𝐛k і 𝐚 - це 6-мірні вектори, що визначаються як

𝐛k=(x2ky1kx1ky1kx2ky2kx1ky2kx2ky3kx1ky3k) і 𝐚=(a11a21a12a22a13a23).

Наразі ми маємо 1 рівняння та 6 невідомих. Набір однорідних рівнянь можна записати у матричній формі

𝟎=𝐁𝐚

де 𝐁 є N×6 матрицею, яка містить відомі вектори 𝐛k в рядах. Невідоме 𝐚 може бути визначено, наприклад, шляхом розкладу на особливі значення 𝐁 ; 𝐚 - правий сингулярний вектор 𝐁. Коли 𝐚 визначено, матриця 𝐀 може бути побудована з елементів 𝐚. Зверніть увагу, що масштабування 𝐚 або 𝐀 не є важливим (за винятком нульового масштабу), оскільки початкові рівняння вже допускають невідоме масштабування.

На практиці вектори 𝐱k і 𝐲k можуть містити шум, що означає, що рівняння подібності справедливі лише приблизно. Як наслідок, може не існувати вектора 𝐚 для якого однорідне рівняння 𝟎=𝐁𝐚 виконується точно. У цих випадках для розв'язку можна використовувати метод найменших квадратів.

Примітки

Шаблон:Reflist

Посилання