Download as pdf or txt
Download as pdf or txt
You are on page 1of 37

Міністерство освіти і науки України

НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «КИЄВО-МОГИЛЯНСЬКА АКАДЕМІЯ»

Кафедра інформатики факультету інформатики

ТЕМА «Використання методу Лукаса-Канаде для аналізу руху та


відстеження об’єктів»

Текстова частина до курсової роботи

за спеціальністю „Комп’ютерні науки та інформаційні технології” 122

Керівник курсової роботи

старший викладач Бучко О.А.

“____” __________ 2020 р.

Виконала студентка ФІ-4

Кушнір Вікторія

“____” __________ 2020 р.

Київ 2020
Міністерство освіти і науки України
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «КИЄВО-МОГИЛЯНСЬКА АКАДЕМІЯ»
Кафедра математики факультету інформатики

ЗАТВЕРДЖУЮ
Зав. кафедри інформатики,
канд. фіз-мат. наук, доц. Гороховський С. С.

___________________

„19” квітня 2020 р.

ІНДИВІДУАЛЬНЕ ЗАВДАННЯ
на курсову роботу

студентці Кушнір В.О. факультету інформатики 4 курсу


ТЕМА «Використання методу Лукаса-Канаде для аналізу руху та відстеження
об’єктів »

Зміст ТЧ до курсової роботи:


Індивідуальне завдання
Вступ
Розділ 1. Загальна теорія та огляд інструментів розробки проекту
1.1 Постановка задачі комп’ютерного зору
1.1.1 Актуальність дослідження та ринок комп’ютерного зору
1.1.2 Задачі комп’ютерного зору
1.1.3 Технології комп’ютерного зору
1.1.4 Основні підходи до рішення задач комп’ютерного зору
1.1.5 Бібліотеки ПЗ комп зору
1.1.6 Застосування комп’ютерного зору
1.2 Дослідження продуктивності методів обчислення оптичного потоку
1.2.1. Проблема обчислення оптичного потоку
1.2.2. Методи обчислення оптичного потоку
1.3 Алгоритми відстеження точкових особливостей сцени
1.3.1. Опис задачі
1.3.2 Формальна постановка задачі
1.3.3 Алгоритм Лукаса-Канаде
1.4 Огляд інструментів розробки
Розділ 2. Програмна реалізація та тестування
2.1 Програмна реалізація
2.2 Тестування
Висновки
Список літератури

Дата видачі „15” жовтня 2019 р.


Керівник _____________
Завдання отримала ________
Тема: Використання методу Лукаса-Канаде для аналізу руху та відстеження об’єктів
Календарний план виконання роботи:
№ Назва етапу Термін Примітка
виконання
1. Отримання теми курсової роботи 15.10.2019
2. Пошук тематичної літератури 25.10.2019
3. Ознайомлення з літературою 26.10.2019
4. Ознайомлення з основними 10.11.2019
технологіями та підходами до
вирішення задач комп’ютерного зору.
5. Дослідження продуктивності методів 20.11.2019
обчислення оптичного потоку
6. Дослідження методу Лукаса-Канаде 15.12.2019
7. Вибір середовища розробки та 20.01.2020
ознайомлення з необхідними
інструментами
8. Написання текстової частини 17.02. 2020
курсової роботи
9. Написання практичної частини 01.03.2020
курсової роботи
10. Написання висновків курсової роботи 25.03.2020
11. Перегляд змісту роботи з керівником 08.04.2020
12. Внесення змін до курсової роботи 10.04.2020
відповідно до зауважень наукового
керівника
13. Створення презентації 16.04.2020
14. Захист роботи 24.04.2020

Студент Кушнір В.О.


Керівник Бучко О.А.
“____” ________________
Зміст

Вступ ......................................................................................................................................2
Розділ 1. Загальна теорія та огляд інструментів розробки проекту ...................................3
1.1. Постановка задачі комп’ютерного зору ..................................................................3
1.1.1. Актуальність дослідження та ринок комп’ютерного зору ...............................3
1.1.2. Задачі комп’ютерного зору. ...............................................................................8
1.1.3. Технології комп’ютерного зору. ........................................................................8
1.1.4. Основні підходи до рішення задач комп’ютерного зору................................ 10
1.1.5. Бібліотеки ПЗ комп зору .................................................................................. 17
1.1.6. Застосування комп’ютерного зору. ................................................................. 17
1.2. Дослідження продуктивності методів обчислення оптичного потоку. ............... 19
1.2.1. Проблема обчислення оптичного потоку. ....................................................... 19
1.2.2. Методи обчислення оптичного потоку............................................................ 20
1.3. Алгоритми відстеження точкових особливостей сцени. ...................................... 21
1.3.1. Опис задачі. ....................................................................................................... 21
1.3.2. Формальна постановка задачі. ......................................................................... 21
1.3.3. Алгоритм Лукаса-Канаде. ................................................................................ 22
1.4. Огляд інструментів розробки. ............................................................................. 25
2. Розділ 2. Реалізація та тестування. ............................................................................... 29
2.1. Програмна реалізація .............................................................................................. 29
2.2. Тестування ............................................................................................................... 31
Висновки........................................................................................................................... 33
Список використаної літератури ..................................................................................... 34

1
Вступ

Методи обробки зображень є надзвичайно важливими для сучасної науки, вони


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

Області застосування методів цифрової обробки в наш час значно розширюються,


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

Сьогодні важко представити область діяльності, у якій можна обійтися без


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

2
Розділ 1. Загальна теорія та огляд інструментів розробки проекту
1.1. Постановка задачі комп’ютерного зору
1.1.1. Актуальність дослідження та ринок комп’ютерного зору

Інтерес до комп'ютерного зору виник одним з перших в області штучного інтелекту


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

Прогрес в області комп'ютерного зору визначається двома факторами: розвиток теорії,


методів, і розвиток апаратного забезпечення. Довгий час теорія і академічні
дослідження випереджали можливості практичного використання систем
комп'ютерного зору. Умовно можна виділити ряд етапів розвитку теорії.

• До 1970-х років сформувався основний понятійний апарат в області обробки


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

• До 80-х сформувалася теорія рівнів представлення зображень в методах їх аналізу.


Свого роду відміткою закінчення цього етапу служить книга Девіда Марра «Зір.
Інформаційний підхід до вивчення подання та обробки зорових образів».

• До 90-х сформувалося систематичне уявлення про підходи до вирішення основних,


що вже стали класичними, завдань машинного зору.

