2016-02-21 5 views
0

Я работаю над приложением для отслеживания объектов с использованием openCV. Я хочу преобразовать координаты пикселей в координаты мира, чтобы получить более значимую информацию. Я много читал о вычислении матрицы преобразования перспективы, и я знаю о cv2.solvePnP. Но я чувствую, что мой случай должен быть особенным, потому что я отслеживаю бегуна на дорожке с дорожкой и полем с взлетно-посадочной полосой, ортогональной к оси z камеры. Я настрою камеру, чтобы это обеспечить.Проецирование камеры для линий, ортогональных оси z камеры

Если я просто наберу две точки на краю взлетно-посадочной полосы, я могу рассчитать линейное преобразование из пикселей в мировые координаты на определенной высоте (уровень земли) и расстояние от камеры (т. Е. Вдоль этой линии). Затем я полагаю, что бегун будет работать на линии, параллельной ВПП на другой высоте и немного отличающемся от камеры, но линии должны быть параллельны изображению, потому что они оба будут ортогональны оси z камеры , Со всеми этими ограничениями я чувствую, что мне не нужно нормальное количество точек для отслеживания бегуна на этой конкретной оси. Моя кишка говорит, что 2-3 должно быть достаточно. Может ли кто-нибудь помочь мне прибить метод здесь? Я совсем не в курсе? С высотой и расстоянием от камеры, по существу, фиксированной, разве я не могу работать с гораздо меньшим набором соответствий?

Спасибо, Билл

ответ

0

Так что, я думаю, что я ответил на это один я. Верно, что нужны только две точки соответствия, учитывая следующие предположения.

Предположим:

  1. координаты мира устанавливаются с оси Х и Y-оси, параллельной плоскости земли. Ось X параллельна ВПП.

  2. Камера переведена и, возможно, повернута вокруг оси X (направлена ​​вниз), но нет вращения вокруг оси Y (плоскость камеры параллельно ВПП и оси Х) или ось Z (камера является уровнем относительно земли).

  3. Собственные параметры камеры известны с помощью калибровки камеры.

Метод:

  1. Выберите две точки в плоскости земли с известными координатами в мире и изображения. Например, две точки на краю ВПП, упомянутые в оригинальной записи. Линия, соединяющая poitns в мировых координатах, не должна быть параллельна ни с X, ни с осью Z.

  2. Поскольку Y = 0 для этих точек, игнорируйте второй столбец матрицы вращения/перевода, уменьшая проекцию до планарного преобразования гомографии (матрица 3x3). Теперь у нас 9 степеней свободы.

  3. Предположения о ротации будут применять определенную форму на матрице вращения/перевода. А именно, первый столбец и первая строка будут тождественными (1,0,0). Это дополнительно уменьшает количество степеней свободы в матрице до 5.

  4. Зафиксируйте значения второго столбца матрицы таким образом, чтобы cos^2 (theta) + sin^2 (theta) = 1. Это уменьшает число неизвестных только 4. Две точки соответствия дадут нам 4 уравнения, необходимые для вычисления матрицы гомографии для плоскости заземления.

  5. Фактор из матрицы внутренних параметров камеры из матрицы гомографии, оставляя матрицу поворота/сдвига для плоскости заземления.

  6. Из-за предположений о ротации, сделанных ранее, проигнорированный столбец матрицы поворота/перевода можно легко построить из третьего столбца той же матрицы, который является вторым столбцом в матрице гомографической плоскости земли.

  7. Multiply обратно с внутренними параметрами камеры для получения конечной универсальной матрицы проекции (только из 2 точек соответствия!)

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

 Смежные вопросы

  • Нет связанных вопросов^_^