Rzeczywistą fizykę obiektywu objaśniono na przykład na this website of Georgia State University.
Zobacz tę ilustrację, która wyjaśnia, jak można użyć powiększenie liniowe lub ogniskowe stosunki długości, aby dowiedzieć się rozmiar obiektu od rozmiaru obrazu:
w szczególności -i/h' = o/h
, a relacja ta o/h
prawdą dla wszystkich podobnych trójkątów (to znaczy obiekt o rozmiarze 2h
w odległości 2o
ma ten sam rozmiar h'
na zdjęciu). Jak widać, nawet w przypadku pełnego równania, nie można znać zarówno odległości o
, jak i rozmiaru h
obiektu - jednak jeden da ci drugi.
Z drugiej strony, dwa obiekty w tej samej odległości o
będzie zobaczyć ich rozmiary h1'
i h2'
na obrazek być proporcjonalne do ich wielkości w prawdziwym życiu h1
i h2
, ponieważ h1'/h1 = M = h2'/h2
.
Stąd jeśli wiesz dla jednego obiektu zarówno o
i h
wiesz M
, więc znając wielkość obiektu, na filmie można odliczyć jego rozmiar od jego odległości i vice versa.
Wartość -i/h'
jest wyrażana naturalnie dla maksymalnej wartości h'
. Jeśli rozmiar obiektu dokładnie wypełnia obraz, wypełnia on pole widzenia, a stosunek jego odległości do jego rozmiaru to tan(α/2) = (l/2)/d
(zauważ, że w konwencjach na poniższym obrazku: d = o
i l = 2 * h
).
Ten α jest to, czego nazwać teta w swoim przykładzie. Teraz, z rozmiaru obrazu, można uzyskać pod kątem, w którym widać obraz - to znaczy, jaki rozmiar byłby obrazem, gdyby był w odległości d
. Stamtąd możesz wywnioskować rozmiar obiektu z jego odległości i odwrotnie.
Algorytm kroki:
- get stosunek
r = size of object in image (in px)/total size of image (in px)
.
Wykonaj to wzdłuż osi, dla której wiesz lub planujesz uzyskać rzeczywisty rozmiar obiektu, oczywiście.
- uzyskać odpowiednie pole widzenia i kąt wielowarstwowego r przez styczną połowę tego kąta
r *= tan(camera.getParameters().getXXXXViewAngle()/2)
r
jest styczna z pół-kąt pod którym można zobaczyć obiekt, stąd następujące relacje są prawdziwe: r = (l/2)/d = h/o
(z odpowiednimi zapisami rysunku).
-
- Jeśli znasz odległość
d
do obiektu, jego rozmiar jest l = 2 * r * d
- Jeżeli znasz rozmiar
l
obiektu, to jest w odległości jest d = l/(2 * r)
to działa w przypadku przedmiotów kapelusz jest rzeczywiście wskazany przez aparat, jeśli nie są wyśrodkowane, matematyka może być wyłączona.