Можно ли измерить расстояние до объекта камерой? - PullRequest
36 голосов
/ 04 января 2011

Можно ли измерить расстояние до объекта с помощью камеры телефона?

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

Если это возможно, где я могу найти учебник или информацию о нем?

Ответы [ 10 ]

58 голосов
/ 04 января 2011

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

alt text

На картинке выше я стою возле своего дома. Горизонталь (d) - это расстояние, которое я хочу измерить, а вертикаль (h) - это высота над землей, на которой я держу камеру. В этом случае «h» является известным значением, когда я держу камеру Android на уровне глаз (около 67 дюймов или 1,7 метра). Когда я наклоняю камеру, чтобы направить ее прямо в точку, где мой дом встречается с землей, все, что нужно сделать программному обеспечению, это определить угол (a) относительно вертикали, и он может рассчитать 'd', используя ...

d = h * tan a
27 голосов
/ 04 января 2011

Ну, вы должны прочитать, как ithinkdiff.com "измеряет" расстояние:

Использует угол наклона iPhone, чтобы оценить расстояние до точки на земле. Держите iPhone перед собой, выровняйте точку в камере и получите прямой чтение расстояния. Расстояние можно использовать в инструменте скорости.

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

Это, конечно, не очень точно. Это становится менее точным, чем дальше объект. Также предполагается, что земля ровная.

9 голосов
/ 04 января 2011

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

3 голосов
/ 11 декабря 2016

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

1) Получите 2 изображения одного и того же объекта с двух разных позиций камеры.

2) Расстояние или пиксели между объектом на 2 изображениях обратно пропорциональны расстоянию между камерой и объектом.

Реализация доступна на https://github.com/agnelvishal/Distance-between-camera-and-object Вот исследовательская работа http://dsc.ijs.si/files/papers/S101%20Mrovlje.pdf

2 голосов
/ 12 декабря 2011

У вас есть угол в акселерометре телефона.Если вы вычислите тангенс этого угла и умножите его на высоту объектива камеры, вы получите расстояние.

0 голосов
/ 24 мая 2018

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

0 голосов
/ 25 апреля 2016

Один из способов добиться этого - использовать DPI на вашем устройстве. Вы можете сделать снимок и рассчитать высоту. Но вам понадобится другой объект в качестве ссылки, и тогда вы сможете узнать, что проблема с этим методом может заключаться в перспективе между объектами

0 голосов
/ 21 ноября 2012

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

0 голосов
/ 27 декабря 2011

Я думаю, это приложение использует упомянутый MisterSquonk подход (его бесплатно).Следите за техникой «Тригонометрия».

0 голосов
/ 04 января 2011

Нет.Только с двумя камерами в стереорежиме, как у xbox 360 kinect.Для триангуляции расстояния требуется не менее 3 баллов.

...