Как рассчитать расстояние до объекта на фотографии?

36

Если бы я сделал снимок ветряной мельницы на горизонте - учитывая, что я знаю размер сенсора, фокусное расстояние объектива и другие факторы, связанные с кадром - могу ли я рассчитать, как далеко находится объект от фотографа?

обкрадывать
источник
Да, вы, вероятно, можете с немного сложной математикой, но это вне меня. Если он на горизонте, вы можете обойти все это и просто умножить высоту ваших глаз (в футах, включая высоту любой земли или здания, на котором вы находитесь) на 1,5, а затем найти квадратный корень из этого, что дает вам ( приблизительно) расстояние до горизонта в милях
ElendilTheTall
2
Мой Canon 100mm f / 2.8 IS USM (и, вероятно, некоторые другие объективы) записывают расстояние до объекта в данных EXIF, возможно, стоит изучить, делает ли это ваше оборудование, прежде чем приступить к каким-либо сложным задачам!
ChrisFletcher
2
@Chris Расстояние фокусировки, вероятно, просто скажет «бесконечность», что не так уж и полезно!
Мэтт Грум
1
@ Крис камера «знает» расстояние от системы автофокусировки, и, как вы предполагаете, она становится очень неточной на больших расстояниях (но все же достаточно точной, чтобы изображение было в фокусе!). Также то, что EXIF ​​указывает расстояние до сантиметра, не означает, что цифра точна до сантиметра!
Мэтт Грум
1
Мэтт: Насколько я знаю, информация отправляется обратно с объектива (который приблизительно знает расстояние фокусировки) для E-TTL2. Впрочем, он работает только с объективами Canon с USM. Крис: Число в сантиметрах ничего не говорит о его точности.
Джои

Ответы:

35

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

Математика на самом деле не так сложна, соотношение размера объекта на датчике и размера объекта в реальной жизни такое же, как соотношение между фокусным расстоянием и расстоянием до объекта.

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

Итак, вся сумма:

Уравнение расстояния до объекта

Давайте рассмотрим это уравнение.

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

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

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

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

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

Мэтт Грум
источник
1
Итак, другими словами, «нет, не зная размера объекта в реальной жизни». В противном случае у вас есть два неизвестных фактора. Ветряная мельница может быть моделью, которая ближе, чем вы думаете.
Mattdm
1
@mattdm точно, собирался прояснить это в ответе. Вы также можете фотографировать ветряную мельницу и т. Д.
Мэтт Грум,
@ matt-grum Я хочу сказать, что нам нужно одно из следующих: 1) либо реальный размер объекта; 2) или два или более изображения.
Састанин
@jetxee, да, теперь я понял, что из вашего комментария было неясно, так как в своем ответе я указал размер объекта, чтобы быть одним из известных
Мэтт Грум
Можете ли вы доказать этот закон, исходя из параллакса треугольников, изображение (пиксели) / sensor_height не вписывается в уравнение, и на что вы ссылаетесь по высоте датчика ?!
Ошибка
16

Как отметил @ matt-grum, самая простая формула для оценки расстояния до объекта - это формула проекции крошечного отверстия :

х / ж = х / д

где x - размер объекта на датчике, f - фокусное расстояние объектива, X - размер объекта, а d - расстояние от узловой точки до объекта. x и f , а X и d измеряются в тех же единицах, например, мм и м соответственно (для вычисления x вам потребуется оценить размер пикселя для вашего датчика; например, для Pentax K20D это 23,4 мм / 4672 px ≈ 5,008e-3 мм / пикс., Т. Е. Изображение длиной 100 пикселей соответствует x = 50,08e-3 мм).

Далее я предполагаю, что размер объекта ( X ) неизвестен, и единственными известными параметрами являются x (размер изображения) и f (фокусное расстояние).

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

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

Более простой подход - сделать две фотографии, которые находятся на одной линии с объектом, с объектом в центре изображения. Пусть расстояние до объекта на первой фотографии будет d₁ , а размер изображения будет x₁ :

x_1 / f = X / d_1

Тогда , если мы перемещаем камеры сек метров непосредственно к объекту, а затем на втором фото мы имеем размер x₂ немного больше , чем x₁ :

( примечание : знаменатель в следующем выражении неверен, вместо «d1» он должен быть «d2» или эквивалентно «d1-s»)

x_2 / f = X / (d_1 - s)

Что дает нам

d_1 = s x_2 / (x_2 - x_1)

Очевидно, что если s не достаточно, чтобы существенно повлиять на размер изображения, вы не можете надежно оценить расстояние, и вам нужно использовать более сложные методы. Чем больше разница x₂ - x₁ , тем лучше.

sastanin
источник
ааа, я понял, что вы имели в виду под своим комментарием, я предполагал, что размер объекта известен, в противном случае он становится намного сложнее, так как вам нужны не только две камеры, но и камеры должны быть откалиброваны
Мэтт Грум
@sastanin Я пробую твою формулу, но не смогла заставить ее работать. Я сделал страницу здесь photo.stackexchange.com/questions/80195/…
омега
2

Я знаю, что это старая тема, но этот вопрос, кажется, возникает время от времени. Я добавил калькулятор для вычисления расстояния до объекта на изображении.

http://www.scantips.com/lights/subjectdistance.html

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

WayneF
источник
1

Вместо того, чтобы пытаться использовать формулы, если вы исследуете морские методы оценки расстояний, которые включают в себя некоторые основные «эмпирические правила», например, если вы стоите на высоте 1 фут над водой, вы находитесь в 3 морских милях от горизонта, если вы держите большой палец на Руки вытянуты, объект, на который вы смотрите, покрыт, он имеет высоту 100 футов (я думаю). Большинство из них я забыл, так как я их больше не использую, но они работают, и как только выучены и используются регулярно, они замечательно точны.

adwb
источник
так интересно ! люблю такие вещи, как это - надеюсь, что они не забыты со временем
Роб
0

Простой ответ - нет. У вас есть две переменные и только одно уравнение.

Брайан
источник
1
Очень низкое качество по сравнению с принятым ответом ...
Оливье
Но очень просто и (правильно) по существу.
Майкл С
Вы можете предположить, что это подразумевается в вопросе, и ответ требует определения дополнительного уравнения
Ошибка