НОУ ІНТУІТ, Лекція, Проектна геометрія в комп’ютерному зорі

1.5. Калібрація камери

Ми обговорили, що у нас є внутрішні параметри камери - матриця K, і є коефіцієнти дисторсії. І якщо ми хочемо цю математику застосовувати, щоб зрозуміти, куди тривимірні точки переходять – нам потрібно ці коефіцієнти звідкись брати. Поки що звідки їх брати – зовсім незрозуміло. І щоб зрозуміти, які камери внутрішні параметри, які конкретно у неї коефіцієнти, проводиться процедура калібрації камери. Якщо ми багато разів покажемо камері об'єкт, про який знаємо, як він влаштований, ми зможемо знайти ці параметри.

проектна

Наприклад, шахівниця – ми знаємо, які саме в неї точки – ми можемо подивитися, в які точки вони перейшли на зображенні. Якщо ми покажемо цей шаблон нашій камері і побачимо, куди проектуються точки, то ми зможемо встановити ці параметри. У нас знову постає завдання оптимізації. Ми знаємо тривимірні координати кутів (ми можемо виміряти розміри квадрата і записати тривимірні координати шахівниці), ми можемо продетектувати ці куточки на зображенні – це стандартне завдання. Таким чином, у нас буде відповідність між тривимірною точкою та двовимірною точкою. І нам потрібно знайти такі параметри, щоб тривимірні точки переходили саме у ці двовимірні точки. Тобто, нам потрібно оптимізувати параметри камери так, щоб у нас виходила правильна проекція. Чи має значення положення дошки і те, що вона розташована перпендикулярно до камери? Для калібрування нам потрібно показувати дошку під різними кутами – її можна повертати, її потрібно показати у всіх частинах камери, щоб надійно встановити її параметри. Тому що якщо ви показуватимете шаблон в одній і тій же позиції в одному кутку, то ми добре з'ясуємо, як камера проектуєцей кут, але в решті зображення все може бути дуже погано.

інтуіт

Крім шахової дошки можна використовувати й інші шаблони – наприклад, шаблон із намальованих гуртків, він показує більш точні результати, тому що центр кола можна знайти з більшою точністю, ніж кут шахової дошки. Відповідно, калібрація виходить точнішою. Можна використовувати складніші шаблони, наприклад, тривимірні.

Розглянемо рахунок чого саме відбувається калібрація. Припустимо, ми помістили до якоїсь частини камери дошку. Для шахівниці ми знаємо всі кути і всі відповідності, у нас тут завдання просте – всі відповідності є і всі відповідності правильні. Проекція кожної точки дає нам рівняння, обмеження, як має проектуватися камера. Ми складаємо ці обмеження зі всіх зображень – зазвичай це кілька десятків – і вирішуємо задачу оптимізації. У звичайних умовах достатньо одного калібрування для однієї камери. Чи надають виробники камер якісь технічні дані? Проблема в тому, що для однієї моделі ці параметри трошки відрізнятимуться. Можна надати якісь параметри за промовчанням і такі камери існують, для яких вони вважаються – для моделі. Але для конкретної камери даної моделі вони можуть трохи відрізнятися. Тому що якби вони не відрізнялися, це означало б, що матриця розташована абсолютно на тому самому місці, абсолютно такі ж лінзи. Насправді таке неможливо. У вас завжди будуть невеликі відхилення, отже ваші параметри калібрації теж будуть трохи іншими. Тому для більш точних параметрів потрібно робити калібрування самому. Можна намагатися OpenCV test data робити автокалібрацію – знімати камерою звичайне зображення – без шаблонів шахівниці, і при цьому намагатисязрозуміти, які має внутрішні параметри. Автоматично, без шаблонів, намагатись зрозуміти, як вона спотворює. Але на практиці виходить, що це іноді працює, іноді це не працює. В алгоритмі автокалібрації є кілька параметрів – ці параметри потрібно підбирати для того, щоб запустити алгоритм, тому що за одних параметрів алгоритм спрацює добре, за інших спрацює погано. Є статті на цю тему про те, як це можна робити. Але поки що це завдання не вирішено. У ситуації ж з використанням шаблонів - ви з набагато більшою надійністю отримаєте хорошу калібрацію камери.

1.6. Планарні об'єкти. Гомографія

Наступне, що потрібно розглянути, – це робота з планарними (плоськими) об'єктами. У комп'ютерному зір часто виникають планарні об'єкти – це особливий важливий випадок, який потрібно обговорити окремо, і розглянути які саме перетворення виходять для плоских об'єктів. Це перетворення називається гомографією. Нехай у нас є якийсь плоский об'єкт, у нього якісь точки p1, p2, p3, p0 розташовані в одній площині.

інтуіт

Ми знімаємо їх камерою з однієї точки, а потім знімаємо їх камерою з іншої позиції. Також можна говорити, що у нас камера фіксована, і ми знімаємо шаблон в одній позі, а потім перемістився об'єкт, і ми знімаємо його в іншій позі. Виявляється, що координати точок на зображенні – на першому та другому – вони будуть пов'язані перетвореннями гомографії:

Це перетворення ми зараз виведемо.

Розглянемо проекцію на першому зображенні та проекцію на другому зображенні. У другому випадку у нас інша проекційна матриця, тому що поза іншою, відповідно точка теж буде іншою. Ми хочемо знайти перетворення між пікселями на зображенні. Ідея отримання цього перетворення полягає в наступному:Так як об'єкт плоский, то ми можемо вибрати таку систему координат, в якій початок координат розташований десь на цій площині, вісь Z буде спрямована нормалі до цієї площини. І якось спрямовані осі X, Y. У цій системі координат будуть нові проекційні матриці, які можна перерахувати. Головне, що координати нашого об'єкта тепер замість (X, Y, Z, 1) будуть (X, Y, 0,1). При множенні такого вектора (X,Y,0,1) на проекційну матрицю розмірності 3*4, то третій стовпець постійно множитиметься на нуль. Тому на площині як проекційна матриця ми можемо використовувати матрицю P без третього стовпця і множити її на вектор (X, Y, 1). Теж вірно для другого зображення. Тепер нові проекційні матриці P1 і P2 мають розмірність 3 * 3, подальше просто. Ми можемо зліва помножити на зворотну матрицю, отримаємо, що

Виходить, що коли знаємо координати першого зображення на площині, існує така матриця , помноживши яку, ми отримаємо координати другому зображенні.

Матриця Н є перетворення гомографії. Оскільки все відбувається в однорідних координатах, то можна помножити на будь-який ненульовий коефіцієнт w і все буде теж саме. Для переходу від однорідних координат до пікселів необхідно поділити на w .

Тепер подивимося, як матрицю гомографії можна використовуватиме знаходження плоского об'єкта на зображенні.

У нас є плоский об'єкт, який ми хочемо знайти,

інтуіт

і є тестове зображення, де він десь розташований.

інтуіт

Ми використовуємо стандартну схему. Ми знаходимо ключові точки, знаходимо дескриптори, і ми знаходимо відповідність між дескрипторами.

У нас є багато помилкових відповідей, тому одразу незрозуміло, де знаходиться об'єкт.

проектна

Але ми можемо знову застосувати схему RANSAC. Випадково виберемо чотири відповідності, за ними знайдемо матрицю гомографії. І генерувати доти, доки не вийде багато інлаєрів. І після застосування цієї схеми ми вже знаходимо потрібний об'єкт.

інтуіт

Це дуже потужна ідея – геометрична валідація відповідності. У нас дуже багато відповідей, але ми знаємо, що правильні відповідності переводять плоский об'єкт у плоский об'єкт, тому вони мають підкорятися гомографії. Таким чином, викидаючи відповідності, які не відповідають гомографії, ми залишаємо тільки правильні і, тим самим, знаходимо об'єкт на зображенні.