Как рассчитать матрицу перевода? - PullRequest
1 голос
/ 19 апреля 2019

У меня есть данные 2D-изображения с соответствующим местоположением камеры по широте и долготе.Я хочу перевести пиксельные координаты в трехмерные мировые координаты.У меня есть доступ к внутренним параметрам калибровки и рысканию, тангажу и крену.Используя Yaw, Pitch and Roll, я могу получить матрицу вращения, но я не понимаю, как рассчитать матрицу перевода.Поскольку я работаю над набором данных, у меня нет физического доступа к камере.Помогите, пожалуйста, вывести матрицу перевода.

1 Ответ

0 голосов
/ 20 апреля 2019

Невозможно сделать вообще, если у вас нет высоты камеры относительно земли (AGL или ASL) или другого способа разрешения масштаба на изображении (например, путем идентификации на изображении объекта известногоразмер, например футбольный стадион на аэрофотоснимке).

Если предположить, что вы можете решить масштаб, то следующий вопрос заключается в том, насколько точно вы можете (или хотите) моделировать ландшафт.Для первого приближения вы можете использовать стандартный геодезический эллипсоид (например, WGS-84).Для более высокой точности - особенно для изображений, снятых с малых высот - вам нужно будет использовать DTM и зарегистрировать его для изображений.В любом случае, это стандартная проблема обратной проекции: вы вычисляете луч от центра камеры до пикселя, преобразуете его в мировые координаты, а затем пересекаете с эллипсоидом или DTM.

Существует множество библиотек с открытым исходным кодом, которые помогут вам сделать это на разных языках (например, GeographicLib)

Отредактировано для добавления предложений:

Выразите своирасположение камеры в ECEF.Преобразуйте луч из камеры в ECEF, а также с учетом вращения камеры.Вы можете выполнить оба преобразования, используя библиотеку, например, nVector .

Затем продолжите пересекать луч с эллипсоидом, как объяснено в этот ответ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...