Professional Documents
Culture Documents
Kushnir Bakalavrska Robota
Kushnir Bakalavrska Robota
Кушнір Вікторія
Київ 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. Актуальність дослідження та ринок комп’ютерного зору
Однак дійсно масове застосування методів комп'ютерного зору отримало лише менше
десяти років тому, з досягненням відповідного рівня продуктивності процесорів у
персональних і мобільних комп'ютерах. Таким чином, в плані практичного
застосування системи комп'ютерного зору пройшли ряд етапів: етап індивідуального
рішення (як в частині апаратного забезпечення, так і алгоритмів) конкретних завдань;
етап застосування в професійних областях (особливо в промисловості і оборонній
сфері) з використанням спецпроцесорів, спеціалізованих систем формування
зображень і алгоритмів, призначених для роботи в умовах низької апріорної
невизначеності, однак ці рішення допускали масштабування; і етап масового
застосування.
• обчислювач;
• алгоритми аналізу зображень, які можуть реалізовуватися програмно на процесорах
загального призначення, апаратно в структурі обчислювача і навіть апаратно в
рамках підсистеми формування зображень.
4
істотно поступаються зору людини, за можливостями отримання інформації про
спостережувані об'єкти вони істотно перевершують його.
Ринок і майбутнє
Діапазон застосувань CV в останні 10-15 років значно розширився. Компанія Tractica в
своєму звіті про ринок комп'ютерного зору в 2014 році вказує шість областей CV. В
2016 році в новій версії звіту Tractica вказує вже вісім областей застосування
комп'ютерного зору: додані Retail (роздрібна торгівля) і Agriculture (сільське
господарство).
Так, на 2016 р McKinsey оцінює ринок Computer Vision c великим «розкидом»: від 2,5
до 3,5 млрд. дол. Причому найбільшу частку інвестицій серед суміжних технологій, де
5
може використовуватися CV, займає машинне навчання (Machine Learning) з рівнем
інвестицій в 5 - 7 млрд. дол.
Нижче наведені оцінки ринку CV, його сегментів і супутніх технологій від різних
світових аналітичних компаній.
Компанія Market Research Future оцінює світовий ринок CV в 2017 році в 9,2 млрд.
Доларів США і очікує, що до 2023 року він перевищить 48,3 млрд. дол. При стійкому
зростанні, який збільшується після 2020 року.
Marketsandmarkets
6
Рисунок 3. Дослідження компанії MarketsandMarkets щодо росту ринку CV по регіонам
7
Рисунок 5. Дослідження компанії Maximize Market Research щодо росту ринку CV у світі
8
Рисунок 6. Структура CV-системи зі смарт камерою
Зображення являє собою набір елементів – пікселів, колір яких залежить від
освітленості. Щільність пікселів (роздільна здатність сенсорної матриці) дуже важлива
для коректної роботи програми комп'ютерного зору. Чим більше роздільна здатність,
тим більше деталей буде на зображенні, тим точнішими будуть вимірювання.
Необхідна щільність пікселів залежить від розмірів об'єкта, робочої відстані камери і
інших параметрів.
9
1.1.4. Основні підходи до рішення задач комп’ютерного зору
Контурний аналіз
при однаковій яскравості з фоном об'єкт може не мати чіткої межі на зображенні
або воно може бути «зашумлене» перешкодами, що призводить до неможливості
виділення контуру;
перекриття об'єктів або їх угруповання призводять до того, що контур виділяється
неправильно і не відповідає кордону об'єкта;
слабка стійкість до перешкод, що призводить до того, що будь-яке порушення
цілісності контуру або погана видимість об'єкта призводять або до неможливості
детектування, або до помилкових спрацьовувань.
Проста відповідність
10
Методи знаходження відповідності на базі областей (Area-based), які також
називаються кореляційними методами, засновані на комбінованому алгоритмі
знаходження характерних рис та відповідності шаблон. Такий метод добре працює,
якщо шаблони не мають помітних загальних ХР з зображенням, оскільки порівняння
відбувається на піксельному рівні. Відповідності вимірюються за показниками
інтенсивності шаблону і зображення.
Нейромережі
11
Термін «нейромережі» (Neural networks) був дуже популярний в кінці 1980-х – початку
1990-х років. Нейромережі складаються з шарів, тобто «нейронів», які являють собою
обчислювальні вузли, що імітують роботу нейронних клітин живого організму. Ці
мережі можуть передавати інформацію тільки в одному напрямку і можуть навчатися
на прикладах (для класифікації об'єктів або регресивного аналізу).
Глибоке навчання (Deep learning) може бути корисно в задачах, коли базовий елемент
(окремий піксель зображення, одна частота сигналу, одне слово або літера) не несе
великого значення за змістом, проте, комбінація таких елементів має корисне значення.
Системи глибокого навчання можуть видобувати такі корисні комбінації без втручання
людини (Unsupervised Feature Learning).
Глибокі нейромережі (deep neural network), з більш ніж 1-2 шарами, раніше здавалася
або нереалізованими, або непрактичними у використанні. До 2006 року, зовнішні шари
нейромережі були нездатні до отримання ХР вхідних зображень, оскільки алгоритми
навчання нейромереж залишалися недосконалими.
12
Рисунок 9.Приклад розпізнавання рукописних цифр з використанням простої однорівневої
нейромережі
Фотограмметрія
14
Виявлення перешкод
Виявлення перешкод використовується, наприклад, в системах допомоги водієві ADAS
(Adnvanced Driver Assistance System), в системах управління безпілотними ЛА та ін.
Послуги з дефектоскопії
ігри;
Інспекція медичних препаратів і лікарська діагностика;
Ідентифікація деталей і запчастин;
Інспекція кольорового матеріалу (тканина, плівка ...) на відповідність заданому
кольору;
Інспекція етикеток, наклейок та ін;
Сортування відпрацьованих матеріалів;
Віддалена сенсорика, відстеження;
Біометрія, моніторинг трафіку;
Тестування фарб і пігментів та ін.
Apple iPhone X став першим смартфоном, який отримав фронтальну камеру TrueDepth і
підтримку технології Face ID. Це розблокування по обличчю, коли мобільний пристрій
дізнається свого власника без додаткових дій з його боку: не потрібно вводити код,
малювати графічний ключ або прикладати до сенсора палець. В цій складній системі
працюють дві камери (фронтальна і інфрачервона) і проектор, який по точках створює
карту особи користувача. За програмну обробку відповідає комп'ютерний зір і
натренована нейромережа, яка спочатку зберігає модель особи, а потім по крапочками
порівнює її з тим, що «бачить» в процесі авторизації. До речі, якщо дивитися на
камеру з закритими очима або просто відвести погляд убік, ідентифікація не спрацює.
Уявіть собі великий завод, на якому щодня виготовляють сотні тисяч дрібних деталей.
Комп'ютерний зір спрощує завдання, пов'язані з урахуванням деталей, на які вже
завдано штрихкод, або розпізнаванням сторонніх предметів в упаковці. Але
найзручніше таким чином контролювати якість готових виробів: знаходити дефекти
(розбіжності у фізичних параметрах, відсутні елементи, колір і т. д.) Або випадки
неправильної обробки. Також комп'ютерний зір використовують в цілях безпеки. Він
допомагає визначати наявність касок та інших засобів захисту на співробітниках
підприємств або контролювати периметр, щоб ті самі співробітники нічого не винесли
з території, що охороняється.
18
знайти залежність між кількістю автомобілів і денною виручкою, щоб спрогнозувати
дохід і навантаження на магазини в передсвяткові дні.
Медицина та діагностика
МРТ, ЕКГ та інші знімки допомагають лікарям ставити правильні діагнози. Але точно
таким же навичкам можна навчити машину. Компанія Arterys розробила програмну
платформу на базі системи комп'ютерного зору, яка успішно візуалізує і аналізує
медичні зображення в діагностиці серцево-судинних захворювань. Arterys — це такий
хмарний сервіс, самонавчається нейромережа, якій потрібно 15 секунд на читання
знімка. Для порівняння: спеціаліст робить те ж саме і з аналогічної точністю набагато
довше — від 30 хвилин до години.
Кожен метод обчислення оптичного потоку можна розділитии на дві складові: модель
потоку з відповідним їй енергетичним функціоналом і оптимізаційну схему, що
використовується безпосередньо для обчислення.
20
процес оптимізації зійдеться в точці локального мінімуму. Для боротьби з цією
проблемою, Лукас і Канаде запропонували використовувати грубо-точний підхід
(coarse-to-fine approach), ідея якого полягає в побудові піраміди зображень, кожне
наступне з яких буде субдезкритизованою(downsampled) копією попереднього.
Оптимізаційна схема на кожному кроці являє собою зіставлення, лінеанерізацію та
розв’язок системи рівнянь Ейлера-Лагранжа. Серйозний недолік відповідного
алгоритму – низький ступінь паралелізму.
Для зменшення впливу затінення і варіацій освітленості на роботу алгоритму, A.Wedel,
T.Pock, C.Zach, H.Bischof та D.Cremers запропонували в процесі предобробки
практично повністю видаляти структурну компоненту (image structure) вхідних
зображень
Суть алгоритму трекінгу точкової особливості - для деякої особливої точки на одному
кадрі, знайти, куди перемістилася ця точка на наступному кадрі, використовую
інформацію з двох або більше кадрів послідовності.
21
Розглянемо точку , що належить . Мета алгоритму - знайти таку точку
на зображенні , що u і v «схожі». Ступінь схожості можна
визначати по різному. У загальному випадку обчислюється деякий дескриптор точки, і
точки порівнюються за деякою метрикою. Дескриптор і метрика вибираються в
залежності від алгоритму.
Основне рівняння оптичного потоку містить дві незалежні змінні і не може бути
однозначно розв'язаним. Алгоритм Лукаса — Канаде вирішує неоднозначність за
рахунок використання інформації про сусідні пікселі в кожній точці. Метод
ґрунтується на припущенні, що в локальному околі кожного пікселя значення
оптичного потоку однакове, таким чином можна записати рівняння оптичного потоку
для всіх пікселів в околі і розв'язати систему рівнянь методом найменших квадратів.
Для кожного пікселя одного кадру необхідно обчислити вектор зміщення, зсув пікселя
від поточного кадру до наступного. Це завдання схоже на щільне зіставлення: для
кожного пікселя одного кадру знайти ту ж точку на іншому кадрі.
Припустимо, що є два зображення (рис. 13). Необхідно оцінити рух пікселів від
зображення H в зображення I за допомогою припущень.
22
буде невеликою. Можна прийняти припущення, що зміщення буде в межах одного
пікселя.
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,
23
d — вектор зміщення,
Рівнянь стає більше, ніж невідомих. Рішення будемо шукати за допомогою методу
найменших квадратів і нормального рівняння:
Цей базовий метод для визначення оптичного потоку був запропонований Лукасом і
Канаде в 1981 р.
Рішення оптичного потоку d = (u, v) може бути знайдено у вигляді
матриця оборотна;
матриця не близька до 0;
матриця визначена;
24
Метод не ефективний в тому випадку, коли припущення невірні. Наприклад, колір є
непостійним, існує рух між кадрами, відбувається рух сусідніх пікселів відповідно
вибраного.
Для вирішення цих проблем можна скористатися поліпшеними варіантами методу
Лукаса - Канаде.
Якщо не вдається обчислити оптичний потік за одну ітерацію, то можна застосовувати
ітеративний метод. Суть методу полягає в наступному: є одномірні функції f1 (x) на
першому кадрі і f2 (x) - на другому. Необхідно знайти вектор зміщення d. Функція
Метод має такі недоліки:
необхідно згладжувати зображення для більш точного обрахування градієнта;
градієнти слід обчислювати по одному зображенню, а перетворювати інше, так як
перетворення призводить до помилок в процесі дискретизації. f1 (x)
перетворюється за допомогою заміни значення в точці x на зміщене значення.
В ієрархічному методі беруть два зображення - вихідне і наступне і будують піраміду
масштабів - гауссову піраміду (рис. 14). Розглядають зображення з найнижчою
екранною розподільністю. Максимальний рух на найнижчій екранній розподільності
відбувається в межах одного пікселя. Далі за допомогою ітеративного варіанту методу
Лукаса - Канаде обчислюють оптичний потік для зображення з найнижчою екранною
розподільністю. Отримане значення використовують в зображеннях з більш високою
роздільною здатністю і т. д.
Ключові можливості
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).
26
Переваги:
Бібліотека OpenCV
27
Основні модулі бібліотеки:
cxcore - ядро
* Містить базові структури даних і алгоритми:
28
2. Розділ 2. Реалізація та тестування.
2.1. Програмна реалізація
Метод Лукаса-Канаде займає окіл 3х3 навколо точки. Отже всі 9 точок повинні
однаково рухатись.
Ми можемо знайти (fx, fy, ft) для цих 9 точок. Звідси випливає проблема вирішення 9
рівнянь з двома невідомими змінними, вирішення яких можна знайти завдяки
використанню методу найменших квардатів.
U = A inverse * B
спочатку обчислюємо матрицю А 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
feature_params = dict(maxCorners=100,
qualityLevel=0.3,
minDistance=7,
blockSize=7)
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)
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)
basketball_image=lucas_kanade("basketball1.png", "basketball2.png")
plt.imshow(basketball_image)
plt.show()
2.2. Тестування
31
Рисунок 17. Результат роботи методу Лукаса-Канаде
32
Висновки
33
Список використаної літератури
URL: http://habrahabr.ru/post/201406
[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.
[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).
34