Недавно получил интересное письмо. Ответить, к сожалению, не удалось – что-то с почтовым сервером у адресата.
Суть вопроса была следующей: Как с помощью двух камер определить расстояние до объекта.
Если пренебречь нелинейностью объективов и положить, что расстояние до объекта много больше расстоянию между объективами, то задача решается весьма просто.
Проделав несложные геометрические построения (объект, 2 объектива, 2 матрицы за объективами) можно убедиться, что расстояние до объекта обратно пропорционально смещению этого объекта на левом снимке относительно правого. Смещение модно замерять в пикселях, а коэффициент обратной пропорциональности найти калибровкой – измерением расстояния до заранее известного объекта.
Несколько сложнее представляется подзадача – распознавание одного и того же объекта на разных (левом и правом) снимках. Например, разработчики ПО для создания панорам Hugin эту задачу успешно решили. Они использовали в качестве инструмента богатые возможности Octave, Open-source аналога системы Matlab.
Таким образом, для среднего программиста не представляет труда сделать прототип цифрового стерео-фотоаппарата. Достаточно 2 USB-камеры, небольшой нетбук, с-ма крепления камер к крышке нетбука и конечно же ПО для фотографирования/обработки изображений. В формате 3D-картинки можно, например, использовать матрицу расстояний до каждого пиксела (группы пикселей), которая получается вышеописанным методом.