Когда вы смотрите на чашку перед собой, вы точно знаете: она ближе, чем окно за ней. Для мозга это простая задача. Для компьютера — вовсе нет.
Компьютер видит мир не как человек, а как последовательность пикселей. Чтобы понять, где ближе, а где дальше, ему нужно научиться «видеть» глубину.
Один из самых надёжных способов — построить карту смещений между двумя изображениями, полученную с разных точек. Это и есть disparity map. Простыми словами — это изображение, где каждый пиксель показывает, как сильно сместился объект между двумя кадрами. И чем больше смещение, тем ближе объект.
Разберёмся подробнее, как это работает и зачем это вообще нужно.
Почему нам доступна глубина
У человека два глаза, расположенные немного поодаль друг от друга.
Это создаёт эффект бинокулярного параллакса: каждый глаз видит предметы под немного другим углом.
Если закрыть один глаз, а потом другой, предмет «скачет». Чем он ближе — тем сильнее смещается. Чем дальше — тем меньше. Это смещение и даёт нам ощущение глубины. Мы замечаем, что одна машина ближе другой, что дерево перед домом, а человек стоит за забором.
Компьютер может повторить этот эффект.
Для этого ему нужны два изображения, снятые с разных точек — например, с помощью стереокамеры. Дальше он анализирует разницу между ними и на её основе строит карту глубины.
Disparity — это что?
Disparity (от англ. «расхождение») — это разность положения объекта на левом и правом изображении.
Например, если кружка сместилась между двумя кадрами на 12 пикселей, то её disparity равна 12.
И чем ближе объект, тем больше disparity. Чем дальше — тем меньше. Это фундаментальный принцип.
Но одно число мало что даёт. Чтобы получить полноценное представление о сцене, disparity считается для каждого пикселя.
Так получается целая карта смещений — disparity map.
Как выглядит disparity map
Disparity map — это изображение, где цвет или яркость каждого пикселя отражает, насколько он «сместился» между двумя кадрами. Проще говоря: насколько близко он находится к камере.
Обычно такие карты чёрно-белые или псевдоцветные:
- Белые и светлые участки — объекты близко.
- Тёмные — объекты далеко.
- В цветных картах разные оттенки кодируют разные расстояния.
На такой карте можно различить форму объектов — силуэты людей, машин, зданий. Это не просто графика: это реальная информация о пространстве.
Disparity и глубина — не одно и то же
Disparity — это не глубина напрямую.
Это её обратная величина. Объекты с большой disparity находятся ближе, а с маленькой — дальше.
Но если известны параметры камер (расстояние между ними и фокусное расстояние), disparity можно перевести в глубину в метрах.
Пример формулы:
Глубина = (Базовое расстояние × Фокусное расстояние) / Disparity
Таким образом, зная disparity, можно восстановить трёхмерное представление сцены.
Зачем вообще нужна такая карта?
Disparity map даёт компьютеру представление о глубине. А это критически важно во многих задачах:
- Определить, что объект близко и может представлять опасность
- Понять, где находятся стены, а где свободное пространство
- Разделить передний и задний план
- Навигировать в реальном мире, а не в плоской картинке
Без глубины искусственное зрение остаётся двумерным — а значит, крайне ограниченным.
Где это применяется в реальности
Вот несколько реальных сценариев, где disparity map используется каждый день:
🔹 Автономные автомобили
Стереокамеры позволяют машине оценивать расстояния до объектов: других авто, пешеходов, бордюров. Это нужно для торможения, объезда, планирования маршрута.
🔹 Робототехника
Роботы используют disparity map, чтобы не столкнуться со стеной, найти дверь или схватить предмет. Особенно важно это в динамичных или незнакомых средах.
🔹 3D-сканирование и реконструкция
С помощью disparity можно строить трёхмерные модели зданий, комнат, объектов — например, для архитектуры или игр.
🔹 Дополненная реальность (AR)
Чтобы виртуальный предмет стоял на полу, а не «висел» в воздухе, системе нужно понимать глубину. Disparity map позволяет точно определить поверхности.
🔹 Безопасность и мониторинг
Камеры могут реагировать на вторжения, приближение человека, падения — всё благодаря пониманию, где и на каком расстоянии происходят события.
🔹 Медицина
В некоторых хирургических роботах disparity используется для оценки положения инструментов и тканей в реальном времени.
Как строится disparity map
Есть два основных подхода.
1. Классический (геометрический):
- Камеры калибруются (определяются точные параметры)
- Строится карта соответствия точек между изображениями
- Для каждой точки считается disparity
- Результат сглаживается, фильтруется, обрабатывается
Этот способ надёжен, особенно при хорошем освещении и текстуре сцены.
2. Современный (с нейросетями):
- Используются обученные модели (например, PSMNet, GANet, RAFT-Stereo)
- Стереопара подаётся на вход нейросети
- На выходе — готовая disparity map
Нейросети показывают отличные результаты даже в сложных условиях: на гладких или повторяющихся поверхностях, при слабом освещении.
Почему это лучше, чем лидар?
Лидары тоже строят карту глубины. Но у них есть недостатки:
- Дорого
- Занимают место
- Чувствительны к погоде
- Часто дают «разреженные» точки
Стереозрение на базе disparity:
- Работает с обычными камерами
- Дешевле и компактнее
- Даёт плотную карту — для каждого пикселя
- Устойчиво к внешним условиям
Поэтому disparity map — особенно ценное решение для массовых, недорогих и мобильных систем.
Заключение.
Disparity map — это способ научить компьютер «видеть» глубину.
Она даёт понимание пространства, помогает принимать решения и взаимодействовать с реальным миром.
Без неё невозможно построить надёжный автопилот, сделать автономного робота, внедрить дополненную реальность или создать дешёвую систему мониторинга.
Disparity map — это один из тех невидимых инструментов, которые лежат в основе современного машинного зрения.
И если у компьютеров когда-нибудь появится «зрение», очень вероятно, что начнётся оно именно с неё.
--
Если вы хотите узнать как автоматизировать процессы, снизить брак с помощью компьютерного машинного зрения, напишите мне в телеграм: https://t.me/dvdiamanto