рпендикуляр на картинну площину. Точка перетину перпендикуляра та картинної площини називається принципової точкою p. З цією точкою зв'яжемо систему відліку (x, y).
Рисунок 12 - Модель камери
Системи координат (X, Y, Z) і (x, y) пов'язані нелінійним перетворенням (формули (9) і (10)).
(9)
(10)
Зв'яжемо систему координат (u, v) з лівим верхнім кутом. Відлік в цій системі відбувається в пікселях (малюнок 13). Принципова точка має координати p=(0,0) в системі (x, y); координати (0,0, Z) в системі (X, Y, Z) і координати (Cx, Cy) в системі (u, v).
Малюнок 13 - Система координат (u, v)
Системи координат (u, v) і (x, y) пов'язані аффіннимі перетвореннями (формули (11) і (12)).
,
де pix - довжина пікселя.
Підставляючи формули (9) і (10) у формули (11) і (12), отримуємо вирази, що зв'язують системи (u, v) і (X, Y, Z).
, (13)
, (14)
де f=3,85 мм;=0,0232 мм;=300 пікселів;=255 пікселів.
Параметри Cx і Cy були визначені в ході калібрування камери з роздільною здатністю 640 * 480.
Створення алгоритму для визначення орієнтації по ключових точках QR коду
Нашим завданням є визначення кутів повороту QR коду навколо осей x і y. Інформацію про ці кутах ми отримаємо, порівнюючи зображення повернутого QR коду, центр якого розташований на відстані Z `від камери, з QR кодом, що знаходиться на такій же відстані, але в картинній площині, тобто з нульовими кутами повороту. У даній роботі ми використовуємо факт, що координати точок QR, що лежать на осях ox і oy, змінюються під впливом тільки одного повороту.
Спочатку нам потрібно дізнатися координати центру p `= (CCx, CCy) QR коду на зображенні в системі (u, v) (рисунок 14). Визначити їх приблизно можна за формулами (14) і (15).
Малюнок 14 - Картинна площину камери
15)
(16)
де LeftUp, RightUp, LeftDown, RightDown - ключові точки зображення QR коду.
Для початку розглянемо випадок повороту QR коду тільки навколо однієї осі x (малюнок 15).
Малюнок 15 - Поворот QR коду навколо x `
Нехай довжина сторони квадрата дорівнює A, тоді в системі (x `, y`) вершини квадрата, що лежить в картинній площині мають координати (-A / 2,-A / 2); (A / 2,-A / 2); (A / 2, A / 2); (-A / 2, A / 2). Припустимо, QR код повернений навколо x `на кут a, тоді координати точок цього квадрата, що лежать на осі ох` не зміняться, а координати точок Vв і Vн, що лежать на осі oy `, зменшаться. Використовуючи малюнок, на якому представлений вид збоку, можна виразити координату точки Vн в системі (X, Y, Z) через a (малюнок 16).
Малюнок 16 - Площина QR коду, вид збоку
(17)
Після повороту за годинниковою стрілкою навколо осі ox `точка Vн стала перебувати ближче до камери, а значить, її координата Z зменшилася на sin (a) * A / 2.
Використовуючи формулу (13), висловимо координату точки Vн в системі (u, v) через a і отримаємо формулу (18):
, (18)
де Z `- координата центру квадрата.
Значення Vн отримуємо з аналізу зображення. Знаючи Z `ми знаходимо кут повороту a. Аналогічним чином визначимо кут...