Znajdowanie odległości od kamery do obiektu o znanej wielkości

Próbuję napisać program za pomocą opencv, aby obliczyć odległość od kamery internetowej do jednej cala białej kuli. Wydaje mi się, że to powinno być dość łatwe, ale z jakiegoś powodu nic nie widzę. Dzięki za pomoc.

Author: David Harbage, 2011-07-16

2 answers

Można użyć podobieństwa trójkąta, aby skalibrować kąt kamery i znaleźć odległość.
Znasz rozmiar swojej piłki: D jednostki (np. cm). Umieść go w znanej odległości Z, powiedzmy 1 metr = 100cm, przed kamerą i zmierz jego pozorną szerokość w pikselach. Wywołaj tę szerokość d.
Ogniskowa aparatu f (która różni się nieco w zależności od aparatu) wynosi wtedy f=d*Z/D.

Kiedy zobaczysz tę piłkę ponownie tą kamerą, a jej pozorna szerokość wynosi d' pikseli, a następnie przez podobieństwo trójkąta, wiesz, że {[6] } i tak: Z'=D*f/d' gdzie Z' jest aktualną odległością kuli od kamery.

 23
Author: Adi Shavit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-14 04:00:34

Moim zdaniem będziesz potrzebował modelu kamery = modelu kalibracyjnego, jeśli chcesz mierzyć odległość lub inne rzeczy (w świecie rzeczywistym). Model kamery otworkowej jest prosty, liniowy i daje dobre wyniki (ale nie koryguje zniekształceń, (czy są one promieniowe, czy styczne).

Jeśli tego nie użyjesz, będziesz w stanie obliczyć mapę głębi dysproporcji (na przykład jeśli używasz wizji stereo), ale jest ona względna i nie daje absolutnego pomiaru, tylko to, co jest za i co jest przed innym obiektem....

Dlatego myślę, że odpowiedź brzmi: trzeba będzie ją skalibrować w jakiś sposób, może mógłbyś poprosić użytkownika, aby zbliżył się do kuli do kamery, aż cała płaszczyzna obrazu będzie idealnie wypełniona kulą, a po wcześniejszym zapoznaniu się z pomiarem kuli, będziesz w stanie obliczyć odległość....

Julien,

 0
Author: jmartel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-19 21:32:25