9 января 2002 г.
Люди, создавшие и использующие компьютер, научили его многому из того, что умеют сами — он может слышать и распознавать голос, разговаривать и читать вслух, логически мыслить. Но можно ли заставить компьютер видеть все, что происходит вокруг, подобно тому, как это видит человек?
Мощность микропроцессоров возрастает с каждым годом и дает возможность ставить перед компьютером все более сложные и необычные задания. К таким относится и задача научить компьютер видеть окружающие его объекты, причем именно видеть, то есть, анализируя все происходящее вокруг, отличать объекты и "понимать", что происходит. Естественно, подобная задача не сводится к трансляции видеоизображения на монитор — это компьютеры умеют уже давно. Нет, цель намного сложнее: наделить ЭВМ стереоскопическим «зрением» с возможностью не только определять расстояние до объекта, но и анализировать его положение в пространстве и движения.
Что было раньше…
Вообще, работа в этой области велась уже давно. Так, несколькими производителями были разработаны сложные и дорогие аппаратные комплексы, состоящие из SCSI-контроллера, видеокамеры с двумя объективами и высокоточным механизмом, управляющим их положением в пространстве и фокусировкой. Такие комплексы помимо немалых финансовых затрат требовали значительных вычислительных ресурсов.
С появлением недорогих Web-камер, подключающихся через USB-интерфейс к ПК, ситуация изменилась. Ведь теперь вместо них можно применить две Web-камеры и специальную программу, обрабатывающую полученные с этих камер изображения.
…как это работает сейчас
Именно по такому пути пошли инженеры научно-исследовательских лабораторий компании Intel. Разработанная ими библиотека OpenCV (Computer Vision Library) представляет собой инструментарий, насчитывающий около 500 функций обработки и анализа изображений, получаемых с Web-камер, для создания программных пакетов компьютерного «зрения». Первая версия OpenCV для Windows вышла в июне 2000 г., версия для Linux — в сентябре того же года. Библиотека представляет собой бесплатно распространяемое ПО с открытым кодом. На сегодня насчитывается около 200 членов в группе пользователей OpenCV.
Данное решение вполне доступно для использования на современном персональном компьютере (достаточно процессора Pentium 4 с тактовой частотой 1 ГГц). Все, что для этого нужно — две недорогие Web-камеры (их стоимость не превышает $100 за штуку) и специальное ПО, использующее библиотеку OpenCV. Причем, камеры не требуют какой-либо юстировки, их можно приблизительно ориентировать относительно друг друга. Новая система компьютерного «зрения» действует на основе эпиполярного совмещения изображений, получаемых с двух камер. Эпиполярное совмещение подразумевает математическое смещение точки наблюдения, соответствующее параллельному расположению лучей зрения двух камер. Система имеет два типа алгоритмов совмещения: быстрый (20 кадров/с) и медленный, но более точный (1–4 кадров/с).
Перед началом работы аппаратно-программный комплекс нужно откалибровать, что производится при помощи обычной шахматной доски, служащей в качестве эталона. При этом создается калибровочная таблица, позволяющая производить автоматический контроль над внутренними параметрами камеры (корректировка оптических искажений, например искривлений по краям кадра) и внешними (взаимное расположение камер в пространстве).
Возможности такой системы достаточно велики. Например, она может отделить один или несколько объектов от фона (если они двигаются), вырезать их изображения по контуру и заменить фон на любой другой, причем проделать все это в режиме реального времени. Кроме того, система может отслеживать положение головы или рук человека перед камерой, анализировать его жесты (например, если пальцы руки сомкнуты в виде колечка, компьютер определяет этот жест как знак «ОК»). Для полного отслеживания трехмерного объекта требуется информация о 5–10 точках объекта.
Применение и внедрение
Хотя с момента выхода пакета не прошло и двух лет, уже есть реальные примеры внедрения данной технологии. Американская компания Inspeck использует OpenCV для обработки изображений в трехмерных оптических измерительных системах.
Широкие перспективы у данной технологии в роботостроении. Некоторые производители уже сейчас применяют OpenCV для создания игрушек-роботов, которые смогут опознавать и реагировать на определенные действия своего хозяина, а также передвигаться по дому, избегая столкновения с другими объектами. Кроме того, с внедрением данной технологии возможно создание робонавта — наиболее совершенного человекоподобного робота для исследования космоса.
Агентство по наружной рекламе использует функции OpenCV для работы системы формирования трехмерных рекламных изображений.
Новая версия OpenCV позволяет импортировать функции этой библиотеки в MATLAB — наиболее распространенный пакет для научных исследований и моделирования в области компьютерной графики и зрения.
OpenCV — компонент искусственного интеллекта?
Хотя работы в области создания искусственного интеллекта ведутся с начала 60-х, исследователи встречаются с множеством проблем. Одна из них — самообучаемость таких систем, способность к самоанализу. Например, вышеописанные комплексы компьютерного «зрения» способны отличить человека от фона, если он движется, однако не «увидят» его, если он неподвижно сидит в кресле. Тем не менее эту проблему можно легко исправить, добавив функцию памяти трехмерных объектов. Сможет ли помочь OpenCV в создании систем искусственного интеллекта? По всей видимости, да! Ведь OpenCV — лишь один из «кирпичиков», способных вместе составить сложнейшую мыслящую систему.
Библиотеку OpenCV можно загрузить с сайта http://www.intel.com/research/mrl/research/opencv. Там же находится дополнительная информация об этой разработке.
|