Карта глубины — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Мотивация)
Строка 6: Строка 6:
  
 
Карта глубины изображения содержит в себе информацию о расстоянии между различными объектами или частями объектов представленных на данном изображении. Эта информация может быть полезна для создания 3D-сенсоров. Такие сенсоры, способные строить трёхмерную картину своего окружения, могут помочь для [[Оценка положения|ориентации]] автономного робота в пространстве, или для систем использующих технологии дополненной и виртуальной реальности. Например камеры, которые фиксируют действия пользователя, при игре в видеоигру, использующую технологию виртуальной реальности. Нельзя не отметить беспилотные автомобили, которые так же используют карты глубин, для ориентации на дороге.
 
Карта глубины изображения содержит в себе информацию о расстоянии между различными объектами или частями объектов представленных на данном изображении. Эта информация может быть полезна для создания 3D-сенсоров. Такие сенсоры, способные строить трёхмерную картину своего окружения, могут помочь для [[Оценка положения|ориентации]] автономного робота в пространстве, или для систем использующих технологии дополненной и виртуальной реальности. Например камеры, которые фиксируют действия пользователя, при игре в видеоигру, использующую технологию виртуальной реальности. Нельзя не отметить беспилотные автомобили, которые так же используют карты глубин, для ориентации на дороге.
 +
 +
== Методы построения карты глубины ==
 +
 +
Карта глубины может быть получена с помощью '''специальной камеры глубины''', а так же может быть построена по '''стереопаре изображений''', а так же с помощью [[Нейронные сети, перцептрон|'''нейронных сетей''']].
 +
 +
== Использование нейронных сетей ==
 +
 +
Существует множество решений данной проблемы, использующих нейроные сети, приведём пару примеров таких решений.
 +
 +
=== Построение с помощью капсульных нейронных сетей ===
 +
 +
== Построение с помощью специальных камер глубин ==
 +
 +
[[Файл:ToF.jpg|thumb|250px| рис. 1. Пример работы ToF-камеры.]]
 +
 +
* '''ToF-камеры''' (Time of Flight). Следующий способ получения глубины интереснее. Он основан на измерении задержки света.Фактически нам нужно измерить задержку, с которой свет возвращается в каждую точку. Либо, если у нас несколько сенсоров с разным временем накопления заряда, то, зная сдвиг по времени относительно источника для каждого сенсора и снятой яркости вспышки, мы можем рассчитать сдвиг и, соответственно, расстояние до объекта, причем увеличивая количество сенсоров — увеличиваем точность.
 +
 +
* '''Структурированные световые камеры''' (aнгл. Structured light camera). Данный способ один из самых старых и дешёвых способов, построить карту глубин. Основная идея крайне проста. Ставим рядом проектор, который создает, например, горизонтальные (а потом вертикальные) полоски и рядом камеру, которая снимает картину с полосками. В некоторых вариантах используются псевдослучайный набор точек (MS Kinect). Проекторы обычно работают в инфракрасном спектре, очевидно, чтобы не мешать пользователям. Поскольку камера и проектор смещены друг относительно друга, то и полоски также будут смещаться пропорционально расстоянию до объекта. Измеряя это смещение мы можем рассчитывать расстояние до объекта. Вполне понятны проблемы с которыми можно столкнутся при использовании этого метода: это необходимость настройки и калибровки проектора, и проблема того, что нам нужно относительно благоприятное освещение. К примеру солнце может засветить полосы, и что-то распознать будет тяжело.
 +
 +
== Построения карты глубины по стереопаре ==
 +
 +
Идея, лежащая в основе построения карты глубины по '''стереопаре''' очень проста. Для каждой точки на одном изображении выполняется поиск парной ей точки на другом изображении. А по паре соответствующих точек можно выполнить [[Триангуляция полигонов (ушная + монотонная)|триангуляцию]] и определить координаты их [[Отображения|прообраза]] в трехмерном пространстве. Зная трехмерные координаты прообраза, глубина вычисляется, как расстояние до плоскости камеры.
 +
 +
