Стереозрение: оценка глубины

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

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. И особенно я хотел бы использовать для расчета матрицу камеры (внутренние параметры), но я не понял, как это сделать. Буду благодарен за любой намек.


person PrincAm    schedule 13.11.2013    source источник


Ответы (1)


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

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

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

Где

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

ИЗМЕНИТЬ

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

z = b*F / d
mm = mm * pixel / pixel
person Vuwox    schedule 13.11.2013
comment
Подробную информацию об этой формуле можно найти здесь - person Vuwox; 13.11.2013
comment
Будьте осторожны с брекетингом; вы имеете в виду z = b*F/d*s или z = b*F / (d*s)? - person Rody Oldenhuis; 13.11.2013
comment
Спасибо @Alexandre, эта часть решена, но, к сожалению, результаты не лучше. Поскольку я уверен в базовой линии, фокусном расстоянии и размере пикселя, оценка несоответствия, вероятно, не так точна. А знаете ли вы, пожалуйста, как включить в этот расчет матрицу камеры? - person PrincAm; 13.11.2013
comment
@PrincAm Я думаю, что вы ищете следующее: Гомография, эта статья немного объясняет, но попробуйте поискать гомографию для получения дополнительной информации. И, возможно, ваша карта несоответствия не очень хороша. Хорошо ли выглядит? - person Vuwox; 13.11.2013
comment
@Alexandre Пожалуйста, не могли бы вы мне помочь с преобразованием размера сенсора? Я нашел в спецификациях камеры параметры датчика изображения: 2/3 (типа IT CCD с прогрессивной разверткой), размер ячейки (H x V): 3,45 x 3,45 мкм - я предполагаю, что это размер пикселя. А разрешение картинки - 2448 х 2048 пикселей. - person PrincAm; 14.11.2013
comment
@PrincAm Ты прав. Размер ячейки означает размер пикселя в мкм. Итак, у вас есть ячейка 0,00345 мм / пиксель. - person Vuwox; 14.11.2013
comment
@Alexandre У меня есть два исправленных изображения. Я могу определить одну и ту же точку на них обоих. На левом изображении точка имеет координаты LX: 1472, LY: 742, на правом изображении RX: 1589, RY: 742. Я получу Disparity = RX - LX = 1589 - 1472 = 114 пикселей. Базовая линия - 50 мм, фокусное расстояние - 12,5 мм (указано на линзе камеры), размер пикселя - 0,00345 мм / пиксель. Z = (базовая линия * фокусное расстояние) / (несоответствие * размер пикселя) = (50 * 12,5) / (114 * 0,00345) = 1589 мм. Но знаю, что расстояние 800 мм. Я делаю что-то неправильно? - person PrincAm; 15.11.2013
comment
Ничего такого. Теория - это всегда хорошо. Но никогда не давай того, что действительно хотим. Можете ли вы найти фокус в пикселях? Использовать Z = fB / d? - person Vuwox; 15.11.2013
comment
@Alexandre Большое спасибо за вашу помощь. В конце я использовал другой сценарий, более точный. Я откалибровал пары камер с помощью Camera Calibration Toolbox для Matlab от Caltech. Внутри этой панели инструментов есть функции для исправления изображений и стереотриангуляции. Расчет основан на внутренних и внешних параметрах, экспортированных из Toolbox, тогда результаты имеют более высокую точность. - person PrincAm; 19.11.2013
comment
Да, фокус в пикселях :) Мне нравится этот набор инструментов. Я часто использую его в своей работе. - person Vuwox; 19.11.2013