Найти в Дзене

Как компьютер «видит» глубину: что такое disparity map

Когда вы смотрите на чашку перед собой, вы точно знаете: она ближе, чем окно за ней. Для мозга это простая задача. Для компьютера — вовсе нет. Компьютер видит мир не как человек, а как последовательность пикселей. Чтобы понять, где ближе, а где дальше, ему нужно научиться «видеть» глубину. Один из самых надёжных способов — построить карту смещений между двумя изображениями, полученную с разных точек. Это и есть disparity map. Простыми словами — это изображение, где каждый пиксель показывает, как сильно сместился объект между двумя кадрами. И чем больше смещение, тем ближе объект. Разберёмся подробнее, как это работает и зачем это вообще нужно. У человека два глаза, расположенные немного поодаль друг от друга. Это создаёт эффект бинокулярного параллакса: каждый глаз видит предметы под немного другим углом. Если закрыть один глаз, а потом другой, предмет «скачет». Чем он ближе — тем сильнее смещается. Чем дальше — тем меньше. Это смещение и даёт нам ощущение глубины. Мы замечаем, что од
Оглавление

Когда вы смотрите на чашку перед собой, вы точно знаете: она ближе, чем окно за ней. Для мозга это простая задача. Для компьютера — вовсе нет.

Компьютер видит мир не как человек, а как последовательность пикселей. Чтобы понять, где ближе, а где дальше, ему нужно научиться «видеть» глубину.

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

disparity map - объясняю что и как работает.
disparity map - объясняю что и как работает.

Разберёмся подробнее, как это работает и зачем это вообще нужно.

Почему нам доступна глубина

У человека два глаза, расположенные немного поодаль друг от друга.

Это создаёт эффект бинокулярного параллакса: каждый глаз видит предметы под немного другим углом.

Если закрыть один глаз, а потом другой, предмет «скачет». Чем он ближе — тем сильнее смещается. Чем дальше — тем меньше. Это смещение и даёт нам ощущение глубины. Мы замечаем, что одна машина ближе другой, что дерево перед домом, а человек стоит за забором.

Компьютер может повторить этот эффект.

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

Disparity — это что?

Disparity (от англ. «расхождение») — это разность положения объекта на левом и правом изображении.

Например, если кружка сместилась между двумя кадрами на 12 пикселей, то её disparity равна 12.

И чем ближе объект, тем больше disparity. Чем дальше — тем меньше. Это фундаментальный принцип.

Но одно число мало что даёт. Чтобы получить полноценное представление о сцене, disparity считается для каждого пикселя.

Так получается целая карта смещений — disparity map.

Как выглядит disparity map

Disparity map — это изображение, где цвет или яркость каждого пикселя отражает, насколько он «сместился» между двумя кадрами. Проще говоря: насколько близко он находится к камере.

Обычно такие карты чёрно-белые или псевдоцветные:

  • Белые и светлые участки — объекты близко.
  • Тёмные — объекты далеко.
  • В цветных картах разные оттенки кодируют разные расстояния.

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

-2

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