Макогон Сергій Олександрович

Факультет комп'ютерних наук і технологій

Кафедра програмної інженерії

Спеціальність: Програмна інженерія

Тема магістерської роботи: Розробка і оптимізація алгоритмів оптичного розпізнавання символів і їх програмна кроссплатформова реалізація з використанням OpenCV

Науковий керівник: д.т.н., проф. Зорі Сергій Анатолійович

Реферат за темою випускної роботи

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

1. Вступ

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

У порівнянні з іншими областями, область комп'ютерного зору може бути охарактеризована як молода, різноманітна і динамічна [1].

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

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

2. Актуальність теми

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

Розпізнавання тексту - завдання, з яким будь-яка людина постійно стикається щодня, починаючи з моменту вивчення принципів читання і правопису. За станом на 30 червня 2018 року, доступ до Інтернету має 4208571287 людей [2]. Відповідно, всі ці люди користуються пошуковими системами. Для спрощення пошуку інформації про той чи інший предмет є можливість скористатися технологіями комп'ютерного зору, зокрема розпізнаванням тексту для формування пошукового запиту.

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

3. Мета і завдання дослідження

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

Об'єкт дослідження — програмні технології комп'ютерного зору.

Предмет дослідження — методи і засоби розпізнавання зображень символьної інформації.

Основні завдання дослідження:

  • Аналіз функціоналу бібліотек комп'ютерного зору
  • Обґрунтування вибору бібліотеки комп'ютерного зору для вирішення завдань в області оптичного розпізнавання символів
  • Розробка архітектури програмної системи розпізнавання символів
  • Дослідження ефективності реалізації прототипу програмної системи для вирішення завдань розпізнавання і класифікації зображень транзисторів на основі алгоритмів бібліотеки OpenCV

4. Огляд досліджень і розробок

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

4.1 Огляд міжнародних джерел

На підставі проведеного пошуку було знайдено 4 бібліотеки найбільш схожі між собою, що мають схожий набір функцій і мають можливість широкопрофільного застосування в залежності від цілей, поставлених розробником [10, 11, 13, 15]:

  • OpenCV
  • AForge.NET
  • Набір бібліотек VXL
  • LTI-lib

Найбільша кількість інформації, уроків і прикладів використання існує по бібліотеці OpenCV.

4.2 Огляд національних джерел

Книга «OpenCV і Java. Обробка зображень та комп'ютерний зір» М. Прохоренка [4] знайомить з сучасними технологіями комп'ютерного зору, що дозволяють машинам, роботам, веб-камерам і іншим пристроям розпізнавати зображення, наводить структуру бібліотеки OpenCV для мови програмування Java і на практичних прикладах розглядає можливості використання бібліотеки.

На сайтах compvision.ru [5] і robocraft.ru [6] зібрані матеріали російськомовних розробників, що надають базу знань для початку роботи з бібліотекою OpenCV для розробників-початківців.

4.3 Огляд локальних джерел

Зважаючи на широкий профіль використання і наявності величезної кількості функціональних можливостей, на сьогоднішній день існує значна кількість магістерських дисертацій, в яких так чи інакше згадується використання бібліотек комп'ютерного зору, зокрема OpenCV. Серед них гідна згадки робота Колесника А.В. «Розподілена програмна система для розпізнавання зображень» [7], у якій описана розробка комп'ютерної системи для розпізнавання лиць на зображенні. На рисунку 1 наведений зовнішній вигляд програми.

Інтерфейс програми

Інтерфейс програми [7]

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

Для більш переконливого доказу багатофункціональності комп'ютерного зору, можна згадати роботу Гайдукова М.П. «Рукописний текст» [9]. В роботі проведено аналіз методів розпізнавання рукописних текстів і реалізована система з розпізнавання рукописного тексту.

5. Порівняння бібліотек для розпізнавання тексту

5.1 OpenCV

OpenCV (Open Source Computer Vision Library) являє собою бібліотеку програмного забезпечення для комп'ютерного зору з відкритим вихідним кодом і комп'ютерного навчання. OpenCV була створена для забезпечення загальної інфраструктури додатків для комп'ютерного зору і прискорення використання сприйняття машини в комерційних продуктах. Будучи ліцензованим BSD продуктом, OpenCV спрощує бізнес для використання і модифікації коду [10].

У якості мети для розробки даної бібліотеки було поставлено підвищення ефективності в програмах реального часу. Функціонал бібліотеки реалізовано на мові С. OpenCV має можливість використовувати багатоядерні процесори. У разі необхідності автоматичної оптимізації на платформах Intel, можливим є додаткове придбання та інтеграція з бібліотекою IPP.

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

Крім таких відомих компаній як Google, Yahoo, Microsoft, Intel, IBM, є безліч різноманітних стартапів, таких як Applied Minds, VideoSurf і Zeitera, які так само використовують функціонал OpenCV.

