2013-11-13 6 views
3

Я работаю над задачей стереофонического зрения, и я хотел бы получить расстояние между камерами стерео зрения и объектом. Я использую Matlab с Computer Vision System Toolbox.
У меня есть откалиброванные камеры с использованием «Camera Calibration Toolbox для Matlab», поэтому у меня есть внутренние параметры левой и правой камеры и внешние параметры (положение правой камеры по левой стороне камеры). У меня также есть пара исправленных изображений и их карта несоответствия. Для оценки несоответствия я использовал несоответствие функции Matlab(). Я знаю базовый уровень и фокусное расстояние камер, но мои результаты все еще не так.Стерео-зрение: оценка глубины

baseline = 70 mm 
focal length = 25 mm 
disparity = 60 pixels 
--------------------- 
depth = baseline * focal length/disparity = 70 * 25/60 = 29 mm 

Но я знаю, что расстояние около 600 мм. Правильно ли эта формула? Как насчет единиц? mm * mm/pixel != mm. И особенно я хотел бы использовать матрицу Camera (Intrinsic parameters) для расчета, но я не понял, как это сделать. Я был бы благодарен за любой намек.

ответ

4

Как вы сказали, вам необходимо преобразовать устройство в мм. А для этого нужно это формул

z = (b*F)/(d*s) 

mm = (mm * mm)/(pixel * (mm/pixel)) 

Где

  • г = глубина в мм
  • б = базовый в мм
  • F = фокусное расстояние в мм
  • Г = глубина в пиксель
  • s = размер датчика в мм/пиксель. (Обычно он обеспечивает в um, так что конвертация ранее).

EDIT

Иногда ваш фокусного находится в пикселе, так что вам не нужно использовать размер датчика. Так просто использовать формулу:

z = b*F/d 
mm = mm * pixel/pixel 
+0

Вы можете иметь деталь этой формулы [здесь] (http://stackoverflow.com/questions/19421003/how-field-of-view-changes-depth-estimation-in -stereo-vision) – Vuwox

+0

Осторожно с вашим брекетингом; вы имеете в виду 'z = b * F/d * s' или' z = b * F/(d * s) '? –

+0

Вы правы, и лучше всего 'z = (b * F)/(d * s)' – Vuwox