2012-02-09 3 views
5

OpenCV содержит много поддержки для 3D-реконструкции от стереокамер. В моем случае у меня есть шесть калиброванных камер (внутренние и внешние), и я бы хотел взять общие 2D-точки (скажем, тестовой сферы) и получить соответствующую трехмерную позицию. Любые мысли о том, как это сделать?Реконструкция трехмерной точки из нескольких двумерных точек?

Что у меня есть:
1) Параметры для калибровки несколько камер
2) 2D позиции тестовой области (в каждой плоскости изображения)

Что я хочу получить:
1) Соответствующий 3D точки тестовая сфера

+4

Ответы находятся в области эпиполярной геометрии и могут все можно найти в оригинальной книге: «Многомерная геометрия зрения в компьютерном зрении» http://www.robots.ox.ac.uk/~vgg/hzbook/ - вы даже не должны размышлять о выходе из мира CV, не прочитав этого книгу хотя бы один раз. –

+0

Спасибо за отзыв Xander. Я давно читал эту книгу, но с тех пор забыл об этом. Отличный ресурс. – user1200565

+0

Если у вас есть двухточечные соответствия между парами изображений, просмотрите методы настройки Bundle – nbsrujan

ответ

1

Знаете ли вы, какие отношения между камерами существуют?

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

3

Ваши параметры калибровки дадут вам луч для каждой двумерной точки для каждой камеры. Если вы уже определили, какие лучи соответствуют вашей тестовой сфере, вы хотите сделать least squares подходящим для вашей целевой точки. (Хотя ссылка использует наименьшие квадраты для линейной регрессии, вы можете использовать те же методы, чтобы найти 3D-точку, минимизирующую сумму квадратов ошибок всех двумерных точек.)

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