Машинное зрение

Стереозрение: как две камеры измеряют расстояние

Две синхронные камеры позволяют компьютеру узнать не только цвет и яркость объекта, но и расстояние до него. Объясняем геометрию, формулу и причины, по которым стереоалгоритмы до сих пор считаются «медленными».

Идея стереозрения

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

Например, на основе стереоскопического зрения можно создавать игрушки-роботы, которые узнают хозяина и реагируют на его действия.

Чем стерео отличается от одной камеры

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

Геометрия

Как правило, используют две синхронно работающие камеры, разнесённые в пространстве. Каждая видит один и тот же объект под своим углом, поэтому его изображение на двух кадрах сдвинуто. Этот сдвиг называется диспаритетом.

Геометрия стереозрения Две камеры на расстоянии B друг от друга видят одну точку под разными углами. Сдвиг изображения точки между кадрами называется диспаритетом. база B глубина Z левая камера правая камера Левый кадр Правый кадр сдвиг d (диспаритет)
Чем ближе объект, тем сильнее его изображение смещается между кадрами двух камер.

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

Z = f · B / d

где Z — расстояние до объекта, f — фокусное расстояние в пикселях, B — база (расстояние между камерами), d — диспаритет в пикселях.

Пример расчётаПри f = 700 пикселей и базе B = 0,12 м диспаритет d = 14 пикселей соответствует расстоянию Z = 700 · 0,12 / 14 = 6 м. Ошибка в один пиксель на этой дистанции даёт неопределённость около 0,43 м, поскольку погрешность растёт пропорционально квадрату расстояния: ΔZ ≈ Z² · Δd / (f · B). Поэтому для дальних объектов базу увеличивают.

По двум кадрам можно восстановить форму и расположение наблюдаемых объектов в трёхмерном пространстве и построить трёхмерную полигональную модель объекта контроля.

Ограничения

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

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

Что почитать дальше