• З середини 90-х відбувається перехід до створення і дослідження великомасштабних


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

• Поточний етап найбільш цікавий розвитком методів автоматичної побудови уявлень


зображень в системах розпізнавання зображень і комп'ютерного зору на основі
принципів машинного навчання.

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


Адже щоб виконати навіть найпростішу обробку зображення, потрібно хоча б один раз
переглянути всі його пікселі (і зазвичай не один раз). Для цього потрібно виконувати
як мінімум сотні тисяч операцій в секунду, що довгий час було неможливо і вимагало
спрощень.

Наприклад, для автоматичного розпізнавання деталей в промисловості могла


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

Тож не дивно, що на 1970-ті роки припав пік інтересу і до оптичних обчислень в


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

Поступово, завдяки зростанню продуктивності процесорів (а також розвитку цифрових


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

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


для спецпроцесорів - цифрових сигнальних процесорів (ЦСП) і програмованих
логічних інтегральних схем (ПЛІС), нерідко спільно використовувалися і знаходять
широке застосування до сих пір в бортових і промислових системах.

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

Як видно, система машинного зору включає наступні основні компоненти:

• підсистему формування зображень (яка сама може включати різні компоненти,


наприклад об'єктив і ПЗС- або КМОП-матрицю);

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

Найбільш масового застосування досягають системи машинного зору, що


використовують стандартні камери і комп'ютери в якості перших двох компонент
(саме до таких систем більше підходить термін «комп'ютерний зір», хоча чіткого
поділу понять машинного і комп'ютерного зору немає). Однак, природно, інші
системи машинного зору мають не меншу значимість. Саме вибір «нестандартних»
способів формування зображень (включаючи використання інших, крім видимого,
спектральних діапазонів, когерентного випромінювання, структурованої підсвічування,
гіперспектральних приладів, часопролітної, всеспрямованих і швидкодіючих камер,
телескопів і мікроскопів і т. д.) істотно розширює можливості систем машинного зору .
У той час як за можливостями алгоритмічного забезпечення системи машинного зору

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

Ринок і майбутнє
Діапазон застосувань CV в останні 10-15 років значно розширився. Компанія Tractica в
своєму звіті про ринок комп'ютерного зору в 2014 році вказує шість областей CV. В
2016 році в новій версії звіту Tractica вказує вже вісім областей застосування
комп'ютерного зору: додані Retail (роздрібна торгівля) і Agriculture (сільське
господарство).

Рисунок 1. Прогноз компанії Tractica щодо обсягів ринку систем CV у майбутньому

Оцінки обсягу світового ринку систем CV у різних аналітичних компаній досить


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

Одні компанії можуть оцінювати ринок CV разом з супутньою технологією штучного


інтелекту (AI), інші виділяють AI в окремий ринковий сегмент. З іншого боку, далеко
не весь обсяг AI відноситься до CV.

Все це ускладнює процес об'єктивної оцінки ринку CV в світі, окремих регіонах і


країнах.

Наприклад, найбільш авторитетна аналітична компанія McKinsey в своєму дослідженні


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

Так, на 2016 р McKinsey оцінює ринок Computer Vision c великим «розкидом»: від 2,5
до 3,5 млрд. дол. Причому найбільшу частку інвестицій серед суміжних технологій, де
5
може використовуватися CV, займає машинне навчання (Machine Learning) з рівнем
інвестицій в 5 - 7 млрд. дол.

Нижче наведені оцінки ринку CV, його сегментів і супутніх технологій від різних
світових аналітичних компаній.

Market Research Future

Компанія Market Research Future оцінює світовий ринок CV в 2017 році в 9,2 млрд.
Доларів США і очікує, що до 2023 року він перевищить 48,3 млрд. дол. При стійкому
зростанні, який збільшується після 2020 року.

Рисунок 2. Дослідження компанії Market Research Future щодо світового ринку CV

Marketsandmarkets

За даними компанії MarketsandMarkets лідерами ринку CV в 2023 р будуть наступні


регіони світу:

 Азіатсько-Тихоокеанський регіон (близько 32%),


 Північна Америка (близько 27%),
 Європа (близько 22%).

У тому ж порядку розташовуються і лідери за темпами зростання, причому з великим


відривом випереджає Азіатсько-Тихоокеанський регіон (понад 8% середньорічного
зростання).

6
Рисунок 3. Дослідження компанії MarketsandMarkets щодо росту ринку CV по регіонам

Компанія Marketsandmarkets також оцінює ринок рішень штучного інтелекту AI для


CV в 3,62 млрд. дол. В 2017 р з ростом до 25,32 млрд. дол. В 2023 році.

Рисунок 4. Рост ринку штучного інтелекту у світі

Maximize Market Research

Компанія Maximize Market Research не настільки оптимістична щодо темпів зростання


ринку CV, як Market Research Future, хоча і починає свій прогноз навіть з дещо
більшого рівня - 10,06 млрд. дол. В 2016 році. Однак на 2024 рік вона прогнозує обсяг
ринку майже в два рази менше - лише 18,07 млрд. дол.

7
Рисунок 5. Дослідження компанії Maximize Market Research щодо росту ринку CV у світі

1.1.2. Задачі комп’ютерного зору.

Завдання CV полягають, головним чином, в отриманні корисної інформації (insight) з


фото- або відеозображень. Найбільш вживаними завданнями CV можуть бути:

1. Завдання калібрування камер і оптичних систем, як складаються з однієї камери, так


і набору камер

2. Завдання визначення руху по зображеннях

3. Завдання визначення перешкод по ходу руху

 У 3D-хмарі по стереокамерами або набору камер


 По одній камері за рахунок руху

4. Завдання розпізнавання об'єктів на сцені

5. Завдання просторової реконструкції сцени

6. Завдання локалізації зображення в заздалегідь відомій сцені

7. Завдання аналізу відмінності в наборі зображень

1.1.3. Технології комп’ютерного зору.

У загальному випадку, системи CV складаються з фото- або відеокамери, а також


комп'ютера, на якому працюють програми обробки і аналізу зображень.

Якщо програмне забезпечення по обробці зображення розташоване безпосередньо в


камері, така камера називається «смарт-камерою». ПО може також працювати на
віддаленому комп'ютері або комп'ютерах, або виконуватися в хмарі за моделлю SaaS
(Software as a Service).

8
Рисунок 6. Структура CV-системи зі смарт камерою

Системи комп'ютерного зору включають наступні основні компоненти:

• підсвічування об'єкта (не завжди потрібне) і оптику (лінзи і об'єктиви)

• сенсорну матрицю для проектування зображення

• системи обробки зображення, отриманого з матриці.

В необхідних випадках, наприклад, всередині приміщень, коли світло можна


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

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


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

У більшості випадків системи CV призначені для роботи в природному освітленні.


Крім того, системи CV можуть працювати в діапазонах, невидимих для людського ока.

Для роботи в умовах недостатнього освітлення можуть використовуватися камери з


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

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


поверхонь. Сенсорна матриця розташовується в камері і призначена для фіксації
зображення відповідним чином освітленого об'єкта. Зазвичай сенсорні матриці
будуються на основі напівпровідникових приладів з зарядовим зв'язком ПЗЗ, CCD
(charge coupled device), або може бути використана природна технологія «метал-оксид-
напівпровідник» КМОП, або CMOS (complementary metal oxide semiconductor).

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

9
1.1.4. Основні підходи до рішення задач комп’ютерного зору

Контурний аналіз

Контур об'єкта - це крива, що відповідає кордону об'єкта на зображенні. У цьому


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

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

Пошук за шаблоном (template matching)


Найпоширеніший метод розпізнавання об'єктів в CV – пошук відповідності шаблонів
зображень (template matching), щоб визначити, чи є заданий об'єкт на зображенні, і,
якщо є, де він знаходиться на зображенні. Додатки методу: розпізнавання
транспортних засобів, прокладка маршрутів для мобільних роботів, виробництво і
програми в медицині, та ін. Основні види пошуку за шаблоном:

Проста відповідність

Проста відповідність – один з основних методів знаходження потрібного об'єкта на


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

Відповідність на базі характерних рис, «фіч» (Feature-based matching)

Метод відповідності за характерними рисами, ХР, застосовується, коли як зображення,


так і шаблон містять більше відповідностей з ХР і контрольними точками, ніж з
цілісним образом. У цьому випадку, ХР можуть включати точки, криві або моделі
поверхні, які перевіряються на відповідність шаблону. Мета такої перевірки – знайти
парні зв'язки між цілью і частиною зображення з використанням просторових
співвідношень або ХР.

Відповідність на базі областей (Area-based matching)

10
Методи знаходження відповідності на базі областей (Area-based), які також
називаються кореляційними методами, засновані на комбінованому алгоритмі
знаходження характерних рис та відповідності шаблон. Такий метод добре працює,
якщо шаблони не мають помітних загальних ХР з зображенням, оскільки порівняння
відбувається на піксельному рівні. Відповідності вимірюються за показниками
інтенсивності шаблону і зображення.

У деяких випадках знаходження прямої відповідності між шаблоном і зображенням


неможливо. Тому, при знаходженні відповідності використовуються власне значення
(eigenvalue) і власний простір (eigenspace). Ці величини містять інформацію, необхідну
для порівняння образів при різних умовах освітленості, контрастності контурів або
збігу по положенню об'єктів.

Рисунок 7.Застосування методу Area-based в геодезії

Кореляція зображень (Image Correlation Matching)

У цьому методі вимірюються метрики подібності (similarity metric) між вихідним


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

Комп'ютерний зір значно розширює можливості контролю якості продукції (фактично


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

Автоматична візуальна інспекція (визначення дефектів) за допомогою комп'ютерного


зору сьогодні значно перевершує ручні методи інспекції по точності, швидкості,
легкості виконання та вартості.

Нейромережі

11
Термін «нейромережі» (Neural networks) був дуже популярний в кінці 1980-х – початку
1990-х років. Нейромережі складаються з шарів, тобто «нейронів», які являють собою
обчислювальні вузли, що імітують роботу нейронних клітин живого організму. Ці
мережі можуть передавати інформацію тільки в одному напрямку і можуть навчатися
на прикладах (для класифікації об'єктів або регресивного аналізу).

Рисунок 8.Стандартна одношарова нейромережа

Глибоке навчання в системах CV

Глибоке навчання (Deep learning) може бути корисно в задачах, коли базовий елемент
(окремий піксель зображення, одна частота сигналу, одне слово або літера) не несе
великого значення за змістом, проте, комбінація таких елементів має корисне значення.

Системи глибокого навчання можуть видобувати такі корисні комбінації без втручання
людини (Unsupervised Feature Learning).

Глибокі нейромережі (deep neural network), з більш ніж 1-2 шарами, раніше здавалася
або нереалізованими, або непрактичними у використанні. До 2006 року, зовнішні шари
нейромережі були нездатні до отримання ХР вхідних зображень, оскільки алгоритми
навчання нейромереж залишалися недосконалими.

На малюнку показаний приклад системи CV з машинним навчанням на прикладі задачі


сегментації сцени за трьома типами: «горизонтальний», «вертикальний» і «небо».

Піксельні дані від вихідного зображення з корекцією кольору надходять на


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

12
Рисунок 9.Приклад розпізнавання рукописних цифр з використанням простої однорівневої
нейромережі

Калібрування камер за шаблоном

Технології калібрування камер можна розділити на 2 види:

 Фотограметричне калібрування (за шаблоном).


 Калібрування по сцені.

Калібрування камер за шаблоном зазвичай проводиться спостереженням за


калібрувальним об'єктом (шаблоном), геометрія якого в просторі відома з більшою
точністю. Калібрувальний об'єкт зазвичай складається з 2 або 3 площин, розташованих
під різними кутами один до одного. Ці підходи потребують дорогих калібрувальних
апаратів та їх ретельної установки.

Калібрування камер по сцені не використовують калібрувальні об'єкти, а


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

Пошук поза шаблонами, зіставлення по ключових точках (feature detection,


description matching)
Набори ХР для обробки зображень в комп'ютерному зорі можуть, наприклад, являти
собою елементи зображення, такі як точки, краї, лінії або межі об'єктів. Інші приклади
ХР відносяться до руху в послідовності зображень, до форм, представлених у вигляді
кривих між областями зображення, або до властивостей цих областей.

Детектування і розпізнавання об'єктів

Детектування об'єктів - це знаходження примірників об'єктів на зображенні. При


розпізнаванні об'єктів не тільки встановлюється факт наявності об'єкта на зображенні,
13
але також і визначається його розташування на зображенні. На малюнку нижче
показані приклади детектування (зліва) і розпізнавання об'єктів (праворуч).

Рисунок 10.Детектування та розпізнавання об’єктів

Детектування об'єктів передбачає зіставлення двох і більше зображень при пошуку


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

Додатки для детектування об'єктів також досить різноманітні: сортування зображень в


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

Розпізнавання такого розмаїття об'єктів і додатків обумовлює необхідність


використання методів машинного і глибокого навчання.

Фотограмметрія

Фотограмметрія - це процес створення 3D-моделей з різних фотографій одного об'єкта,


сфотографованого з різних кутів.

Цей метод давно використовувався в картографії і геодезії і став більш популярним


завдяки доступності через збільшення потужності комп'ютерів. Це дозволило
використовувати фотограмметрію в інших областях:

 створення геоінформаційних систем (ГІС);


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

14
Виявлення перешкод
Виявлення перешкод використовується, наприклад, в системах допомоги водієві ADAS
(Adnvanced Driver Assistance System), в системах управління безпілотними ЛА та ін.

У число алгоритмів ADAS входять наступні:

 Контроль смуги руху,


 Виявлення об'єктів на шляху руху і на всі боки,
 Розпізнавання дорожніх об'єктів,
 Адаптивний круїз контроль,
 Круговий огляд.

Послуги з дефектоскопії

Системи CV з розпізнаванням поза шаблонів часто використовуються для


знаходження різних дефектів в матеріалах і виробах.

Рисунок 11.Дефектоскопія при неперервному виробництві

Розпізнавання об'єктів і локалізація в заздалегідь знятої сцені

Крім термінів «детектування» (detection) і «розпізнавання» (recognition) в технології


комп'ютерного зору використовуються також терміни «класифікація» (classification) та
«локалізація» (localization), а також «сегментація» (segmentation) об'єктів.

 Класифікація об'єкта розпізнавання на зображенні однієї категорії об'єкта,


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

Локалізація спостерігача і контроль вимірювань

Алгоритми локалізації дозволяють визначити позицію щодо камери сцени (локалізація)


і виявляти відмінності в сцені в історичній перспективі (присутність нових об'єктів у
сцені і зміна охоплення сцени) на рівні хмари точок.
15
У процесі локалізації виконуються наступні завдання:

 Локалізація в послідовності зображень: знайти положення нового зображення у


раніше знятій послідовності зображень;
 Локалізація в хмарах точок (3D-моделі):
 Виявлення змін на зображеннях і на хмарах точок.

Корекція кольору і експозиції

Розпізнавання кольору в системах CV для деяких завдань допомагає визначити


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

Рисунок 12.Визначення спілості ягід за кольором

Кольорове CV активно використовується в наступних застосуваннях:

 ігри;
 Інспекція медичних препаратів і лікарська діагностика;
 Ідентифікація деталей і запчастин;
 Інспекція кольорового матеріалу (тканина, плівка ...) на відповідність заданому
кольору;
 Інспекція етикеток, наклейок та ін;
 Сортування відпрацьованих матеріалів;
 Віддалена сенсорика, відстеження;
 Біометрія, моніторинг трафіку;
 Тестування фарб і пігментів та ін.

Поєднання даних (Data Fusion)


Data Fusion - поєднання даних від різних джерел з зображеннями з камер CV з метою
отримання більш точної та корисної інформації. У CV можна зіткнутися з наступними
проблемами:

 Різні ХР можна виділити з одного і того ж зображення;


16
 Різні екземпляри одного типу об'єктів (наприклад, «люди», «машини») можуть
виглядати дуже по-різному;
 Різні екземпляри одного класу об'єктів можуть «вести себе» по-різному;
 Один і той же об'єкт з різних точок спостереження (тобто з різних камер) може
виглядати по-різному;
 Різні комбінації всього перерахованого вище.

Поєднаний аналіз даних з системи CV та комплексу датчиків допомагає значно


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

1.1.5. Бібліотеки ПЗ комп зору

 OpenCV (Open Source Computer Vision Library) - бібліотека алгоритмів


комп'ютерного зору, обробки зображень та чисельних алгоритмів загального
призначення. Реалізована на мові C / C ++, також розробляється для Python, Java,
Ruby, Matlab, Lua та інших мов.
 PCL (Point Cloud Library) - великомасштабний відкритий проект для обробки 2D /
3D-зображень і хмар точок. Платформа PCL містить безліч алгоритмів,
включаючи фільтрацію, оцінку характеристик, реконструкцію поверхні,
реєстрацію, підбір моделі і сегментацію.
 ROS (Robot Operating System) - платформа розробки ПО для роботів. Вона являє
собою набір інструментів, бібліотек і угод, які спрощують розробки складних і
ефективних програм для керування багатьма типами роботів.
 MATLAB - високорівнева мова і інтерактивне середовище для програмування,
чисельних розрахунків і візуалізації результатів. За допомогою MATLAB можна
аналізувати дані, розробляти алгоритми, створювати моделі і додатки.
 CUDA (Compute Unified Device Architecture) - програмно-апаратна архітектура
паралельних обчислень, яка дозволяє істотно збільшити обчислювальну
продуктивність завдяки використанню графічних процесорів фірми Nvidia.

1.1.6. Застосування комп’ютерного зору.

Список основних сфер, де найчастіше використовують комп'ютерним зором, хоча по


факту їх набагато більше:

• системи відеоспостереження в офісах, на виробництві, в торгових центрах, на


вулицях;

• системи керування автомобілями, що запобігають зіткнення з перешкодою;

• медичні системи аналізу зображень;

• сортування, пошук браку та інші операції в серійному виробництві;

• технології доповненої і віртуальної реальності;

• системи геопозиціювання і картографічні системи;


17
• системи контролю точності в будівництві і реконструкції;

• аналіз емоційного стану людини;

• читання штрих-кодів в торгівлі і на складських комплексах;

• конвертація паперових книг і документів в цифрові формати.

Face ID и Microsoft Kinect

Apple iPhone X став першим смартфоном, який отримав фронтальну камеру TrueDepth і
підтримку технології Face ID. Це розблокування по обличчю, коли мобільний пристрій
дізнається свого власника без додаткових дій з його боку: не потрібно вводити код,
малювати графічний ключ або прикладати до сенсора палець. В цій складній системі
працюють дві камери (фронтальна і інфрачервона) і проектор, який по точках створює
карту особи користувача. За програмну обробку відповідає комп'ютерний зір і
натренована нейромережа, яка спочатку зберігає модель особи, а потім по крапочками
порівнює її з тим, що «бачить» в процесі авторизації. До речі, якщо дивитися на
камеру з закритими очима або просто відвести погляд убік, ідентифікація не спрацює.

В роботі Face ID і Microsoft Kinect багато спільного. Kinect - це сенсор (контролер),


який спочатку розроблявся для ігрової приставки Xbox 360. Він дозволяє взаємодіяти з
базою безконтактно, через рухи, пози та інші невербальні команди. За розпізнавання
особи і рухів користувача відповідає RGB-камера, яка спочатку знімає фото та відео, а
потім аналізує їх і відправляє відповідні команди процесора. На практиці Kinect
використовується не тільки в іграх, але і інших сферах. Наприклад, під час операцій і в
медичній діагностиці, для 3D-сканування, під час занять спортом, підготовки
унікального цифрового контента в рекламі.

Якість продукції та безпека в промисловості

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

Аналіз супутникових карт

Компанія Orbital Insights займається обробкою знімків, зроблених із супутника.


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

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

За допомогою програми, розробленої Orbital Insights, американські страхові компанії


автоматично визначають суму збитку в результаті ДТП, а також борються з
шахрайством в цій сфері. Ще кілька країн використовують систему комп'ютерного
зору для оцінки обсягів нафти, закупленої Китаєм. Супутник робить знімки
резервуарів з нафтою зверху, а алгоритми точно визначають їх розміри і обсяг завдяки
тіні, розміри якої варіюються в залежності від часу вимірювань.

Контроль ситуації на дорозі

У західних країнах комп'ютерний зір кілька років використовується для оцінки


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

Медицина та діагностика

МРТ, ЕКГ та інші знімки допомагають лікарям ставити правильні діагнози. Але точно
таким же навичкам можна навчити машину. Компанія Arterys розробила програмну
платформу на базі системи комп'ютерного зору, яка успішно візуалізує і аналізує
медичні зображення в діагностиці серцево-судинних захворювань. Arterys — це такий
хмарний сервіс, самонавчається нейромережа, якій потрібно 15 секунд на читання
знімка. Для порівняння: спеціаліст робить те ж саме і з аналогічної точністю набагато
довше — від 30 хвилин до години.

Засоби масової інформації

Комп'ютерний зір широко використовується в системах відеоаналітики, що належать


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

1.2. Дослідження продуктивності методів обчислення оптичного потоку.


1.2.1. Проблема обчислення оптичного потоку.

Оптичний потік - одне з ключових понять технічного (машинного) зору. Алгоритми на


його основі дозволяють вирішувати велике число важливих прикладних задач:
оцінювання та відстеження руху, реконструкція тривимірної структури сцени,
19
стиснення відео (стандарти MPEG), відновлення пошкоджених кадрів старих
відеозаписів і ін.
Розглянемо послідовність зображень (або кадрів відео), що описують динаміку деякої
сцени. Згідно з визначенням, запропонованим Б.К.П. Хорном, полем руху назвемо
двовимірну проекцію трьохвимірного поля фізичного руху точок поверхонь об'єктів
сцени, а під оптичним потоком будемо розуміти видимий рух яркісної структури
зображення.
Активні дослідження проблеми обчислення оптичного потоку почалися в кінці 70-х
рр., А першими важливими результатами їх були, а згодом стали класичними, роботи
Б.К.П. Хорна і Б.Г. Шункова, Б.Д. Лукаса і Т. Канаде. У них викладені два базових
диференціальних підходи до вирішення завдання і представлені результати роботи
відповідних алгоритмів.
Точкою відліку для сучасного етапу в розвитку області стала робота С. Бейкера.

1.2.2. Методи обчислення оптичного потоку.

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

Моделі оптичного потоку


За виключенням методу Лукаса-Канаде, інші методи, що широко використовуються,
базуються на класичній моделі Horn і Schunk. В загальному вигляді їх можна описати
наступним чином

де - функція зображення, - нормуючі функції, а - вагові коефіцієнти.


Обравши, наприклад, і отримаємо модель Horn-Schunk.

Оптимізаційні техніки і деталі реалізації

Однією з основних перешкод на шляху безпосереднього використання існуючих


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

20
процес оптимізації зійдеться в точці локального мінімуму. Для боротьби з цією
проблемою, Лукас і Канаде запропонували використовувати грубо-точний підхід
(coarse-to-fine approach), ідея якого полягає в побудові піраміди зображень, кожне
наступне з яких буде субдезкритизованою(downsampled) копією попереднього.
Оптимізаційна схема на кожному кроці являє собою зіставлення, лінеанерізацію та
розв’язок системи рівнянь Ейлера-Лагранжа. Серйозний недолік відповідного
алгоритму – низький ступінь паралелізму.
Для зменшення впливу затінення і варіацій освітленості на роботу алгоритму, A.Wedel,
T.Pock, C.Zach, H.Bischof та D.Cremers запропонували в процесі предобробки
практично повністю видаляти структурну компоненту (image structure) вхідних
зображень

Іншим важливим елементом сучасних алгоритмів є застосування до поля потоку


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

1.3. Алгоритми відстеження точкових особливостей сцени.


1.3.1. Опис задачі.

Незважаючи на те, що зображення представляє з себе просту структуру - матрицю


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

Однією з таких технік є відстеження точкових особливостей в послідовності кадрів. Це


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

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

1.3.2. Формальна постановка задачі.

Нехай у нас є послідовність зображень, позначимо її Зображення


представляються як деяка дискретна двовимірна функція (масив) інтенсивностей
пікселів в кожен момент часу t.

21
Розглянемо точку , що належить . Мета алгоритму - знайти таку точку
на зображенні , що u і v «схожі». Ступінь схожості можна
визначати по різному. У загальному випадку обчислюється деякий дескриптор точки, і
точки порівнюються за деякою метрикою. Дескриптор і метрика вибираються в
залежності від алгоритму.

Таким чином, на вхід алгоритму подається послідовність кадрів і координати точки,


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

1.3.3. Алгоритм Лукаса-Канаде.

Алгоритм Лукаса — Канаде — широко використовуваний у комп'ютерному зорі


диференційний локальний метод обчислення оптичного потоку.

Основне рівняння оптичного потоку містить дві незалежні змінні і не може бути
однозначно розв'язаним. Алгоритм Лукаса — Канаде вирішує неоднозначність за
рахунок використання інформації про сусідні пікселі в кожній точці. Метод
ґрунтується на припущенні, що в локальному околі кожного пікселя значення
оптичного потоку однакове, таким чином можна записати рівняння оптичного потоку
для всіх пікселів в околі і розв'язати систему рівнянь методом найменших квадратів.

Оптичний потік містить важливу інформацію про структуру сцени.

Для кожного пікселя одного кадру необхідно обчислити вектор зміщення, зсув пікселя
від поточного кадру до наступного. Це завдання схоже на щільне зіставлення: для
кожного пікселя одного кадру знайти ту ж точку на іншому кадрі.

Можна визначити область руху, приписавши кожній точці зображення вектор


швидкості. В деякий момент часу точка Pi на зображенні відповідає певній точці P0.
Ці дві точки пов’язані між собою рівняннями проектування. Точка P0 переміщується
щодо спостерігача (камери, очей) зі швидкістю v0. Це переміщення породжує рух зі
швидкістю vi відповідної точки зображення Pi. За час t t точка P0 переміщається на
відстань v0 v0t t, а точка зображення Pi - на відстань vi vi t t.

Припустимо, що є два зображення (рис. 13). Необхідно оцінити рух пікселів від
зображення H в зображення I за допомогою припущень.

Рисунок 13.Абстрактні зображення

Логічно припустити, що колір константний, тобто колір пікселя не буде сильно


мінятися від кадру до кадру, а також що швидкість руху пікселів від кадру до кадру

22
буде невеликою. Можна прийняти припущення, що зміщення буде в межах одного
пікселя.

Розкладемо функцію зображення I в ряд Тейлора:

 I  I
I (x  u , y  u )  I (x , y )   x u   y v,
де u, v - зміщення по х і у відповідно. Перенесемо члени рівняння в одну частину:

I ( x  u , y  v )  H ( x , y)  0;

I ( x , y )  I x u  I y v  H ( x , y)  0;

 I (x , y )  H (x , y )  I x u  I yv  0;

I t  I x u  I y v  0;

I t I (uv)  0.
У межі u і v прагнуть до 0, тобто

Елементарне рівняння оптичного потоку виглядає наступним чином:

I t I (uv)  0.
У рівнянні два невідомих u і v. Отже, необхідно ввести додаткове припущення.
Наприклад, нехай оптичний потік змінюється плавно від кадру до кадру, тобто для всіх
пікселів p з околиці (x, y) оптичного потоку зміщення (u, v) буде постійним.
Наприклад, для вікна 5*5 буде отримано 25 рівнянь для кожного пікселя:

I t ( pi ) I ( pi )(uv)  0,

де It = I ( x, y)  H ( x, y) .

В матричній формі отримуємо

Ad = b,

де A — матриця градієнта для всіх пікселів,

23
d — вектор зміщення,

b — вектор зміни кольору для всіх точок околиці,

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

Цей базовий метод для визначення оптичного потоку був запропонований Лукасом і
Канаде в 1981 р.
Рішення оптичного потоку d = (u, v) може бути знайдено у вигляді

Завдання знаходження оптичного потоку може бути розв'язана в наступних випадках:

матриця оборотна;

матриця не близька до 0;

матриця визначена;

матриця вирішувана при відсутності апертурної проблеми.

Апертурною проблемою є неоднозначність зміщення при обмеженому полі зору для


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

24
Метод не ефективний в тому випадку, коли припущення невірні. Наприклад, колір є
непостійним, існує рух між кадрами, відбувається рух сусідніх пікселів відповідно
вибраного.
Для вирішення цих проблем можна скористатися поліпшеними варіантами методу
Лукаса - Канаде.
Якщо не вдається обчислити оптичний потік за одну ітерацію, то можна застосовувати
ітеративний метод. Суть методу полягає в наступному: є одномірні функції f1 (x) на
першому кадрі і f2 (x) - на другому. Необхідно знайти вектор зміщення d. Функція
Метод має такі недоліки:
 необхідно згладжувати зображення для більш точного обрахування градієнта;
 градієнти слід обчислювати по одному зображенню, а перетворювати інше, так як
перетворення призводить до помилок в процесі дискретизації. f1 (x)
перетворюється за допомогою заміни значення в точці x на зміщене значення.
В ієрархічному методі беруть два зображення - вихідне і наступне і будують піраміду
масштабів - гауссову піраміду (рис. 14). Розглядають зображення з найнижчою
екранною розподільністю. Максимальний рух на найнижчій екранній розподільності
відбувається в межах одного пікселя. Далі за допомогою ітеративного варіанту методу
Лукаса - Канаде обчислюють оптичний потік для зображення з найнижчою екранною
розподільністю. Отримане значення використовують в зображеннях з більш високою
роздільною здатністю і т. д.

Рисунок 14.Приклад піраміди Гауса

1.4. Огляд інструментів розробки.

Середовище розробки PyCharm.

PyCharm - це інтелектуальна Python IDE з повним набором засобів для ефективної


розробки на мові Python. Випускається в двох варіантах - безкоштовна версія PyCharm
Community Edition і PyCharm Professional Edition, яка підтримує більший набір
можливостей. PyCharm виконує інспекцію коду на льоту, автодоповнення, в тому
числі ґрунтуючись на інформації, отриманої під час виконання коду, навігацію по коду,
забезпечує безліч рефакторингів.

Ключові можливості
25
 Потужний і функціональний редактор коду з підсвічуванням синтаксису, авто-
форматуванням і авто-відступами для підтримуваних мов.
 Проста і потужна навігація в коді.
 Допомога при написанні коду, що включає в себе автодоповнення, авто-імпорт,
шаблони коду, перевірка на сумісність версії інтерпретатора мови, і багато іншого.
 Швидкий перегляд документації для будь-якого елемента прямо у вікні редактора,
перегляд зовнішньої документації через браузер, підтримка docstring - генерації,
підсвічування, автодоповнення і багато іншого.
 Велика кількість інспекцій коду.
 Потужний рефакторинг коду, який надає широкі можливості щодо виконання
швидких глобальних змін у проекті.
 Повна підтримка свіжих версій Django фреймворка.
 Підтримка Google App Engine.
 Підтримка IronPython, Jython, Cython, PyPy wxPython, PyQt, PyGTK і ін.
 Підтримка Flask фреймворка і мов Mako і Jinja2.
 Редактор Javascript, Coffescript, HTML / CSS, SASS, LESS, HAML.
 Інтеграція з системами контролю версій (VCS).
 UML діаграми класів, діаграми моделей Django і Google App Engine.
 Інтегроване Unit тестування.
 Інтерактивні консолі для Python, Django, SSH, відладчика і баз даних.
 Повнофункціональний графічний відладчик (Debugger).
 Підтримка схем найбільш популярних IDE / редакторів. таких як Netbeans,
Eclipse, Emacs, емуляція VIM редактора.
 Мови: Python (Versions: 2.x, 3.x), Jython, Cython, IronPython, PyPy, Javascript,
CoffeScript, HTML / CSS, Django / Jinja2 templates, Gql, LESS / SASS / SCSS /
HAML, Mako, Puppet , RegExp, Rest, SQL, XML, YAML.
 PyCharm має кілька колірних схем, а також настроюється підсвічування
синтаксису коду.
 Інтеграція з баг / issue-трекер, такими як JIRA, Youtrack, Lighthouse, Pivotal
Tracker, GitHub, Redmine, Trac ...
 Величезна, постійно поповнюється колекція плагінів.
 Крос-платформенность (Windows, Mac OS X, Linux).

Мова програмування Python

Python — інтерпретована об'єктно-орієнтована мова програмування високого рівня зі


строгою динамічною типізацією. Розроблена в 1990 році Гвідо ван Россумом.
Структури даних високого рівня разом із динамічною семантикою та динамічним
зв'язуванням роблять її привабливою для швидкої розробки програм, а також як засіб
поєднування наявних компонентів. Python підтримує модулі та пакети модулів, що
сприяє модульності та повторному використанню коду. Інтерпретатор Python та
стандартні бібліотеки доступні як у скомпільованій, так і у вихідній формі на всіх
основних платформах. В мові програмування Python підтримується кілька парадигм
програмування, зокрема: об'єктно-орієнтована, процедурна, функціональна та
аспектно-орієнтована.

26
Переваги:

 чистий синтаксис (для виділення блоків слід використовувати відступи);


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

Бібліотека OpenCV

OpenCV (Open Source Computer Vision Library) — це бібліотека комп'ютерного зору,


яка поставляється з відкритим вихідним програмним кодом. Спектр можливостей цієї
бібліотеки дуже широкий. У ній зібрано велику кількість алгоритмів для використання
технологій комп'ютерного зору. Після підключення даної бібліотеки до свого проекту
користувач отримує доступ до більш ніж 500 функцій, призначених для вирішення
різноманітних завдань. Крім алгоритмів для роботи з технологіями комп'ютерного
зору, ця бібліотека використовується для обробки зображень, містить велику кількість
чисельних алгоритмів і багато іншого. Дана бібліотека реалізована на мовах
програмування C/C++. Однак поставляється також і для інших мов, таких як Python,
Java, Ruby, Matlab, Lua і т. д.. Бібліотека може використовуватися на різних
операційних системах, до числа яких відносяться Linux, Mac OS X, iOS, Android та ін.

Метою розробки даної бібліотеки є підвищення ефективності обчислень у додатках


реального часу. Мова C, на якій була написана бібліотека, є оптимізованою. Бібліотека
OpenCV здатна використовувати багатоядерні процесори. Головною метою бібліотеки
OpenCV є надання легкого у використанні інтерфейсу, який допоможе полегшити
використання технологій комп'ютерного зору в досить складних додатках. Функції, які
підтримує бібліотека, охоплюють різноманітні сфери комп'ютерного зору, від
медицини, безпеки і до стереозору і робототехніки. Все це завдяки тому, що
комп'ютерний зір і машинне навчання — два нерозривно пов'язаних поняття. Крім
того, бібліотека OpenCV містить бібліотеку MLL, з англійської Machine Learning
Library. Дана бібліотека є бібліотекою загального призначення і орієнтована на
розпізнавання статичних образів і технологію кластеризації. Дана бібліотека є дуже
ефективною для рішення задач комп'ютерного зору, яка як раз і є основою OpenCV.
Однак для вирішення конкретних завдань машинного навчання ця бібліотека не
пристосована і є досить узагальненою.

27
Основні модулі бібліотеки:

cxcore - ядро
* Містить базові структури даних і алгоритми:

- базові операції над багатовимірними числовими масивами

- матрична алгебра, математичні ф-ції, генератори випадкових чисел

- Запис / відновлення структур даних в / з XML

- базові функції 2D графіки

CV - модуль обробки зображень і комп'ютерного зору


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

- аналіз зображень (вибір відмінних ознак, морфологія, пошук контурів, гістограми)

- аналіз руху, спостереження за об'єктами

- виявлення об'єктів, зокрема осіб

- калібрування камер, елементи відновлення просторової структури

Highgui - модуль для введення / виведення зображень і відео, створення призначеного


для користувача інтерфейсу

- захоплення відео з камер і з відео файлів, читання / запис статичних зображень.

- функції для організації простого UI (всі демо додатки використовують HighGUI)

Cvaux - експериментальні і застарілі функції


- пошук стерео-відповідності, кліки в графах

- знаходження і опис рис обличчя

CvCam - захоплення відео


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

28
2. Розділ 2. Реалізація та тестування.
2.1. Програмна реалізація

Опис основних бібліотек:

 Numpy. Вектори і матриці - це основні об'єкти, якими доводиться оперувати в


машинному навчанні. Numpy надає досить багато зручних функцій, які будують
ці об'єкти.

 Matplotlib. Бібліотека matplotlib - це бібіліотека двовимірної графіки для мови


програмування python за допомогою якої можна створювати високоякісні
малюнки різних форматів. Matplotlib є модуль-пакетом для python. Так як
matplotlib організована ієрархічно, а найбільш простими для розуміння людиною є
самі високорівневі функції, то знайомство з matplotlib починають з самого
високорівневого інтерфейсу matplotlib.pyplot. Інтерфейс matplotlib.pyplot є
набором команд і функцій, які роблять синтаксис графічних matploltib команд
схожим на команди, які використовуються в середовищі MATLAB. Спочатку
matplotlib планувався як вільна альтернатива MATLAB, де в одному середовищі
були б функції як для малювання, так і для чисельного аналізу. Саме так в
Matplotlib з'явився pylab, який об'єднує модулі pyplot і numpy в один простір імен.

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

Метод Лукаса-Канаде займає окіл 3х3 навколо точки. Отже всі 9 точок повинні
однаково рухатись.

Ми можемо знайти (fx, fy, ft) для цих 9 точок. Звідси випливає проблема вирішення 9
рівнянь з двома невідомими змінними, вирішення яких можна знайти завдяки
використанню методу найменших квардатів.

U = A inverse * B

де U - матриця 1 на 2 і містить зміну в напрямку x і y (x == U [0] і y == U [1])

спочатку обчислюємо матрицю А 2*2 [[fx ** 2, fx * fy], [fx * fy fy ** 2], а потім беремо
обернену до неї B - [[fx * ft1], [fy, ft2]]

Лістинг коду:

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv
from scipy.signal import convolve2d

def lucas_kanade(imfirst, imsecond):


myframe = cv.imread(imfirst)
Image1 = cv.cvtColor(myframe, cv.COLOR_BGR2GRAY)
newframe = cv.imread(imsecond)
Image2 = cv.cvtColor(newframe, cv.COLOR_BGR2GRAY)

color = np.random.randint(0, 255, (100, 3))


Gx = np.reshape(np.asarray([[-1, 1], [-1, 1]]), (2, 2))
29
Gy = np.reshape(np.asarray([[-1, -1], [1, 1]]), (2, 2))
Gt1 = np.reshape(np.asarray([[-1, -1], [-1, -1]]), (2, 2))
Gt2 = np.reshape(np.asarray([[1, 1], [1, 1]]), (2, 2))

Ix = (convolve2d(Image1, Gx) + convolve2d(Image2, Gx)) / 2


Iy = (convolve2d(Image1, Gy) + convolve2d(Image2, Gy)) / 2
It1 = convolve2d(Image1, Gt1) + convolve2d(Image2, Gt2)

feature_params = dict(maxCorners=100,
qualityLevel=0.3,
minDistance=7,
blockSize=7)

features= cv.goodFeaturesToTrack(Image1, mask = None, **feature_params)


feature = np.int32(features)
feature = np.reshape(feature, newshape=[-1, 2])

u = np.ones(Ix.shape)
v = np.ones(Ix.shape)
status=np.zeros(feature.shape[0])
A = np.zeros((2, 2))
B = np.zeros((2, 1))
mask = np.zeros_like(myframe)

newFeature=np.zeros_like(feature)

for a,i in enumerate(feature):


x, y = i

A[0, 0] = np.sum((Ix[y - 1:y + 2, x - 1:x + 2]) ** 2)


A[1, 1] = np.sum((Iy[y - 1:y + 2, x - 1:x + 2]) ** 2)
A[0, 1] = np.sum(Ix[y - 1:y + 2, x - 1:x + 2] * Iy[y - 1:y + 2, x - 1:x + 2])
A[1, 0] = np.sum(Ix[y - 1:y + 2, x - 1:x + 2] * Iy[y - 1:y + 2, x - 1:x + 2])
Ainv = np.linalg.pinv(A)

B[0, 0] = -np.sum(Ix[y - 1:y + 2, x - 1:x + 2] * It1[y - 1:y + 2, x - 1:x + 2])


B[1, 0] = -np.sum(Iy[y - 1:y + 2, x - 1:x + 2] * It1[y - 1:y + 2, x - 1:x + 2])
prod = np.matmul(Ainv, B)

u[y, x] = prod[0]
v[y, x] = prod[1]

newFeature[a]=[np.int32(x+u[y,x]),np.int32(y+v[y,x])]
if np.int32(x+u[y,x])==x and np.int32(y+v[y,x])==y:
status[a]=0
else:
status[a]=1
um=np.flipud(u)
vm=np.flipud(v)

good_new=newFeature[status==1]
good_old = feature[status==1]
print(good_new.shape)
print(good_old.shape)

for i, (new, old) in enumerate(zip(good_new, good_old)):


a, b = new.ravel()
30
c, d = old.ravel()
mask = cv.line(mask, (a, b), (c, d), color[i].tolist(), 2)
newframe = cv.circle(newframe, (a, b), 5, color[i].tolist(), -1)
img = cv.add(newframe, mask)
return img

basketball_image=lucas_kanade("basketball1.png", "basketball2.png")

plt.imshow(basketball_image)
plt.show()

2.2. Тестування

Рисунок 15. Початковий кард для тестування

Рисунок 16. Наступний кадр для тестування

31
Рисунок 17. Результат роботи методу Лукаса-Канаде

32
Висновки

Я ознайомилась з теоритичними основами одного з диференціальних методів


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

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


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

33
Список використаної літератури

[1] Оптический поток [Електронний ресурс]. Багатофункціональний сайт.

URL: http://habrahabr.ru/post/201406

[2] Вычисление оптического потока методом Лукаса — Канаде [Електронний ресурс].


Багатофункціональний ресурс. URL: http://habrahabr.ru/post/169055

[3] Horn, B.K.P. Determining optical flow [Электронный ресурс] / B.K.P. Horn, B.G.
Schunck // AI Memo 572, MIT. -1981.

[4] Lucas, B.D. An iterative image registration technique with an application to stereovision
[Электронный ресурс] / B.D. Lucas, T. Kanade // In Proc. of the DARPA Image
Understanding Workshop. -1981.

[5] Stiller, C. Estimating motion in image sequences: A tutorial on modelling and


computation of 2D motion [Text] / C. Stiller, J. Konrad // IEEE Signal Proc. Mag. -1999. -
Vol. 16.

[6] Galvin, B. Recovering motion fields: An evaluation of eight optical flow algorithms
[Электронный ресурс] / B. Galvin, B. McCane, K. Novins [et al.] // In Proc. BMVC. -1998.

[7] Sun, D. Secrets of optical flow estimation and their principles [Электронный ресурс] /
D. Sun, S. Roth, M.J. Black // In Proc. IEEE CVPR. -2010.

[8] Bruhn, A. Lucas/Kanade meets Horn/Schunck: combining local and global optic flow
methods [Text] / A. Bruhn, J. Weickert, C. Schnorr // IJCV. -2005. -№ 61(3).

[9] Wedel, A. An improved algorithm for TV-L1 optical flow [Text] / A. Wedel, T. Pock, C.
Zach, H. Bischof [et al.] // In Dagstuhl Motion Workshop. -2008.

[10] Bruhn, A. A Multigrid Platform for Real-time Motion Computation with Discontinuity-
Preserving Variational Methods [Text] / A. Bruhn, J. Weickert, T. Kohlberger [et al.] // IJCV.
-2006. -№ 70 (3).

[11] Le Besnerais, G. Dense optical flow by iterative local window registration


[Электронный ресурс] / G. Le Besnerais, F. Champagnat // In Proc. IEEE ICIP. -2005. -Vol.
1.

[12] Метод LK [Електронний ресурс] / Berkin Bilgic. -Режим доступу:


http://www.mathworks.com/ matlabcentral/fileexchange/23142

34

You might also like