Парную точку нужно искать на эпиполярной<ref name="Epipolar">Информация о эпиполярной геометрии[https://ru.qaz.wiki/wiki/Epipolar_geometry]</ref> линии. Соответственно, для упрощения поиска, изображения выравнивают так, что бы все эпиполярные линии были параллельны сторонам изображения (обычно горизонтальны). Более того, изображения выравнивают так, что бы для точки с координатами <math>(x_0, y_0)</math> соответствующая ей эпиполярная линия задавалась уравнением <math>x = x_0</math>, тогда для каждой точки соответствующую ей парную точку нужно искать в той-же строчке на изображении со второй камеры. Такой процесс выравнивания изображений называют '''ректификацией''' (rectification).
 +
 +
[[Файл:Stereo.png|thumb|300px| рис. 2. Результат построения карты смещений по 2 картинкам.]]
 +
 +
После того как изображения '''ректифицированы''', выполняют поиск соответствующих пар точек. Для каждого пикселя одной картинки с координатами <math>(x_0, y_0)</math> выполняется поиск пикселя на другой картинке. При этом предполагается, что пиксель на второй картинке должен иметь координаты <math>(x_0 — d, y_0)</math>, где d — величина называемая смещением. Поиск соответствующего пикселя выполняется путем вычисления максимума функции отклика, в качестве которой может выступать, например, [[Корреляция случайных величин|корреляция]] окрестностей пикселей. В результате получается карта смещений, пример которой приведен на рис. 2.
 +
 +
Собственно значения глубины обратно пропорциональны величине смещения пикселей.
 +
 +
  
 
== См. также ==
 
== См. также ==
Строка 22: Строка 54:
  
 
* Р.А. Чугунов, А.Д. Кульневич, С.В. Аксенов "Методика построения карт глубины стереоизображения с помощью капсульной нейронной сети" [file:///tmp/mozilla_frak0/metodika-postroeniya-kart-glubiny-stereoizobrazheniya-s-pomoschyu-kapsulnoy-neyronnoy-seti.pdf]
 
* Р.А. Чугунов, А.Д. Кульневич, С.В. Аксенов "Методика построения карт глубины стереоизображения с помощью капсульной нейронной сети" [file:///tmp/mozilla_frak0/metodika-postroeniya-kart-glubiny-stereoizobrazheniya-s-pomoschyu-kapsulnoy-neyronnoy-seti.pdf]
 +
 +
* Dmitriy Vatolin "Камеры глубины — тихая революция" [https://habr.com/ru/post/457524/]

Версия 23:18, 12 января 2021

Карта глубины (англ. depth map) — это изображение, на котором для каждого пикселя, вместо цвета, храниться его расстояние до камеры.[1]

В компьютерной 3D-графике и компьютерном зрении карта глубины представляет собой изображение или канал изображения, содержащий информацию о расстоянии поверхностей объектов сцены от точки обзора.

Мотивация

Карта глубины изображения содержит в себе информацию о расстоянии между различными объектами или частями объектов представленных на данном изображении. Эта информация может быть полезна для создания 3D-сенсоров. Такие сенсоры, способные строить трёхмерную картину своего окружения, могут помочь для ориентации автономного робота в пространстве, или для систем использующих технологии дополненной и виртуальной реальности. Например камеры, которые фиксируют действия пользователя, при игре в видеоигру, использующую технологию виртуальной реальности. Нельзя не отметить беспилотные автомобили, которые так же используют карты глубин, для ориентации на дороге.

Методы построения карты глубины

Карта глубины может быть получена с помощью специальной камеры глубины, а так же может быть построена по стереопаре изображений, а так же с помощью нейронных сетей.

Использование нейронных сетей

Существует множество решений данной проблемы, использующих нейроные сети, приведём пару примеров таких решений.

Построение с помощью капсульных нейронных сетей

Построение с помощью специальных камер глубин

рис. 1. Пример работы ToF-камеры.
  • ToF-камеры (Time of Flight). Следующий способ получения глубины интереснее. Он основан на измерении задержки света.Фактически нам нужно измерить задержку, с которой свет возвращается в каждую точку. Либо, если у нас несколько сенсоров с разным временем накопления заряда, то, зная сдвиг по времени относительно источника для каждого сенсора и снятой яркости вспышки, мы можем рассчитать сдвиг и, соответственно, расстояние до объекта, причем увеличивая количество сенсоров — увеличиваем точность.
  • Структурированные световые камеры (aнгл. Structured light camera). Данный способ один из самых старых и дешёвых способов, построить карту глубин. Основная идея крайне проста. Ставим рядом проектор, который создает, например, горизонтальные (а потом вертикальные) полоски и рядом камеру, которая снимает картину с полосками. В некоторых вариантах используются псевдослучайный набор точек (MS Kinect). Проекторы обычно работают в инфракрасном спектре, очевидно, чтобы не мешать пользователям. Поскольку камера и проектор смещены друг относительно друга, то и полоски также будут смещаться пропорционально расстоянию до объекта. Измеряя это смещение мы можем рассчитывать расстояние до объекта. Вполне понятны проблемы с которыми можно столкнутся при использовании этого метода: это необходимость настройки и калибровки проектора, и проблема того, что нам нужно относительно благоприятное освещение. К примеру солнце может засветить полосы, и что-то распознать будет тяжело.

Построения карты глубины по стереопаре

Идея, лежащая в основе построения карты глубины по стереопаре очень проста. Для каждой точки на одном изображении выполняется поиск парной ей точки на другом изображении. А по паре соответствующих точек можно выполнить триангуляцию и определить координаты их прообраза в трехмерном пространстве. Зная трехмерные координаты прообраза, глубина вычисляется, как расстояние до плоскости камеры.

Парную точку нужно искать на эпиполярной[2] линии. Соответственно, для упрощения поиска, изображения выравнивают так, что бы все эпиполярные линии были параллельны сторонам изображения (обычно горизонтальны). Более того, изображения выравнивают так, что бы для точки с координатами [math](x_0, y_0)[/math] соответствующая ей эпиполярная линия задавалась уравнением [math]x = x_0[/math], тогда для каждой точки соответствующую ей парную точку нужно искать в той-же строчке на изображении со второй камеры. Такой процесс выравнивания изображений называют ректификацией (rectification).

рис. 2. Результат построения карты смещений по 2 картинкам.

После того как изображения ректифицированы, выполняют поиск соответствующих пар точек. Для каждого пикселя одной картинки с координатами [math](x_0, y_0)[/math] выполняется поиск пикселя на другой картинке. При этом предполагается, что пиксель на второй картинке должен иметь координаты [math](x_0 — d, y_0)[/math], где d — величина называемая смещением. Поиск соответствующего пикселя выполняется путем вычисления максимума функции отклика, в качестве которой может выступать, например, корреляция окрестностей пикселей. В результате получается карта смещений, пример которой приведен на рис. 2.

Собственно значения глубины обратно пропорциональны величине смещения пикселей.


См. также

Примечания

  1. Alexey Kurakin "Основы стереозрения"[1]
  2. Информация о эпиполярной геометрии[2]

Источники информации

  • Р.А. Чугунов, А.Д. Кульневич, С.В. Аксенов "Методика построения карт глубины стереоизображения с помощью капсульной нейронной сети" [file:///tmp/mozilla_frak0/metodika-postroeniya-kart-glubiny-stereoizobrazheniya-s-pomoschyu-kapsulnoy-neyronnoy-seti.pdf]
  • Dmitriy Vatolin "Камеры глубины — тихая революция" [3]