Jak obliczyć odległość obiektu na zdjęciu?

36

Gdybym zrobił zdjęcie wiatraka na horyzoncie - biorąc pod uwagę, że znam rozmiar czujnika i ogniskową obiektywu oraz inne czynniki związane z ujęciem - czy mógłbym obliczyć, jak daleko obiekt znajduje się od fotografa?

Obrabować
źródło
Tak, prawdopodobnie potrafisz z odrobiną skomplikowanej matematyki, ale to mnie przerasta. Jeśli jest na horyzoncie, możesz to wszystko ominąć i pomnożyć wysokość oczu (w stopach, w tym wysokość dowolnego terenu lub budynku) przez 1,5, a następnie znajdź pierwiastek kwadratowy z tego, co daje ( przybliżona) odległość do horyzontu w milach
ElendilTheTall
2
Mój Canon 100 mm f / 2.8 IS USM (i prawdopodobnie niektóre inne obiektywy) rejestrują odległość obiektu w danych EXIF, warto sprawdzić, czy twój sprzęt to zrobi, zanim przystąpisz do skomplikowanych obliczeń!
ChrisFletcher
2
@Chris Odległość ogniskowania prawdopodobnie powie po prostu „nieskończoność”, co wcale nie jest tak przydatne!
Matt Grum
1
@Chris aparat „zna” odległość od systemu AF i, jak sugerujesz, staje się bardzo niedokładny na dużych odległościach (ale wciąż wystarczająco dokładny, aby obraz był ostry!). Również dlatego, że EXIF ​​określa odległość do centymetra, nie oznacza, że ​​liczba jest dokładna do centymetra!
Matt Grum
1
Matt: O ile wiem, informacja jest wysyłana z powrotem z obiektywu (który zna przybliżoną odległość ogniskowania) dla E-TTL2. Działa jednak tylko z obiektywami Canon z USM. Chris: Liczba w centymetrach nie mówi ci nic o jej dokładności.
Joey

Odpowiedzi:

35

Jedynym innym czynnikiem, którego potrzebujesz, jest wysokość obiektu w prawdziwym życiu (w przeciwnym razie możesz fotografować model, który jest znacznie bliżej aparatu).

Matematyka nie jest tak skomplikowana, stosunek wielkości obiektu do czujnika i wielkości obiektu w prawdziwym życiu jest taki sam, jak stosunek ogniskowej i odległości do obiektu.

Aby obliczyć rozmiar obiektu na czujniku, oblicz jego wysokość w pikselach, podziel przez wysokość obrazu w pikselach i pomnóż przez fizyczną wysokość czujnika.

Cała suma to:

Odległość do równania obiektu

Sprawdźmy, czy rozsądek to równanie.

Jeśli utrzymamy wszystko inne na stałym poziomie i zwiększymy ogniskową, wówczas odległość wzrośnie (ponieważ ogniskowa znajduje się na liczniku). Tego byś się spodziewał, jeśli musisz powiększyć obiektyw, aby jeden obiekt był wielkości innego obiektu o podobnej wielkości, to pierwszy obiekt musi znajdować się dalej.

Jeśli utrzymamy wszystko inne na stałym poziomie i zwiększymy rzeczywistą wysokość obiektu, wówczas odległość wzrośnie, tak jakby dwa obiekty o różnych rzeczywistych wysokościach pojawiły się na tej samej wysokości na obrazie, wyższy musi być dalej.

Jeśli utrzymamy wszystko inne na stałym poziomie i zwiększymy wysokość obrazu, wówczas odległość wzrośnie, tak jakby dwa obiekty (tego samego rozmiaru, pamiętajmy, że utrzymujemy wszystko inne na stałym poziomie) pojawią się tego samego rozmiaru pikseli na przyciętym i nie przyciętym obrazie, a następnie obiekt na nie wykadrowanym obrazie musi być dalej.

Jeśli utrzymamy wszystko inne na stałym poziomie i zwiększymy wysokość obiektu w pikselach, wówczas odległość maleje (jesteśmy teraz w mianowniku): dwa obiekty o jednakowej wielkości, jeden zajmuje więcej pikseli, musi być bliżej.

Wreszcie, jeśli utrzymamy wszystko inne na stałym poziomie i zwiększymy rozmiar czujnika, wówczas odległość zmniejsza się: dwa obiekty o jednakowych rozmiarach mają tę samą wysokość w pikselach podczas fotografowania za pomocą aparatu kompaktowego (mały czujnik, gdzie 20 mm to długi obiektyw) i fotografowania za pomocą lustrzanki cyfrowej (duży czujnik gdzie 20 mm to szeroka soczewka), wówczas obiekt na obrazie DSLR musi być dalej (ponieważ miał ten sam rozmiar, ale z szeroką soczewką).