Бібліотека має інтерфейси для C++, Python, Java і MATLAB і підтримує Windows, Linux, Android і Mac OS. OpenCV орієнтується в основному на додатки в режимі реального часу і використовує переваги команд MMX і SSE, коли вони доступні. Зараз активно розвиваються повнофункціональні інтерфейси CUDA і OpenCL. На рисунку 2 представлена загальна структура проекту OpenCV.

Карта проекту OpenCV

Карта проекту OpenCV

5.2 AForge.NET

AForge.NET є бібліотекою з відкритим вихідним кодом, яка була створена на мові C #, що призначена для розробників і дослідників в області комп'ютерного зору. Крім того, в бібліотеці є функціонал для розробників в області штучного інтелекту. Спектр можливостей бібліотеки досить широкий: обробка зображень, нейронні мережі, генетичні алгоритми, нечітка логіка, машинне навчання, робототехніка і багато іншого [11].

Бібліотека включає кілька основних компонентів. AForge.Imaging - бібліотека підпрограм для обробки зображень і фільтрів. AForge.Vision - бібліотека комп'ютерного зору. AForge.Video - набір бібліотек для роботи з відео. AForge.Neuro - бібліотека для виконання різноманітних дій і операцій з нейронними мережами. AForge.Genetic - бібліотека підпрограм для використання генетичних алгоритмів для вирішення різних завдань. AForge.Fuzzy - бібліотека для роботи з нечіткою логікою. AForge.Robotics - бібліотека, яка забезпечує підтримку деяких методів, що застосовуються в сфері робототехніки. AForge.MachineLearning - бібліотека для роботи з елементами машинного навчання [12]. Існує, так само як і у бібліотеки OpenCV, активна спільнота, у якій можна знайти необхідну інформацію, ставлячи питання розробникам, або поділитися власними роботами. Але, нажаль, кількість учасників цієї спільноти поступається своєю кількістю аналогічним по OpenCV. Ще одним обмеженням на шляху розробника є той факт, що вся документація бібліотеки написана тільки на англійській мові. Зважаючи на це можливі труднощі у вивченні і освоєнні даного фреймворку. На рисунці 3 наведена загальна структура бібліотеки AForge.NET.

Структура фреймворку AForge.NET

Структура фреймворку AForge.NET

5.3 VXL

VXL - це набір бібліотек, написаних на мові C++, які призначені для наукових досліджень і реалізації технологій комп'ютерного зору. VXL була написана в ANSI/ISO C++ і призначена для портативних платформ. Бібліотека складається з декількох основних складових: VNL (числа) - чисельні алгоритми і контейнери, наприклад, матриці, вектори, оптимізатори і т.д., VIL (зображення) - завантаження, збереження і редагування зображень у багатьох найбільш поширених форматах (також існує можливість роботи з дуже великими зображеннями), VGL (геометрія) - геометрія точок, кривих та інших елементарних об'єктів в одно-, дво- і тривимірному просторах, VSL (вхідний і вихідний потоки), VBL (основні шаблони), VUL (утиліти) - різний функціонал для незалежних платформ [13]. Особливість бібліотеки полягає в тому, що кожен її компонент може використовуватися окремо, не посилаючись на інші компоненти. Таким чином, в програмі можна використовувати тільки те, що дійсно необхідно. На рисунці 4 наведено ієрархічну будову ядра VXL.

Ієрархічна будова ядра VXL

Ієрархічна будова ядра VXL [14]

5.4 LTI-lib

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

Бібліотека була розроблена з застосуванням GCC (набір компіляторів, застосовуваний для різноманітних мов програмування) під Linux і Visual C++ під Windows NT. Багато класів інкапсулюють Windows/Linux функціональність для того, щоб спростити вирішення системних або апаратних завдань (наприклад, класи для многопоточности і синхронізації, виміру часу і доступ до послідовного порту) [15].

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

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

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

На рисунку 5 представлена укрупнена схема роботи даної системи.

Укрупнена структура системи розпізнавання і класифікації зображень транзисторів

Укрупнена структура системи розпізнавання і класифікації зображень транзисторів

Серед розглянутих варіантів бібліотек комп'ютерного зору оптимальним буде використання бібліотеки OpenCV, оскільки вона є швидкою, в її складі є функції, призначені не тільки для розпізнавання тексту, а й для обробки зображення в цілому, що спрощує структуру майбутньї програми і, також, є реалізація бібліотеки спеціально під ОС Android. На рисунку 6 представлена діаграма, що порівнює швидкість роботи бібліотек OpenCV, OpenCV + IPP, VXL і LTI[16].

Порівняння бібліотек комп'ютерного зору

Порівняння бібліотек комп'ютерного зору [16]

