Библиотеки образов компьютерного зрения (computer vision image library)

Для работы систем компьютерного зрения, им необходимы т.н. «библиотеки образов» (Image Library), где хранятся образцы изображений различных предметов, букв, цифр, людей, пейзажей и пр. Полученные с видеокамер компьютерного зрения изображения, сравниваются с типовыми образами в библиотеке, и система выдает сообщение о том, что она «видит» на изображении с видеокамеры. Кроме того, такие библиотеки обычно содержат не только картинки, но алгоритмы обработки и сравнения изображений.

OpenCV

Библиотека компьютерного зрения с открытым исходным кодом OpenCV (Open Source Computer Vision Library) – библиотека алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения. Реализована на языке C/C++, также разрабатывается для Python, Java, Ruby, Matlab, Lua и других языков.

Функции OpenCV:

  • интерпретация изображений;
  • калибровка камеры по эталону;
  • устранение оптических искажений;
  • определение сходства;
  • анализ перемещения объекта;
  • определение формы объекта и слежение за объектом;
  • 3D-реконструкция;
  • сегментация объекта;
  • распознавание жестов.

1

Рисунок 1. Интерфейс OpenCV

OpenCV выпускается под лицензией BSD и бесплатна как для академического, так и для коммерческого использования. OpenCV имеет интерфейсы для языков C++, Python и Java, может работать под операционными системами Windows, Linux, Mac OS, iOS и Android.

Сообщества пользователей OpenCV насчитывают более 47 тысяч человек. Количество скачиваний платформы превышает 14 миллионов. Область применения варьируется от интерактивного искусства до проверки шахт, сшивания карт в Интернете или передовой робототехники.

PCL (Point Cloud Library)

Библиотека облаков точек PCL (Point Cloud Library) — это крупномасштабный открытый проект для обработки 2D/3D-изображений при помощи технологии облака точек. Платформа PCL содержит множество современных алгоритмов, включая фильтрацию, оценку характеристик, реконструкцию поверхности, регистрацию, подбор модели и сегментацию.

Эти алгоритмы могут использоваться, например, для фильтрации всплесков на фоне зашумлённых данных, сшивания трёхмерных облаков точек, сегментирования соответствующих частей сцены, извлечения ключевых точек и вычисления дескрипторов для распознавания объектов на основе их геометрического вида, создания поверхностей из Облака точек и их визуализации, и других целей.

PCL является программным обеспечением с открытым исходным кодом, т.е. бесплатным для коммерческого и исследовательского использования. Это кроссплатформенный проект, который может быть успешно скомпилирован и развернут на Linux, MacOS, Windows и Android / iOS.

2

Рисунок 2. Пример визуализации PCL (внизу) для заданного набора облака точек.

Облако точек (pointcloud) – это структура данных, представляющая набор точек, которая обычно используется для представления трёхмерных моделей. В 3D-облаке точек, они обычно представлены координатами X, Y и Z относительно референсной поверхности. Если присутствует информация о цвете (см. рисунок ниже), то облако точек становится четырёхмерным.

3

Рисунок 3. Пример облаков данных.

Облака точек могут быть получены от аппаратных сенсоров, таких стереокамеры, 3D-сканеры, «летающие» камеры (time-of-flight), или же могут быть сгенерированы программными средствами.

PCL поддерживает интерфейсы OpenNI 3D, и может получать и обрабатывать данные от таких устройств, как 3D-камеры PrimeSensе, Microsoft Kinect, или Asus XTion PRO.

ROS

ROS (Robot Operating System) – это платформа разработки ПО для роботов. Она представляет собой набор инструментов, библиотек и соглашений, которые упрощают разработки сложных и эффективных программ для управления роботами для многих типов роботов.

Разработка действительно эффективных программ для роботов представляет собой довольно сложную задачу. Самые простые для человека действия для робота являются весьма сложными, к тому же они могут сильно зависеть от среды, задачи и расположения робота. Обработка всех возможных вариаций – непосильная задача не только для индивидуального программиста, но и для команды, лаборатории или даже целой организации.

Именно поэтому и была создана библиотека ROS для того, чтобы объединить усилия многих разработчиков и избавить их от необходимости самостоятельно разрабатывать то, что уже было сделано другими. Например, в одной лаборатории могут работать эксперты по маппингу внутренних сред комнат, другая группа может иметь экспертов по использованию данных маппинга для навигации, а ещё одна – может найти алгоритм компьютерного зрения, который хорошо работает в ситуациях распознавания небольших объектов в замкнутых пространствах.

4

Рисунок 4. Платформа разработки ПО для роботов ROS.

MATLAB

MATLAB — это высокоуровневый язык и интерактивная среда для программирования, расчётов и визуализации результатов. С помощью MATLAB можно анализировать данные, разрабатывать алгоритмы, создавать модели и приложения.

MATLAB широко используется в таких областях, как:

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

5

Рисунок 5. Пример распознавания предметов круглой формы на изображении при помощи MATLAB.

MATLAB представляет собой основу семейства продуктов компании MathWorks, и является главным инструментом для решения широкого спектра научных и прикладных задач, в таких областях как: моделирование объектов и разработка систем управления, проектирование коммуникационных систем, обработка сигналов и изображений, измерение сигналов и тестирование, финансовое моделирование, вычислительная биология и др.

CUDA

CUDA (Compute Unified Device Architecture) — программно-аппаратная архитектура параллельных вычислений, которая позволяет существенно увеличить вычислительную производительность благодаря использованию графических процессоров фирмы Nvidia.

Значительная часть задач CV – это обработка изображений. Именно под эти задачи создаются графические процессоры GPU и графические ускорители. Поэтому, важной задачей является ускорение работы платформы OpenCV на графических процессорах. Цели этой разработки:

  1. Обеспечить разработчиков удобной средой для разработки ПО для GPU, а также обеспечить концептуальную совместимость с имеющимся функционалом CPU.
  2. Достичь наилучшей производительности GPU.
  3. Законченность и целостность платформы, наличие как можно более широкого функционала.

6

Рисунок 6. Стек программной платформы CUDA.

***

unnamed

 

 

About Алексей Шалагинов

Независимый эксперт
Gallery | This entry was posted in Технологии, Искусственный интеллект and tagged , , , , , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.