Как я могу определить расстояние от объекта в видео?

Мне записали видеофайл от передней стороны движущегося механизма. Я собираюсь использовать OpenCV для обнаружения объектов и распознавания, но я застреваю на одном аспекте. Как я могу определить расстояние от распознанного объекта.

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

54
задан Neil N 17 December 2013 в 05:09
поделиться

7 ответов

Когда у вас есть перемещение видео, вы можете использовать временный параллакс для определения относительного расстояния объектов. Parallax: ( определение ).

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

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

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

Технология уже существует. Satellites определяют топографическую известность (высота), сравнивая несколько изображений, сделанных в течение короткого периода времени. Мы используем Parallax для определения расстояния звезд, фотографируя ночное небо в разных точках на орбите Земли вокруг Солнца. Я смог создать 3-D изображения из окна самолета, принимая две фотографии в течение коротких преследований.

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

36
ответ дан 7 November 2019 в 07:56
поделиться

Две камеры, так что вы можете обнаружить параллакс. Это то, что делают люди.

Редактировать

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

4
ответ дан 7 November 2019 в 07:56
поделиться

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

Любой шанс, что вы могли бы добавить ультразвуковой датчик?

2
ответ дан 7 November 2019 в 07:56
поделиться

Положить и объект известного размера в камеры поля зрения. Таким образом, вы можете иметь более объективную метрику для измерения угловых расстояний. Без второй точки зрения / камеры вы будете ограничены оценкой размера / расстояния, но, по крайней мере, это не будет полным догадыванием.

0
ответ дан 7 November 2019 в 07:56
поделиться

Используйте карты стереосистемы. Многие реализации на плаву, вот некоторые ссылки: http://homepages.inf.ed.ac.uk/rbf/cvonline/local_copies/owens/Lect11/node4.html

http://www.ece.ecsb.edu/~manj/ece181bs04/ L14 (Morestereo) .pdf

В вашем случае у вас нет стерео камеры, но глубина может быть оценена с помощью видео http://www.springerlink.com/content/g0n11713444148L2/

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

исследования прогрессировали до сих пор, что глубину можно оценить (хотя не до удовлетворительного расширения) из одного монокулярного изображения http://www.c.cs.cornell.edu/~asaxena/learningDepth/

3
ответ дан 7 November 2019 в 07:56
поделиться

Вам необходимо определить те же точки в том же объекте на двух разных рамах, принятых известный расстояние друг от друга. Поскольку вы знаете местоположение камеры в каждом кадре, у вас есть базовая линия (вектор между двумя позициями камеры. Построить треугольник из известной базовой линии и углов к идентифицированным точкам. Тригонометрия дает вам длину неизвестных сторон Трехгики для известной длины базовой линии и известных углов между базовой линией и неизвестными сторонами.

Вы можете использовать две камеры или одну камеру, принимающую последовательные снимки. Итак, если ваш автомобиль перемещается на 1 м / с и Вы принимаете деньги каждую секунду, а затем рамы для участия в 1-м базовом уровне, которые должны быть хорошими, чтобы измерить расстояние до предметов, скажем, 5 м. Если вам нужно регулировать объекты дальше, чем рамы, которые использовались в дальнейшем - Однако более отдаленные объекты будут ввиду дольше.

Наблюдатель при F1 видит цель при t с углом A1 до скорости вектора. Наблюдатель перемещает расстояние b до f2. Видит цель на T с углом A2.

Требуется для поиска R1. , варьируются от цели на F1

тригономета Личность RIC для Cosine дает

COS (90 - A1) = X / R1 = C1

Cos (90 - A2) = X / R2 = C2

COS (A1) = (B + Z) / R1 = C3

COS (A2) = Z / R2 = C4

x - расстояние до цели, ортогонального вектора скорости наблюдателя

Z - расстояние от F2 до пересечения с помощью X

для R1

R1 = B / (C3 - C1. C4 / C2)

5
ответ дан 7 November 2019 в 07:56
поделиться

Ваша проблема вполне стандартна в данной области.

Во-первых,

вам нужно откалибровать камеру. Это можно сделать в автономном режиме (значительно упрощает жизнь ) или в режиме онлайн посредством самокалибровки.

Откалибруйте офлайн - пожалуйста.

Во-вторых,

После того, как у вас есть калибровочная матрица камеры K , определите матрицу проекции камеры в последующей сцене (вам необходимо использовать параллакс, как упоминалось другими). Это хорошо описано в этом руководстве по OpenCV .

Вам нужно будет использовать информацию GPS, чтобы найти относительную ориентацию между камерами в последовательных сценах (что может быть проблематично из-за шума, присущего большинству устройств GPS), то есть R и t , упомянутые в руководстве, или вращение и перемещение между двумя камерами.

Как только вы решите все это, у вас будут две матрицы проекции - представления камер в этих последовательных сценах. Используя одну из этих так называемых матриц камеры, вы можете «спроецировать» трехмерную точку M на сцену на двумерное изображение камеры на пиксельную координату m (как в руководство).

Мы будем использовать это для триангуляции реальной трехмерной точки из двухмерных точек, найденных в вашем видео.

В-третьих,

используйте детектор точки интереса, чтобы отслеживать ту же точку в вашем видео, которая находится на интересующем объекте. Есть несколько доступных детекторов, я рекомендую SURF , так как у вас есть OpenCV, который также имеет несколько других детекторов, таких как Shi-Tomasi corners , Harris , и т. Д. .

В-четвертых,

После того, как вы отследили точки вашего объекта в последовательности и получили соответствующие 2D-пиксельные координаты, вы должны выполнить триангуляцию для наилучшего соответствия 3D-точки с учетом вашей матрицы проекции и 2D-точек. Triangulation

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

Наконец,

После того, как вы получили трехмерные точки на объекте, вы можете легко вычислить евклидово расстояние между центром камеры (которое в большинстве случаев является началом координат).и суть.

Примечание

Это, очевидно, непростая задача, но и не такая уж и сложная. Я рекомендую отличную книгу Хартли и Зиссермана Multiple View Geometry , в которой все вышеперечисленное подробно описано с помощью кода MATLAB для загрузки.

Получайте удовольствие и продолжайте задавать вопросы!

55
ответ дан 7 November 2019 в 07:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: