Покрокова оцінка позиції камери для візуального відстеження та плоских маркерів


21

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

Я думаю, що наступні запитання заслуговують детальної поетапної відповіді.

  • Що таке внутрішні камери?
  • Що таке зовнішня камера камери?
  • Як обчислити гомографію з планарного маркера?
  • Якщо у мене є гомографія, як я можу отримати позу для камери?

Я нечіткий щодо ренормалізації, яку ви робите: 1. Н - гомографія, знайдена з даних за допомогою певної процедури (скажімо, SVD). 2. inv (K) * H = A - це те, з чим ти тут працюєш. Тоді ви робите q1 = a1 / норма (a1) і q2 = a2 / норма (a2) як ортонормальні стовпці матриці обертання, і робите q3 = q1xq2 ... Тоді ви берете t / (щось), щоб отримати вектор перекладу. Як це ви можете просто розділити q1 і q2, можливо, різними речами, і як вибрати, на що поділити t? Або ідея, що процедура SVD та множення на inv (K) дають щось близьке, але не зовсім ортогональну / ортонормальну матрицю обертання, так що
user2600616

Але як я міг отримати 3D-точку (X, Y, 1)?
waschbaer

Відповіді:


19

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

Що таке внутрішні камери?

Камери внутрішні параметри, як правило , називається матрицею калібрування камери, . Ми можемо писатиK

K=[αusu00αvv0001]

де

  • α v u v f α u = k u f α v = k v f k u k v u vαu та - коефіцієнт масштабу у напрямках координат та , і пропорційний фокусному відстані камери: та . та - кількість пікселів на одиничну відстань у напрямках та .αvuvfαu=kufαv=kvfkukvuv

  • c=[u0,v0]T називається основною точкою, як правило, координатами центру зображення.

  • u vs - перекос, лише ненульовий, якщо і неперпендикулярні.uv

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

Що таке зовнішня камера камери?

Зовнішні параметри камери або зовнішні параметри - це матриця яка відповідає евклідовій трансформації зі світової системи координат у систему координат камери. являє матрицю обертання і - переклад.3 × 4 R 3 × 3 t[R|t]3×4R3×3t

Програми комп'ютерного зору орієнтуються на оцінку цієї матриці.

[R|t]=[R11R12R13TxR21R22R23TyR31R32R33Tz]

Як обчислити гомографію з планарного маркера?

Гомографія - це однорідна матриця яка пов'язує тривимірну площину та її проекцію зображення. Якщо у нас є площина то гомографія яка відображає на цю площину точку і відповідну їй 2D точку під проекцією єZ = 0 H M = ( X , Y , 0 ) T m P = K [ R | t ]3×3Z=0HM=(X,Y,0)TmP=K[R|t]

m~=K[R1R2R3t][XY01]

=K[R1R2t][XY1]

H=K[R1R2t]

Для обчислення гомографії нам потрібна точкова пара світ-камера. Якщо у нас є планарний маркер, ми можемо обробити його зображення, щоб отримати функції, а потім виявити ці особливості в сцені, щоб отримати збіги.

Нам просто потрібно 4 пари для обчислення гомографії за допомогою прямої лінійної трансформації.

Якщо у мене є гомографія, як я можу отримати позу для камери?

Гомографія і поза містять однакову інформацію, і її легко переходити від однієї до іншої. Останній стовпець обох є вектором перекладу. Перший стовпчик і два гомографії також є одним стовпцем і двома матриці позиції камери. Це тільки ліва колонка три з , і як вона повинна бути ортогональною може бути обчислена як векторний добуток стовпців з однієї і двома:К [ Р | t ] H 1 H 2 R 1 R 2 R 3 [ R | t ]HK[R|t]H1H2R1R2R3[R|t]

R3=R1R2

Через надмірність необхідно нормалізувати ділення на, наприклад, елемент [3,4] матриці.[R|t]


4
Я вважаю, що повірити, що калібрування - це "просто, а не мета резюме", вводить в оману. У звичайному випадку нам також потрібно оцінити параметри спотворень. Замість самокалібрування я б рекомендував планарну калібрування (Чжан - Нова гнучка техніка калібрування камери), оскільки вона є більш гнучкою, якщо можна проводити роздільну процедуру калібрування. Ви також маєте невелику помилку в "Якщо у мене є гомографія, як я можу отримати позу для камери?" так як ви не приймаєте до уваги калібрування (H_ {calib} = K ^ -1H).
buq2

3
поза камери з гомографії неправильна. Існує кілька способів зробити це 'деякі з них є нетривіальними.
mirror2image

Я не бачу, чому це неправильно. Я обчислюю це таким чином і працює. Чому ти кажеш, що це неправильно?
Jav_Rock

3
В останньому розділі ви писали, що H ^ 1 і R ^ 1 і рівні, але в третьому розділі ви заявляєте, що H = K [RT], що означало б, що R ^ 1 насправді K ^ -1H ^ 1. Але це не зовсім вірно, оскільки існує нескінченна кількість Н, яке задовольнить рівняння і спричинить проблеми при розв’язуванні R ^ 1, R ^ 2 і T (невідома шкала). Ваша відповідь не враховує надійної внутрішньої та викривлення калібрування, а деякі рівняння неправильні, тому це не є гарною відповіддю на питання.
buq2

Так, мені не вистачало калібрувальної матриці на третьому кроці, коли я взяв це з мого коду і помножую на K на іншу функцію кодів.
Jav_Rock

3

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

У цій статті подані закриті формули для розкладання гомографії, але формули дещо складні.

OpenCV 3 вже реалізує саме цю декомпозицію ( розкластиHomographyMat ). Враховуючи гомографію та правильно масштабовану матрицю внутрішніх характеристик, функція забезпечує набір із чотирьох можливих обертань та перекладів.

Матриця внутрішніх значень в цьому випадку повинна бути надана в піксельних одиницях, це означає, що ваша основна точка зазвичай є, (imageWidth / 2, imageHeight / 2)а фокусна відстань - зазвичай focalLengthInMM / sensorWidthInMM * imageHeight.


Що є правильно масштабованою матрицею внутрішніх даних?
Гіг

1
Я оновив свою відповідь. Будь ласка, дивіться вище.
Emiswelt

Ей, @Emiswelt, чи не фокусна відстань focalLengthInMM / sensorWidthInMM * imageWidth? Чому ви обираєте висоту замість цього?
El Marce
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.