Понимание карты несоответствия в Opencv

Может кто-нибудь объяснить мне, что именно возвращает карта несоответствия. Потому что в документации не так много дано, и у меня есть несколько вопросов, связанных с этим.

  1. Возвращает ли он значения разницы в пикселях по отношению к обоим изображениям?
  2. Как использовать значения диспаратности в формуле для оценки глубины, т.е.

    Depth = focalLength*Baseline/Disparity

  3. Я где-то читал, что карта несоответствия дает функцию глубины f (z)

Объясните, пожалуйста, что это значит. Если глубина является чисто абсолютной величиной, как она может быть сгенерирована как функция или это функция по отношению к пикселям?


person kushal    schedule 29.05.2014    source источник


Ответы (1)


Разница d = pl - pr двух соответствующих точек изображения называется несоответствием.

Здесь pl - это положение точки в левом стереоизображении, а pr - это положение точки в правом стереоизображении.

Для параллельных оптических осей несоответствие составляет d = xl - xr.

⇒ поиск информации о глубине эквивалентен поиску диспаратности, т.е. расстояние до соответствующего пикселя обратно пропорционально диспаратности

Значения диспаратности визуализируются в так называемой карте диспаратности, каждое значение диспаратности для каждого пикселя в опорном изображении (здесь: слева) кодируется как значение оттенков серого. Также для пикселя, не имеющего соответствий, определяется значение шкалы серого (здесь: черный). Так называемая наземная карта истинности - это карта несоответствия, которая содержит идеальное решение проблемы соответствия.

изображение

Связь между информацией о несоответствии и глубине:

Следующее изображение представляет две камеры (левую и правую), а затем пытается найти глубину точки p (x_w, z_x).

image2

Результат глубины дан моим:

image3

Итак, можно видеть, что глубина обратно пропорциональна диспропорции.

ОБНОВЛЕНИЕ:

Для расчета несоответствия вам понадобятся два изображения (1) левое изображение и (2) правое изображение. Допустим, есть пиксель в position (60,30) на левом изображении и тот же пиксель присутствует в position (40,30) на правом изображении, тогда ваше несоответствие будет: 60 - 40 = 20. Итак, карта несоответствия показывает разницу между положением пикселей между левым и правым изображениями. Если пиксель присутствует на левом изображении, но отсутствует на правом изображении, тогда значение в этой позиции на карте диспаратности будет равно нулю. Как только вы получите значение диспаратности для каждого пикселя левого изображения, мы сможем легко вычислить глубину, используя формулу, приведенную в конце моего ответа.

person skm    schedule 29.05.2014
comment
Итак, вы хотите сказать, что для каждой координаты пикселя x и y существует соответствующее несоответствие в карте несоответствия, и, используя это конкретное значение в приведенной выше формуле, я получу глубину этой точки.? @skm - person kushal; 29.05.2014