Обчислення відстані до спостережуваного об'єкта по зображеннях з стереопари, публікація в журналі

Бібліографічний опис:

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

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

Одне із застосувань стереозрения - навігація рухомих роботів. Наприклад, Національне управління з повітроплавання і дослідженню космічних просторів (НАСА) розробила робота (марсохід Mars Exploration Rover) для дослідження поверхні планети Марс. За допомогою системи стереозрения робот може визначати відстань до перешкоди і успішно обходити його.

  1. дві USB-камери;
  2. шаблон шахівниці розміру 594 x 841 мм;
  3. ноутбук з операційною системою MacOS, Python 2.7;
  4. рулетка вимірювальна.

Підготовчі роботи перед розробкою алгоритму.

  1. Виготовлення шаблону шахівниці розміром 594 x 841 мм на основі стандартного шаблону бібліотеки з відкритим вихідним кодом OpenCV. Даний шаблон має 6 вузлів по вертикалі і 9 вузлів по горизонталі.
  2. Створення стенду з двох USB-камер, закріплених на тверду рівну поверхню, розташованих на фіксованій відстані один від одного.

Обчислення відстані до спостережуваного об'єкта по зображеннях з стереопари, публікація в журналі

Мал. 1. Алгоритм обчислення відстані до об'єкта

На малюнку 1 представлений алгоритм обчислення відстані до спостережуваного об'єкта. Наведемо докладний пояснення кожного з кроків.

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

Крок 2. На другому кроці проводиться пошук вузлів шаблону шахівниці на зображеннях, отриманих на кроці 1. Пошук вузлів шаблону здійснюється за допомогою бібліотечної функції OpenCV find Chessboard Corners (). Координати вузлів шаблону зберігаються для подальшого використання.

Крок 3. На третьому кроці проводиться калібрування кожної з стереопар по-окремо. Калібрування камер стереопари здійснюється за допомогою бібліотечної функції OpenCV calibrate Camera ().

Крок 4. На четвертому кроці проводиться калібрування всієї стереопари. Дані, отримані на третьому кроці подаються на вхід бібліотечної функції OpenCV stereo Calibrate (), яка вважає внутрішні параметри стереопари. Після процедури стерео калібрування ми отримуємо фокусна відстані камер в пікселях і координати принципових точок камер.

Крок 5. На п'ятому етапі проводиться усунення дисторсії на зображеннях, отриманих на першому кроці. Усунення дисторсии проводиться за допомогою бібліотечних функцій OpenCV init Undistort Rectify Map () і remap (). Після виконання даного кроку, все прямі лінії спостережуваних об'єктів навколишнього світу стають прямими лініями на зображенні.

Крок 6. На шостому етапі проводиться ректифікація зображень, отриманих на кроці 5. Ректификация полягає у вирівнюванні деформованих зображень, отриманих на кроці 5, таким чином, щоб епіполярние лінії зображень з лівої камери збігалися з епіполярнимі лініями зображень з правого камери. Дану процедуру виконує бібліотечна функція OpenCV stereo Rectify ().

Крок 7. На сьомому кроці для кожної пари відповідних зображень з лівої і правої камер проводиться побудова карти диспаратность (або карти глибини (depth map)) по зображеннях, отриманих на шостому кроці. Кожен піксель карти диспаратность містить в собі інформацію про те, скільки пікселів по осі OX знаходиться між відповідні пікселями зображень об'єкта з лівої і правої камер. Побудова карти диспаратность здійснюється на основі алгоритму SGBM за допомогою бібліотечної функції OpenCV Stereo SGBM.

Крок 8. На восьмому етапі проводиться обчислення відстані до спостережуваного об'єкта. Обчислення відстані до об'єкта безпосередньо пов'язано з інформацією, яку несе в собі карта диспаратность, побудована на сьомому кроці.

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

  1. відстань між камерами стереопари (базове відстань, base length)
  2. фокусна відстань камери стереопари
  3. карта диспаратность

Знайти. відстань до об'єкта, що спостерігається

- відстань між камерами стереопари (в метрах)

- фокусна відстань камери стереопари (в пікселях)

- координата по осі OX точки об'єкта P на зображенні з лівої камери

