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

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

Кафедра программной инженерии

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

Тема магистерской работы: Разработка и оптимизация алгоритмов оптического распознавания символов и их программная кроссплатформенная реализация с использованием 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. – Загл. с экрана.
  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.