Matt Grum
źródło
1
Innymi słowy: „nie, nie bez znajomości wielkości przedmiotu w prawdziwym życiu”. W przeciwnym razie masz dwa nieznane czynniki. Wiatrak może być modelem bliższym niż myślisz.
mattdm
1
@mattdm właśnie miał właśnie to wyjaśnić w odpowiedzi. Możesz także sfotografować wiatrak itp.
Matt Grum
@ matt-grum Chodzi mi o to, że potrzebujemy jednego z następujących elementów: 1) rzeczywistego rozmiaru obiektu; 2) lub dwa lub więcej obrazów.
sastanin
@jetxee tak, rozumiem teraz, z twojego komentarza nie było jasne, ponieważ podałem, że rozmiar obiektu jest jednym ze znanych w mojej odpowiedzi
Matt Grum
czy możesz udowodnić to prawo, z parralaksy trójkątów, obraz (piksele) / czujnik_wysokość nie pasuje do równania, a do czego odnosi się wysokość czujnika ?!
Błąd
16

Jak zaznaczono @ matt-grum, najprostszym wzorem do oszacowania odległości do obiektu jest wzór rzutowania otworkowego :

x / f = X / d

gdzie x jest rozmiarem obiektu na czujniku, f jest ogniskową obiektywu, X jest rozmiarem obiektu, a d jest odległością od punktu węzłowego do obiektu. x i f , a X i d są mierzone w tych samych jednostkach, np mm i m respetively (aby obliczyć x trzeba oszacować rozmiar piksela dla czujnika, na przykład do Pentax K20D to 23.4 mm / 4672 px ≈ 5,008e-3 mm / px, tzn. Obraz o długości 100 px odpowiada x = 50,08e-3 mm).

Poniżej zakładam, że rozmiar obiektu ( X ) jest nieznany, a jedynymi znanymi parametrami są x (rozmiar obrazu) if (długość ogniskowej).

Problem polega na tym, że nie możemy stwierdzić na podstawie jednego zdjęcia, czy mały obiekt znajduje się bardzo blisko aparatu lub duży obiekt daleko, ponieważ głębia ostrości na ujęciach poziomych jest zwykle bardzo duża (i dlatego stosuje się wzór otworkowy).

Aby rozwiązać ten problem, możemy użyć dwóch lub więcej obrazów do zmierzenia odległości. Pod warunkiem, że możesz zmierzyć wszystkie kąty i odległość między dwiema pozycjami kamery, możesz również obliczyć odległość do obiektu zdalnego. Ale zmierzenie wszystkich kątów nie jest łatwym zadaniem.

Łatwiejszym rozwiązaniem jest zrobienie dwóch zdjęć, które pozostają w tej samej linii z obiektem, z obiektem na środku obrazu. Niech odległość do obiektu na pierwszym zdjęciu będzie d₁ , a rozmiar obrazu będzie x₁ :

x_1 / f = X / d_1

Następnie, jeśli poruszać aparatem s metrów bezpośrednio w kierunku obiektu, a następnie na drugim zdjęciu mamy rozmiar obrazu x₂ nieznacznie większy niż x₁ :

( uwaga : mianownik w następnym wyrażeniu jest niepoprawny, zamiast „d1” powinien być „d2” lub równoważnie „d1-s”)

x_2 / f = X / (d_1 - s)

Co daje nam

d_1 = s x_2 / (x_2 - x_1)

Oczywiście, jeśli s nie ma dużego wpływu na rozmiar obrazu, nie można wiarygodnie oszacować odległości i trzeba zastosować bardziej skomplikowane metody. Im większa jest różnica x₂ - x₁ , tym lepiej.

sastanina
źródło
ahh, rozumiem, co miałeś na myśli przez twój komentarz, zakładałem, że rozmiar obiektu jest znany, w przeciwnym razie staje się znacznie bardziej skomplikowany, ponieważ potrzebujesz nie tylko co najmniej dwóch kamer, ale kamer trzeba skalibrować
Matt Grum
@Sastanin Próbuję twojej formuły, ale nie udało mi się jej uruchomić. Zrobiłem tutaj stronę photo.stackexchange.com/questions/80195/…
omega
2

Wiem, że to stara nić, ale wydaje się, że to pytanie pojawia się od czasu do czasu. FWIW, dodałem kalkulator, aby obliczyć odległość obiektu na obrazie.

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

Nadal będziesz musiał znać swoje wartości, aby działało, z których jedną jest przybliżona rzeczywista wysokość obiektu. Omówiłem tam.

WayneF
źródło
1

Zamiast próbować używać formuł, jeśli badasz morskie metody szacowania odległości, które obejmują kilka podstawowych „zasad kciuka”, na przykład jeśli stoisz 1 stopę nad wysokością wody, jesteś 3 mile morskie od horyzontu, jeśli trzymasz kciuk na długość ramion ich obiekt, na który patrzysz, jest pokryty, ma wysokość 100 stóp (chyba). Zapomniałem większości z nich, ponieważ już ich nie używam, ale działają, a gdy się je nauczy i będzie regularnie używane, są wyjątkowo dokładne.

adwb
źródło
bardzo interesujące ! uwielbiam takie rzeczy - mam nadzieję, że nie zostaną zapomniane z czasem
Rob
0

Prosta odpowiedź - nie. Masz dwie zmienne i tylko jedno równanie.

Brian
źródło
1
Bardzo niska jakość w porównaniu do przyjętej odpowiedzi ...
Olivier
Ale bardzo proste i (właściwie) do rzeczy.
Michael C
możesz założyć, że jest to ukryte w pytaniu, a odpowiedź wymaga znalezienia dodatkowego równania
Błąd