Идея стереозрения
Стереозрение — одно из направлений машинного зрения. Оно даёт представление о глубине изображения и расстоянии до объектов, а значит, позволяет строить трёхмерную картину окружающего мира. В робототехнике это используют для управления движением наземных машин и беспилотных летательных аппаратов, а также для распознавания образов.
Например, на основе стереоскопического зрения можно создавать игрушки-роботы, которые узнают хозяина и реагируют на его действия.
Чем стерео отличается от одной камеры
Одна камера сообщает цвет и яркость. Стереопара, в определённой степени повторяя устройство человеческого зрения, добавляет расстояние до объекта. Это позволяет обойтись без разнообразных дорогостоящих датчиков, сонаров и лидаров и снизить себестоимость технического решения, что для ряда робототехнических задач критично.
Геометрия
Как правило, используют две синхронно работающие камеры, разнесённые в пространстве. Каждая видит один и тот же объект под своим углом, поэтому его изображение на двух кадрах сдвинуто. Этот сдвиг называется диспаритетом.
Чем ближе объект, тем больше сдвиг. Для простейшего случая двух параллельных камер глубина вычисляется так:
Z = f · B / d
где Z — расстояние до объекта, f — фокусное расстояние в пикселях, B — база (расстояние между камерами), d — диспаритет в пикселях.
По двум кадрам можно восстановить форму и расположение наблюдаемых объектов в трёхмерном пространстве и построить трёхмерную полигональную модель объекта контроля.
Ограничения
Несмотря на рост мощности процессоров и видеокарт, быстродействия и объёма памяти, существующие алгоритмы стереозрения работают довольно медленно: для каждой точки нужно найти соответствие на втором кадре. Сложнее всего с однородными поверхностями без текстуры, с бликами и в плохом освещении.
Но направление остаётся одним из самых перспективных, алгоритмы постоянно совершенствуются, и технология находит всё больше практических применений. Основная идея современных реализаций — выполнять операции в реальном времени, чтобы на их основе можно было быстро создавать достаточно сложные приложения.