3D-соответствия из фундаментальной матрицы

В MATLAB я вычислил Фундаментальная матрица (из двух изображений) с использованием нормализованного восьмиточечный алгоритм. Из этого мне нужно триангуляция соответствующих точек изображения в трехмерном пространстве. Насколько я понимаю, для этого мне понадобится поворот и перевод изображений. Самым простым способом было бы сначала откалибровать камеры, а затем сделать изображения, но это слишком сжимает для моего приложения, так как это потребует дополнительных шаг.

Таким образом, это оставляет меня с автоматической (само) калибровкой камеры. Я вижу упоминание настройка узла, однако в Приглашение к 3D Vision кажется, что для этого требуется первоначальный перевод и ротация, что заставляет меня думать, что требуется калиброванная камера или мое понимание падает.

Итак, мой вопрос в том, как я могу автоматически извлечь поворот/перевод, чтобы я мог перепрограммировать/триангулировать точки изображения в 3D-пространстве. Любой код MATLAB или псевдокод будет фантастическим.

Ответ 1

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

Если у вас есть доступ к учебнику Hartley и Zisserman, вы можете проверить раздел 9.5.3, где вы найдете то, что вам нужно, чтобы перейти от фундаментальной матрицы к паре матриц камеры, которые позволят вам вычислить проективную реконструкцию (я считаю, что то же самое содержание содержится в разделе 6.4 книги Yi Ma). Поскольку исходный код для алгоритмов книги доступен в Интернете, вы можете проверить функции vgg_P_from_F, vgg_X_from_xP_lin и vgg_X_from_xP_nonlin.

Ответ 2

Код Peter MATLAB был бы очень полезен для вас, я думаю:

http://www.csse.uwa.edu.au/~pk/research/matlabfns/

Питер опубликовал ряд фундаментальных матричных решений. Оригинальные алгоритмы были упомянуты в книге zisserman

http://www.amazon.com/exec/obidos/tg/detail/-/0521540518/qid=1126195435/sr=8-1/? исх = pd_bbs_1/103-8055115-0657421 V = взгляда & s = книги & п = 507846

Кроме того, пока вы на нем, не забудьте увидеть основную матричную песню:

http://danielwedge.com/fmatrix/

один прекрасный состав в моем честном мнении!

Ответ 3

Если ваше 3D-пространство можно выбрать произвольно, вы можете установить первую матрицу камеры как

P = [I | 0]

Нет перевода, нет вращения. Это оставило бы вас с системой координат, определенной с камеры 1. Тогда не должно быть слишком сложно выполнить калибровку второй камеры.