7. Висновки

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

  1. Основною перевагою бібліотеки комп'ютерного зору, як і будь-якого іншого програмного забезпечення, є її продуктивність. Як видно з діаграми на рисунку 6, продуктивність OpenCV перевищує продуктивність аналогів (VXL і LTI-lib) навіть без використання додаткового компонента IPP.
  2. Бібліотека містить величезну кількість функцій для вирішення різноманітних завдань, починаючи з обробки зображень, комп'ютерного зору і закінчуючи навчанням машин. Крім того, бібліотека має відкритий вихідний код і ліцензію, що дозволяє використовувати увесь функціонал для розробки комерційних продуктів.
  3. Перевагою OpenCV є наявність російськомовної документації, наявність величезного числа туторіалів, уроків, наукових матеріалів та книг з застосування функціоналу і методів роботи з бібліотекою. Не можна не згадати про досить активне співтовариство розробників і користувачів бібліотеки, які можуть поділитися своїм досвідом і відповісти на питання, що вас цікавлять.
  4. Вирішальною перевагою у виборі OpenCV стала її кроссплатформовість і можливість використання у зв'язці практично з будь-якою мовою програмування [17].

8. Список джерел

  1. Компьютерное зрение — Википедия [Электронный ресурс]. – Режим доступа: https://ru.wikipedia.org/wiki/Компьютерное_зрение. – Загл. с экрана
  2. World Internet Users Statistics and 2018 World Population Stats [Электронный ресурс]. – Режим доступа: https://www.internetworldstats.com/stats.htm. – Загл. с экрана
  3. Оптическое распознавание символов — Википедия [Электронный ресурс]. – Режим доступа: https://ru.wikipedia.org/wiki/Оптическое_распознавание_символов. – Загл. с экрана
  4. Прохоренок, Н.А. OpenCV и Java. Обработка изображений и компьютерное зрение / Н.А. Прохоренок. – СПб.: БХВ-Петербург, 2018. – 320 с.
  5. Главная страница - Compvision.ru [Электронный ресурс]. – Режим доступа: http://www.compvision.ru/. – Загл. с экрана
  6. OpenCV / RoboCraft. Роботы? Это просто! [Электронный ресурс]. – Режим доступа: http://robocraft.ru/page/opencv/. – Загл. с экрана
  7. Колесник А. В., Ладыженский Ю. В. Распределенная система распознавания лиц на основе геометрических характеристик [Электронный ресурс] // Портал магистров ДонНТУ. – Режим доступа: http://masters.donntu.ru/2010/fknt/kolesnik/library/index.htm. – Загл. с экрана.
  8. Личканенко И.С., Пчелкин В.Н. Исследование методов и поиск эффективного алгоритма для задачи распознавания номерных знаков транспортных средств [Электронный ресурс] // Портал магистров ДонНТУ. – Режим доступа: http://masters.donntu.ru/2013/fknt/lichkanenko/diss/index.htm. – Загл. с экрана./li>
  9. Гайдуков Н.П., Савкова Е.О. Распознавание рукописного текста [Электронный ресурс] // Портал магистров ДонНТУ. – Режим доступа: http://masters.donntu.ru/2012/fknt/gaydukov/diss/index.htm. – Загл. с экрана.
  10. OpenCV library [Электронный ресурс]. – Режим доступа: https://opencv.org/. - Загл. с экрана.
  11. AForge.NET :: Framework [Электронный ресурс]. – Режим доступа: http://www.aforgenet.com/framework/. - Загл. с экрана.
  12. Применение библиотеки AForge.NET и ее расширения Accord.NET Framework при распознавании лиц в режиме реального времени | Статья в журнале «Молодой ученый» [Электронный ресурс]. – Режим доступа: https://moluch.ru/archive/154/43602/. - Загл. с экрана.
  13. VXL - C++ Libraries for Computer Vision [Электронный ресурс]. – Режим доступа: https://vxl.github.io/. - Загл. с экрана.
  14. What is VXL ? Vision Something Libraries A collection of Computer Vision libraries Open Source, grass roots effort, 53 developers –Supported by good community, - ppt download [Электронный ресурс]. – Режим доступа: https://slideplayer.com/slide/7433547. - Загл. с экрана.
  15. LTI-Lib [Электронный ресурс]. – Режим доступа: http://ltilib.sourceforge.net/doc/homepage/index.shtml. - Загл. с экрана.
  16. OpenCV vs VXL vs LTI: Performance Test - AI Shack[Электронный ресурс]. – Режим доступа: http://www.aishack.in/tutorials/opencv-vs-vxl-vs-lti-performance-test/. - Загл. с экрана.
  17. Зори, С.А. Сравнение популярных библиотек компьютерного зрения для использования в приложении по распознаванию транзисторов / С.А. Зори, С. А. Макогон // II Международная научно-практическая конференция "Программная инженерия: методы и технологии разработки информационно-вычислительных систем (ПИИВС-2018)" / Сборник научных трудов II Международной научно-практической конференции, Том 1. — Донецк, ДонНТУ — 2018,. – С. 66-70.