Возможности библиотеки OpenCV для создания систем видеонаблюдения

Автор: Савич О.А.
Источник: Конференция МИДО

Содержание

  1. Статья
  2. Литература

Статья

Для лучшего понимания материала, давайте вначале разберемся с самим определением библиотеки.

Библиотека (в программировании) – это файл или набор файлов, содержащих подпрограммы, функции, которые используются для разработки программного обеспечения. Каждый язык программирования имеет свой набор библиотек, эти библиотеки называются стандартными, кроме стандартных библиотек есть еще пользовательские библиотеки, они предназначены для использования специализированных задач, разрабатываются программистами. Сегодня мы познакомимся с графической библиотекой разработанной компанией Intel на языке программирования С/С++, которая широко применяется для создания систем видеонаблюдения.

Итак OpenCV (open source computer vision library)— это библиотека компьютерного зрения с открытым исходным кодом. Также, она существует для некоторых других языков, например, для Java. Включает в себя различные алгоритмы компьютерного зрения, распознавания изображений и многое другое, работающих в реальном режиме времени. Все желающие могут использовать библиотеку OpenCV бесплатно, как в образовательных целях, так и в коммерческих проектах.

Она включает в себя следующие алгоритмы:

  • Распознавание объектов в видеопотоке.
  • Распознавание печатного и рукописного текста.
  • Устранение искажений картинки.
  • Выявление сходства и формы объектов.
  • Слежение за перемещением объекта.
  • Распознавание движений, жестов и многое другое.

Поддерживаемые платформы и инструменты для OpenCV:

  • Windows: компиляторы Microsoft Visual C++ (6.0, .NET 2003), Intel Compiler, Borland C++, Mingw (GCC 3.x).
  • Linux: GCC (2.9x, 3.x), Intel Compiler: "./configure-make-make install", RPM (spec файл включен в поставку)
  • Используются C и "облегченный" C++. Прагмы и условная компиляция используются очень ограниченно.

Средства GUI, захват видео:

  • Windows: DirectShow, VFW, MIL, CMU1394
  • Linux: V4L2, DC1394, FFMPEG

Документация: статический HTML

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

На сегодняшний день распознавание объектов в мультимедийном видеопотоке становится особо актуальными. Ведется очень много исследований в этой области. Например немецкими учеными было разработано программное обеспечение, которое распознавало фигуры людей, и в зависимости от того куда двигался человек программа автоматически поворачивала камеру и следила за ним.

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

Открытая лицензия для OpenCV была составлена таким образом, чтобы было возможно создавать коммерческие приложение, используя любые возможности OpenCV. Вы не обязаны делать Ваш проект открытым или публиковать изменения, внесённые вами в библиотеку, хотя мы надеемся, что вы это сделаете. Отчасти из-за таких либеральных условий существует большое сообщество пользователей, включающее в себя такие крупные компании как IBM, Microsoft, Intel, Sony, Siemens, Google, и это далеко не полный список, а также научно-исследовательские центры, такие как Стэнфорд, Массачусетский технологический институт, CMU, Кембридж, и INRIA. OpenCV популярна во всём мире, причём большие сообщества пользователей можно найти в Китае, Японии, России, Европе и Израиле.

С момента своего альфа-релиза в январе 1999 года, OpenCV была использована во многих приложениях и научно-исследовательских работах, в том числе: наложение обычных карт и фотографий со спутника, выравнивание документов при сканировании, удаление шума из медицинских изображений, анализ объектов, системы безопасности, автоматическое наблюдение, системы контроля качества на производстве, калибровка камер, а также беспилотные летательные, наземные и подводные аппараты. Она даже была использована для распознавания звука и музыки, где методы распознавания образов были применены к изображениям спектрограмм звука. Библиотека стала ключевой частью системы зрения робота "Stanley" из Стэнфорда, выигравшего 2.000.000$ на Больших Пустынных Гонках Роботов DARPA.

Давайте теперь разберемся с функциональностью OpenCV, итак она седержит следующие составляющие:

  • Ядро cxcore, также частично используется в Intel Open Source Probabilistic Network Library:
    • Базовые операции над многомерными числовыми массивами;
    • Матричная алгебра, математические ф-ции, генераторы случайных чисел;
    • DFT, DCT;
    • Запись/восстановление структур данных в/из XML/YAML;
    • Базовые функции 2D графики;
    • Поддержка более сложных структур данных: разреженные массивы, динамически растущие последовательности, графы;
  • Модуль обработки изображений и компьютерного зрения CV:
    • Базовые операции над изображениями (фильтрация, геометрические преобразования, преобразование цветовых пространств и т.д.);
    • Анализ изображений (выбор отличительных признаков, морфология, поиск контуров, гистограммы);
    • Структурный анализ (описание форм, плоские разбиения и т.д.);
    • Анализ движения, слежение за объектами;
    • Обнаружение объектов, в частности лиц;
    • Калибровка камер, элементы восстановления пространственной структуры;
  • Модуль для ввода/вывода изображений и видео , пользовательского интерфейса highgui:
    • Захват видео с камер и из видео файлов, чтение/запись статических изображений;
    • Функции для организации простого UI (сейчас все демо приложения используют HighGUI);
  • Экспериментальные и устаревшие функции cvaux:
    • Пространств. зрение: стерео калибрация, само калибрация;
    • Поиск стерео-соответствия, клики в графах;
    • Нахождение и описание черт лица;
    • Сравнение форм, построение скелетонов;
    • Скрытые Марковские цепи;
    • Описание текстур.

И наконец какое планируемое будущее развитие ждет OpenCV:

  • Стратегия смещается и расширяется - от настольных приложений HCI к более актуальным задачам (встроенные системы (камерафоны), цифровой дом, безопасность, медицинские приложения, поиск в домашних и промышленных цифровых библиотеках изображений и видео и т.д.);
  • Библиотека останется свободной;
  • Улучшится стабильность и скорость;
  • Улучшится интеграция с IPP для еще большей производительности;
  • Переход к более открытой модели разработки;
  • Перенос некоторой функциональности из прошлых и текущих исследовательских проектов.

Библиотека OpenCV достаточно мощный инструмент для решения задач как в научной , так и промышленной областях.