Как найти 3D-координаты камеры по маркеру?

По одному снимку нужно определить 3D-координаты камеры в системе координат, привязанной к маркеру.
Маркер - квадрат на плоскости известного размера. Начало координат - один из углов маркера.

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

Задача сводится к нахождению матрицы внешних параметров камеры (extrinsic).
C=R|T

Решить СЛАУ для вычисления полной матрицы проекций по 4 точкам на плоскости не получается - уравнений не хватает. Неизвестных 12, а уравнений всего 8 (по 2 на каждую точку).

По четырем можно вычислить матрицу гомографии. Это получилось сделать.
Как, зная матрицу гомографии, вычислить координаты камеры в мировых координатах (x,y,z)?
И можно ли это вообще сделать?

В приложениях дополненной реальности вроде бы эта задача решается.
Вроде бы даже с 4-я точками.

Мне хочется понять математику процесса, а не использовать ф-ии из готовых библиотек.
  • Вопрос задан
  • 3486 просмотров
Пригласить эксперта
Ответы на вопрос 2
icelaba
@icelaba
Знаю и умею всё
Если в лоб:
Пусть маркер треугольник,
{X,Y}c - координата камеры, Vw = {X,Y,Z}w - мировая кордината
задача сводится к решению уравнений
Xw0/Zw0 = Xc0
Yw0/Zw0 = Yc0
Xw1/Zw1 = Xc1
Yw1/Zw1 = Yc1
Xw2/Zw2 = Xc2
Yw2/Zw2 = Yc2
где координаты {X,Y}сn известны
итого 6 уравнений 9 неизвестных

Нам известны размеры маркера:
mod(Vw1 - Vw0) = size0
mod(Vw2 - Vw0) = size1

еще мы знаем про маркер например пусть треугольник прямоугольный
mul(Vw1 - Vw0, Vw2 - Vw0) = 0

9 уравнений 9 неизвестных,
решений скорее всего несколько

Так в лоб не решается?
Ответ написан
Комментировать
@ZoomEx Автор вопроса
Если получится решить такую ситсему (она несколько упрощена в части внутренних параметров камеры: фокус, главная точка и прочее, но по сути то же самое), то
результатом будут значения мировых координат 3-х точек маркера в системе отчета привязанной к камере.
Для решения моей задачи далее нужно будет сменить базис: начало координат перенести в одну из этих точек, оси развернуть по катетам треугольника. Иначе говоря нужно найти матрицу евклидова преобразования. Тоесть опять решить систему уравнений.
3 точки не дадут достаточного кол-ва уравнений для ее решения.

Исходная приведенная система уравнений с треугольником нелинейная и по мне так не факт, что она решится.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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