Як обчислити відстань предмета на фотографії?


36

Якби я сфотографував вітряний млин на горизонті - враховуючи, що я знаю розмір датчика та фокусну відстань лінзи та інші фактори, що стосуються знімка - я міг би порахувати, наскільки далеко об’єкт від фотографа?


Так, ви, напевно, можете з трохи складною математикою, але це поза моїм. Якщо він на горизонті, ви можете обійти все це і просто помножити висоту очей (в футах, включаючи висоту будь-якої землі або будівлі, на якій ви перебуваєте) на 1,5, то знайдіть квадратний корінь цього, який дає вам ( приблизна) відстань до горизонту в милях
ElendilTheTall

2
Мій Canon 100mm f / 2.8 IS USM (і, мабуть, деякі інші лінзи) записує предметну відстань у EXIF-дані, можливо, варто вивчити, чи ваше обладнання це робить перед тим, як вводити будь-яку складну математику!
ChrisFletcher

2
@Chris Фокусна відстань, ймовірно, просто скаже "нескінченність", що не все так корисно!
Метт Грум

1
@Chris камера "знає" відстань від системи автофокусування, і, як ви пропонуєте, вона стає дуже неточною на великих відстанях (але все-таки досить точною, щоб зображення було у фокусі!). Крім того, що EXIF ​​визначає відстань до сантиметра, це не означає, що цифра точно до сантиметра!
Метт Грум

1
Метт: Наскільки мені відомо, що інформація надсилається назад з об'єктива (який знає відстань фокусування, приблизно) для E-TTL2. Однак він працює лише з об'єктивами Canon із USM. Кріс: Число у сантиметрах нічого не говорить про його точність.
Joey

Відповіді:


35

Єдиний інший фактор, який вам потрібен, - це висота об'єкта в реальному житті (інакше ви можете сфотографувати модель, яка набагато ближче до камери).

Математика насправді не така складна, співвідношення розміру об'єкта на датчику та розміру об'єкта в реальному житті таке ж, як відношення між фокусною відстанню та відстані до об'єкта.

Щоб опрацювати розмір об'єкта на датчику, опрацюйте його висоту в пікселях, розділіть на висоту зображення в пікселях і помножте на фізичну висоту датчика.

Отже вся сума:

Відстань до рівняння об'єкта

Давайте перевіримо це рівняння.

Якщо ми будемо тримати все інше постійним і збільшувати фокусну відстань, то відстань збільшується (як фокусна відстань на чисельнику). Це те, що ви могли б очікувати, якщо вам доведеться масштабувати об'єктив, щоб зробити один об'єкт розміром іншого, який раніше був однакового розміру, перший об'єкт повинен бути далі.

Якщо ми будемо тримати все інше постійним і збільшувати реальну висоту об'єкта, то знову відстань збільшується так, ніби два об'єкти різної реальної висоти з'являються однакової висоти на зображенні, тим вище повинен бути далі.

Якщо ми залишаємо все інше постійним і збільшуємо висоту зображення, то відстань збільшується, ніби два об'єкти (однакового розміру, пам’ятайте, що ми тримаємо все інше постійним) з’являються однакового розміру пікселя в обрізаному та не розрізаному зображенні, а потім в об’єкті в нерозрізаному зображенні треба бути подалі.

Якщо ми будемо тримати все інше постійним і збільшувати висоту об'єкта в пікселях, то відстань зменшується (ми зараз на знаменнику): два об’єкти однакового розміру, один займає більше пікселів, він повинен бути ближче.

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


1
Так, інакше кажучи, "ні, не не знаючи розміру предмета в реальному житті". Інакше у вас є два невідомих чинника. Вітряк може бути моделлю, яка ближче, ніж ви думаєте.
mattdm

1
@mattdm саме, збирався зробити це зрозумілим у відповіді. Ви також можете сфотографувати фотографію вітряка тощо
Метт Грум

@ matt-grum Моя думка полягає в тому, що нам потрібне одне з наступного: 1) або реальний розмір об'єкта; 2) або два або більше зображень.
зустріч

@jetxee Так, я зрозумів, що з вашого коментаря було не зрозуміло, оскільки я вказав, що розмір об'єкта є одним із знань у моїй відповіді
Matt Grum

Чи можете ви довести цей закон, з паралакс трикутників, зображення (пікселів) / sens_height не входить у рівняння, і на що ви посилаєтесь за висотою датчика ?!
Помилка

16

Як зазначається @ matt-grum, найпростіша формула для оцінки відстані до об'єкта - це формула проекції набої :

x / f = X / d

де x - розмір об'єкта на датчику, f - фокусна відстань лінзи, X - розмір об'єкта, а d - відстань від вузлової точки до об'єкта. x і f , і X і d вимірюються в одних і тих же одиницях, наприклад, мм і m відповідно (для обчислення x вам потрібно буде оцінити розмір пікселя для вашого датчика; наприклад, для Pentax K20D це 23,4 мм / 4672 px ≈ 5,008e-3 мм / px, тобто зображення довжиною 100 px відповідає 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 Я пробую вашу формулу, але я не зміг змусити її працювати. Я зробив тут сторінку photo.stackexchange.com/questions/80195/…
omega

2

Я знаю, що це стара нитка, але це питання, здається, виникає час від часу. FWIW, я додав калькулятор для обчислення відстані об'єкта в зображенні.

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

Вам потрібно буде знати свої значення, щоб він працював, одне з яких - приблизна реальна висота об'єкта. Обговорювали там.


1

Замість того, щоб намагатися використовувати формули, якщо ви досліджуєте морські методи оцінки відстаней, які передбачають деякі основні "правила великого пальця", наприклад, якщо ви стоїте на 1 фут над висотою води, ви знаходитесь на 3 морських милях від горизонту, якщо підняти великий палець на Довжина руки в них: об'єкт, на який ви дивитесь, прикритий, це висота 100 футів (я думаю) я забув більшість із них, оскільки я більше не користуюся ними, але вони працюють, і колись навчились та використовували регулярно, надзвичайно точні.


так цікаво! люблю подібні речі - сподіваюся, це не забуто з часом
Роб

0

Проста відповідь - ні. У вас є дві змінні та лише одне рівняння.


1
Дуже низька якість порівняно з прийнятою відповіддю ...
Олів'є

Але дуже просто і (правильно) до речі.
Майкл С

Ви можете припустити, що це неявно у запитанні, і відповідь вимагає з'ясувати додаткове рівняння
Помилка
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.