- координата по осі OX точки об'єкта P на зображенні з правого камери

Обчислення відстані до спостережуваного об'єкта по зображеннях з стереопари, публікація в журналі

Мал. 2. Пояснювальна малюнок

- диспаратность точки x0 об'єкта P (в пікселях)

- відстань до об'єкта, що спостерігається (в метрах)

Подивившись на Малюнок 2, можна помітити подібні трикутники. З подібних трикутників слід співвідношення:

З даного співвідношення слід, що

Отримали формулу, для обчислення відстані до спостережуваного об'єкта.

Проаналізувавши дану формулу, можна зробити наступні висновки:

  1. Відстань до точки об'єкта обернено пропорційно диспаратности даної точки. Це свідчить про те, що точки, розташовані далі від площини стереопари мають меншу диспаратность, ніж точки, розташовані ближче до площини стереопари.
  2. Значення диспаратности прямо пропорційно відстані між камерами. Чим більше відстань між камерами, тим вище диспаратность.
  3. Дозвіл карти диспаратность лінійно залежить від дозволу зображення. Чим вище дозвіл зображення, тим більше акуратною виходить карта диспаратность.

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

Наведемо наочні ілюстрації результату роботи алгоритму і побудуємо залежність помилки визначення діспаратноcтей від відстані до спостережуваного об'єкта.

Дійсні відстані від площини стереопари до спостережуваних об'єктів

Під помилкою визначення диспаратности будемо розуміти модуль різниці значення диспаратность, відповідного обчисленим відстаням (на основі базового відстані, фокусної відстані і значення диспаратность) і значення диспаратность, відповідного дійсним відстанню.

Обчислення відстані до спостережуваного об'єкта по зображеннях з стереопари, публікація в журналі

Мал. 3. Зображення з правого камери (етап збірки кадрів з камери із зображенням шахової дошки)

Обчислення відстані до спостережуваного об'єкта по зображеннях з стереопари, публікація в журналі

Мал. 4. Зображення з лівої камери (етап збірки кадрів з камери із зображенням шахової дошки)

Обчислення відстані до спостережуваного об'єкта по зображеннях з стереопари, публікація в журналі

Мал. 5. Зображення з лівої камери зі знайденим шаблоном (етап пошуку вузлів шаблону шахівниці на зображеннях)

Обчислення відстані до спостережуваного об'єкта по зображеннях з стереопари, публікація в журналі

Мал. 6. Отректіфіцірованное зображення з правого камери з усуненою дісторсией (етап ректифікації і усунення дисторсії)

Обчислення відстані до спостережуваного об'єкта по зображеннях з стереопари, публікація в журналі

Мал. 7. Отректіфіцірованное зображення з лівої камери з усуненою дісторсией (етап ректифікації і усунення дисторсії)

Обчислення відстані до спостережуваного об'єкта по зображеннях з стереопари, публікація в журналі

Мал. 8. Зображення сцени з спостерігаються об'єктами (стіл, три книги і дошка, розташовані на відстані один від одного)

Обчислення відстані до спостережуваного об'єкта по зображеннях з стереопари, публікація в журналі

Мал. 9. Карта диспаратность для зображень з правої і лівої камери (стіл, три книги і дошка, розташовані на відстані один від одного)

Обчислення відстані до спостережуваного об'єкта по зображеннях з стереопари, публікація в журналі

Мал. 10. Залежність помилки визначення диспаратности від відстані до спостережуваного об'єкта

За графіком видно, що найбільше значення помилки визначення диспаратности для відстані до спостережуваного об'єкта від 2.30 до 4.15 метрів становить всього 1.2, що свідчить про хорошу якість карти диспаратность.

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

Основні терміни (генеруються автоматично). шахівниці, обчислення відстані, бібліотечної функції opencv, шаблону шахівниці, шаблон шахівниці, вузлів шаблону, лівої камери, карти диспаратность, першому кроці, шостому кроці, алгоритм обчислення відстані, третьому кроці, помилки визначення, допомоги бібліотечної функції, вузлів шаблону шахової , Обчислення відстані, камер стереопари, правою камер, площині стереопари, другому кроці.