<<ШУШМУМ~^®УГМа1>#2414Ш,2(0]9 / ARCHITECTURE
53
УДК 004
Шахин Гадир
Аспирант Санкт-Петербургского Национального Исследовательского Университета Информационных Технологий, Механики и Оптики,
DOI: 10.24411/2520-6990-2019-10812 СРАВНИТЕЛЬНЫЙ АНАЛИЗ БИБЛИОТЕК КОМПЬЮТЕРНОГО ЗРЕНИЯ
Shaheen Gh.
Postgraduate student of St. Petersburg National Research University of Information Technologies, Mechanics and Optics
COMPARATIVE ANALYSIS OF COMPUTER VISION LIBRARIES
Аннотация
Целью данной статьи является выявление особенностей, возможностей и перспектив развития библиотек компьютерного зрения. Теоретический анализ библиотек компьютерного зрения и программирования, сравнение, интерпретационные методы, которые дают возможность обобщения и объяснения установленных фактов и их взаимосвязи выделены. Рассмотрены библиотеки компьютерного зрения, основанные на различных языках программирования, в частности С++, MATLAB, Python. На сегодняшний день существует широкий перечень библиотек компьютерного зрения, которые являются универсальными в своем применении, но наряду с мощным потенциалом и преимуществами имеют определенные недостатки и «узкие места». Выбор конкретной библиотеки зависит от задач и целей пользователя.
Abstract
The purpose of this article is to identify the features, opportunities and prospects for the development of computer vision libraries. Theoretical analysis of computer vision and programming libraries, comparison, interpretative methods that enable generalization and explanation of establishedfacts and their interrelation are highlighted. Computer vision libraries based on various programming languages, in particular C++, MATLAB, Python, are considered. To date, there is a wide list of computer vision libraries that are universal in their application, but along with the powerful potential and advantages have certain disadvantages and"bottlenecks". The choice of a particular library depends on the user's goals and objectives.
Ключевые слова: библиотека; компьютерное зрение; программирование.
Key words: library; computer vision; programming.
На данный момент технологии достигли значительного развития и продолжают усовершенствоваться. Человечество уже давно пытается создать себе подобные механизмы и другие средства, обладающие людскими возможностями.
Анализ последних исследований показал, что в наше время большинство научных разработок так или иначе связаны с искусственным интеллектом и методами его использования в решении задач любого характера, это в свою очередь привлекает большое внимание к теме компьютерного зрения, как одного из способов восприятия окружающего мира для машин.
Сегодня человек встречается с системами компьютерного зрения практически ежедневно - сканеры, штрих-коды, системы видеонаблюдения и т.д. Компьютерное зрение (машинное зрение, computer vision) представляет собой совокупность программно-технических средств, которые обеспечивают считывание изображений в цифровом виде, их обработку и выдачу результата в форме, пригодной для практического использования в режиме реального времени [1]. Также можно отметить, что компьютерное зрение — это попытка скопировать зрение человека, при этом роль глаз выполняют камеры. Сфера применения компьютерного зрения очень разнообразна, а сама технология развивается динамично и разносторонне.
В настоящее время количество новых решений, актуальных приложений и библиотек для компьютерного зрения стремительно возрастает и, хотя некоторые из них все еще находятся на стадии фундаментальных исследований, уже достаточное их количество применяется в коммерческих продуктах, где они органично встраиваются в более крупную систему, которая способна решать сложные задачи, например, в области медицины или в процессе измерения и контроля качества на производствах.
Отдельное внимание следует акцентировать на том, что существуют библиотеки, которые являются более продвинутыми по функциональности, к их числу можно отнести Ш^п, также есть специализированные библиотеки, делающие акцент на какой-то одной конкретной области или задаче компьютерного зрения, например, Libmv, кроме того, активно используются в разных сферах библиотеки широкой тематики, такие как OpenCV. Возможности современных программных библиотек компьютерного зрения обеспечивают решение ряда важных практических задач: анализ содержания изображений, поиск и распознавание заданных объектов, выявление текста, отслеживание движений объектов, выявление общих элементов на сравниваемых изображениях, реализация методов обучения для баз видеоданных и т.д.
Таким образом, приведенные обстоятельства обусловливают актуальность теоретического и
ARCHITECTURE / <<ШУШМУМ~^®УГМа1>#24№)),2©]]9
54_
практического задания, которое заключается в проведении сравнительного анализа библиотек компьютерного зрения, что и обусловливает выбор темы данной статьи.
Проблемы создания и применения методов компьютерного зрения в разное время в своих работах исследовали Р. Сезелиски, Дж. Даугман, Дж. Стокман, Л. Шапиро, Чанг Шу, А. Конушин и другие. Созданию методов интеллектуальной обработки визуальной информации современными системами компьютерного зрения посвящены работы С. Гадецкого и В. Гороховатской.
Однако, в большинстве своем указанные исследования обычно берут свое начало из других областей, и, соответственно, не содержат стандартных формулировок проблемы компьютерного зрения. Также дополнительного внимания требует исследование уже готовых решений и методов для реализации систем компьютерного зрения, с целью дальнейшей их оптимизации и внедрения в зависимости от запросов пользователей.
Таким образом, с учетом вышеизложенного, цель статьи заключается в выявлении особенностей, возможностей и перспектив развития библиотек компьютерного зрения.
Содержание и сущность компьютерного зрения выходит за рамки обработки образов или картинок, так как позволяет получить соответствующую информацию из изображений и принимать решения на основе этих данных [2]. Видеоданные могут быть представлены в исполнении разнообразных форм, таких как видеопоследовательность, изображения, полученные от разных камер или картинка в трехмерном измерении из медицинского сканера и т.д.
В соответствии с указанными требованиями одним из основных критериев выбора библиотеки для компьютерного зрения является кроссплатфор-менный язык программирования.
Именно на таком языке программирования - С ++ базируется библиотека OpenCV. Она располагает набором алгоритмов для компьютерного видения, обработки изображения, а также имеет встроенные многочисленные алгоритмы общего назначения с открытым кодом, позволяющие реализовать значительную часть математических операций над изображениями. Библиотека может быть использована на наиболее популярных на сегодняшний день платформах - Windows, Linux, Mac, Android, IOS. OpenCV имеет модульную структуру. Это означает, что пакет включает отдельные динамические и статические библиотеки.
Кроме кросплатформенности сильной стороной языка программирования С ++ является надежность и скорость, что позволяет OpenCV вмещать в себя более 2500 оптимизированных алгоритмов, содержащих как классические, так и практические схемы машинного обучения и компьютерного зрения, например, интерпретация изображения, калибровка камеры, устранение оптических шумов, определение сходства, анализ перемещения объекта, сегментация изображения, анализ жестов и т.д.
На сегодняшний день основное направление развития библиотеки - интеграция машинного обучения, для улучшения результатов работы, уже есть
поддержка таких фреймворков, как: TensorFlow, PyTorch, Caffe.
Несмотря на все возможности, достоинства и плюсы библиотеки OpenCV, следует отметить ее существенные недостатки. Во-первых, она перегружена второстепенными, дополнительными функциями, что необоснованно затрудняет ее использование. Во-вторых, существенным «узким местом» библиотеки является слабая документация, а также трудности в отладке программ. В-третьих, она достаточно сложна для изучения.
Emgu CV является кроссплатформенным Net-дополнением для библиотеки OpenCV. Оно разработано для работы с NET-совместимыми языками, такими как C #, VB, VC ++, IronPython и тому подобное. Дополнение используется в Visual Studio, Xamarin, также оно работает с операционными системами Windows, Linux, Mac OS X, IOS, Android и Windows Phone [3].
Кроме OpenCV на кроссплатформенном языке С ++ построена также VXL библиотека (the Vision-something-Libraries), которая представляет собой набор встроенных приложений C++, предназначенных для научных исследований и внедрения компьютерного зрения. Этот пакет создавался на основе TargetJr и IUE для реализации легкой, быстрой и последовательной системы. VXL написан на ANSI / ISO C ++.
Следует отметить, что VXL - это пакет со многими отдельными модулями, содержащими инструменты низкоуровневой обработки данных. Он обеспечивает высокую функциональность при обработке матриц. Однако необходимо обратить внимание на трудности в процессе его сборки и установки.
LTI-lib представляет собой объектно-ориентированную библиотеку алгоритмов и структур данных, которая используется при обработке изображений и в сфере компьютерного зрения. Библиотека была разработана в техническом университете как часть научно-исследовательских проектов в области компьютерного зрения одновременно с технологиями робототехники, методами распознавания объектов, голоса и жестов. Основной целью разработки данной библиотеки являлось создание объектно-ориентированных алгоритмов на языке С++, что в большинстве случаев упрощает использование кода и его обслуживание.
Также на языке С++ написана библиотека GDAL, которая является свободной и открывает широкие возможности работы с растровыми данными. Утилиты командной строки, входящие в состав библиотеки GDAL, широко используются для выполнения различных задач. GDAL позволяет выполнить перепроектирование, обрезку растров, сочетание растров, геотрансформацию, а также получить информацию о количестве каналов растра, удалить данные и метаданные. Библиотека разработана в виде единой абстрактной модели данных для всех поддерживаемых растровых форматов. Сопутствующая библиотека OGR, являющаяся частью дерева исходных кодов GDAL, располагает схожими возможностями для векторных данных [4]. Перспективы развития библиотеки заключаются в разработке открытого интерфейса.
«C@yL@qyiym-J®yrMaL»#24I4®),2@19 / ARCHITECTURE
55
Кроме библиотек, основанные на кроссплат-форменном языке С ++ также существует широкой спектр библиотек, использующих скриптовый язык программирования Python, который за все годы своего существования получил широкое развитие в работе с изображениями. К числу таких библиотек можно отнести Pillow, Pillow-SIMD, Matplotlib, VIPS, ImageMagick & GraphicsMagick, NumPython и другие. Python, с помощью библиотек позволяет выполнять сложные задачи компьютерного зрения и анализировать изображения, комбинируя существующие и собственные разработки, с использованием относительно простых инструментов и методов.
Например, библиотека NumPython превращает Python в свободный и более мощный эквивалент системы. Библиотека выполняет реализацию матричных и 16 векторных операций, а также многочисленных алгоритмов.
Matplotlib - библиотека на языке программирования Python для визуализации данных двумерной
и трехмерной графики. Получаемые изображения могут быть использованы в качестве иллюстраций в картографических публикациях.
Отдельно следует рассмотреть Image Processing Toolbox, который является библиотекой, основанной на языке MATLAB. В структуру данной библиотеки входит полный набор типовых эталонных алгоритмов для обработки и анализа изображений, в том числе функции частотного анализа, фильтрации, морфологического анализа и распознавания, улучшения изображений. Язык MATLAB является открытым, что позволяет пользователю контролировать выполнение алгоритмов, изменять исходный код, а также создавать свои собственные функции и процедуры [5].
Очевидно, что в рамках данной статьи не представляется возможным рассмотреть все библиотеки компьютерного зрения, поэтому синтезированная информация об основных из них представлена в таблице 1.
Таблица 1.
Библиотека Преимущества Недостатки
OpenCV Преобразование изображений в другие базисы; широкий набор методов и алгоритмов всех уровней компьютерного зрения; наличие интерфейсов для языков программирования: Python, Java, MATLAB, С ++ Отсутствие стабильной версии
MATLAB Image Processing ToolBox Увеличение возможностей управления дополнительными средствами в GUI; алгоритмы чтения и записи данных в файл медицинского формата; просмотр нескольких изображений Ориентирована в большинстве своем на исследовательскую работу
CImg Простая в применении Не оптимизирована, документация не структурирована
Java2D Обладает объектно-ориентированной архитектурой, полнофункциональная. Имеет закрытый код
Krita Оптимизирована для интерактивной работы; Проблемы с большими изображениями
Vigra Работает с большими изображениями; удобная документация Ориентирована в основном на исследовательскую работу
VIPS Работает с большими по размеру изображениями; работает с различными цветовыми моделями. Имеет большой объем; не оптимизирована
VXL Работает с большими по размеру изображениями Проблемы с регулярным обновлением; оптимизирована только для простых изображений в RGB формате
Заключение
Таким образом, подводя итоги, отметим, что рассмотренные библиотеки являются универсальными в своем применении. Выбор конкретной из них зависит от задач и целей пользователя. В то же время, несмотря на то, что каждая из рассмотренных библиотек является достаточно мощной, они имеют свои достоинства и недостатки.
Список литературы:
1. Kaehler, Adrian, and Gary Bradski. Learning OpenCV 3: computer vision in C++ with the OpenCV library. «O'Reilly Media, Inc.", 2016.
2. Favorskaya, Margarita N., and Lakhmi C. Jain, eds. Computer Vision in Control Systems-4: Real Life Applications. Vol. 136. Springer, 2017.
3. Arai, Kohei. Advances in Computer Vision: Proceedings of the 2019 Computer Vision Conference (CVC), Volume 2. Springer, 2019.
4. Scherer, Rafal. Computer vision methods for fast image classification and retrieval. Springer International Publishing, 2020.
5. Hassaballah, Mahmoud, and Khalid M. Hosny, eds. Recent Advances in Computer Vision: Theories and Applications. Vol. 804. Springer, 2018.