3D соответствия из фундаментальной матрицы - PullRequest
11 голосов
/ 03 февраля 2010

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

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

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

Ответы [ 3 ]

9 голосов
/ 06 февраля 2010

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

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

5 голосов
/ 06 февраля 2010

Матлаб-код Питера был бы вам очень полезен, я думаю:

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

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

http://www.amazon.com/exec/obidos/tg/detail/-/0521540518/qid=1126195435/sr=8-1/ref=pd_bbs_1/103-8055115-0657421?v=glance&s=books&n=507846

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

http://danielwedge.com/fmatrix/

одна прекрасная композиция по моему честному мнению!

1 голос
/ 03 февраля 2010

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

P = [I | 0]

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

...