Можно ли по двум снимкам, сделанным на расстоянии нескольких сантиметров друг от друга, рассчитать расстояние до объекта?

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

Это зависит от других объектов на фотографиях. Например, невозможно рассчитать расстояние, если фон чисто белый (синий, зеленый и т. д.).

Ответы (4)

Можно ли рассчитать расстояние от объекта до камеры по двум снимкам, сделанным на расстоянии нескольких сантиметров друг от друга?

Это зависит. Вам нужно знать что- то большее, чем просто две фотографии. Примеры полезной информации включают информацию о камере и объективе, такую ​​как размер сенсора и фокусное расстояние, а также точное изменение положения камеры между двумя фотографиями. Как далеко продвинулась камера? Сохраняла ли она точно такую ​​же ориентацию, или камера была немного повернута, чтобы рассматриваемый объект находился в одном и том же положении на обеих фотографиях? Это также помогло бы узнать о других объектах на фотографиях, таких как размер и расстояние от камеры.

Мы можем оценить расстояние глазами. Но можно ли сделать это математически, ничего не зная о высоте объекта?

В человеческом зрении происходит гораздо больше, чем просто сравнение мысленного эквивалента двух фотографий. То, что делает ваш мозг, больше похоже на сравнение двух живых видеопотоков, дополненных огромной базой данных об объектах сцены и прошлом опыте. И даже со всей этой дополнительной информацией (или отчасти из-за нее) нас легко обмануть, когда реальность не соответствует нашим предположениям. Например, в комнате Эймса используется принудительная перспектива , чтобы заставить ваш мозг думать, что человек, идущий вокруг, растет и уменьшается, а не приближается или отдаляется.

Фотография — это двухмерная проекция трехмерной сцены, и при создании этого изображения теряется много информации, включая размер и расстояние. Иными словами, для любого данного изображения существует множество сцен, которые могут его создать.* Рассмотрим фотографию мини-фигурки Lego:

Боба Фетт

Если вы когда-нибудь видели мини-фигурку Lego, вы знаете, что она, вероятно, около 4 см в высоту. Но так ли это на самом деле? Может быть, этот больше похож на 4 фута в высоту. Наличие второй фотографии с немного другого ракурса не дает вам никакой дополнительной информации об истинной высоте этой мини (или макси) фигуры, если только вы не знаете, как далеко сдвинулась камера и т. д. Другими словами, вам нужна некоторая часть данных. что позволяет установить шкалу .

Хорошо, давайте предположим, что я знаю, как далеко перемещается камера и нет вращения. Также есть линейка возле камеры на заданном расстоянии.

Подумайте о том, как все меняется, когда вы смотрите в боковое окно автомобиля, движущегося со скоростью шоссе: объекты на обочине проносятся мимо, в то время как удаленные объекты кажутся движущимися (относительно вас) гораздо медленнее, а объекты очень далеко. вдали (звезды, например) кажется, что они вообще не двигаются. Вы можете использовать тот же принцип. Сейчас у меня нет времени выводить для вас формулу, но я не думаю, что это будет сложно решить с помощью схемы и небольшого количества геометрии. И имейте в виду, что все становится намного сложнее, если вам приходится учитывать искажения, вносимые объективом; например, линза «рыбий глаз» увеличивает центр и сжимает края.

Если вы пишете код для этого, в библиотеке OpenCV есть функции, которые помогут, и она может даже справиться с упомянутым выше искажением объектива. Взгляните на вопрос переполнения стека: расстояние до объекта с помощью стереокамеры .


* Скульптор Сьюард Джонсон извлекает выгоду из этого факта. Если смотреть с правильного места, его скульптуры «Вне кадра» в натуральную величину выглядят как знаменитые картины, но вы можете обойти их и посмотреть на них под другим углом, и они часто содержат забавные детали, которых нет на оригинальных картинах.

Спасибо за отличный ответ! Хорошо, давайте предположим, что я знаю, как далеко перемещается камера и нет вращения. Также есть линейка возле камеры на заданном расстоянии. Кроме того, известны все необходимые характеристики камеры. Есть ли способ сейчас?
@questionanswer Я обновил ответ, добавив немного больше информации.
Вы также можете взглянуть на stackoverflow.com/questions/9026567/… (на самом деле это не связано с фотографией)

Это очень просто, если вы можете выровнять камеры перед выстрелом так, чтобы цель оказалась в одной и той же точке (например, в самом центре). Так работают наши глаза.

Камеры-дальномеры (например, Leicas) делают именно это: вы видите два изображения, сделанных с известным расстоянием (расстояние между двумя объективами дальномера), вы поворачиваете ручку фокусировки, чтобы совместить изображения, а положение ручки означает расстояние. Математика очень проста, она сделана механически .

Вам не нужно ничего знать о цели, все, что вам нужно, это иметь выровненные изображения и знать расстояние и оба угла ваших камер.

Когда у вас есть 2 изображения, которые НЕ нацелены на вашу цель, становится сложнее, но XBOX kinect делает это с 2 стационарными ИК-камерами.

Если вы знаете приблизительный фактический размер чего-либо на одном снимке (и если вы знаете фокусное расстояние и размер сенсора), вы можете оценить расстояние до него с помощью калькулятора на странице http://www.scantips.com/lights/subjectdistance.html .

Это просто геометрия, но на нее проще ссылаться, чем выводить здесь. Я был удивлен, что расстояние представляет интерес, но, похоже, это...

ОП спрашивает о стереоскопическом дальномере. Вы говорите о стадионе.

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