Можно ли получить фронтально-параллельный вид изображения или положения камеры по соотношению 2d-3d точек? - PullRequest
0 голосов
/ 12 января 2012

Возможно ли получить параллельный фронтальный вид изображения или положения камеры по соотношению 2d-3d точек, используя OpenCV?

Для этого у меня есть внутренние и внешние параметры. У меня также есть 3d координаты набора контрольных точек (которые лежат в одной плоскости) на изображении (отношение 2d-3d).

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

Если это невозможно сделать с OpenCV, другие библиотеки могут решить эту задачу?

1 Ответ

0 голосов
/ 17 января 2012

Решение основано на формулах в документации OpenCV Калибровка камеры и 3D реконструкция

Рассмотрим числовую форму без коэффициента искажения (в отличие от матричной формы).

У нас есть u и v.
Легко вычислить x' и y'.
Но x и y нельзя вычислить, потому что мы можем выбрать любой ненулевой z.
Линия в 3d соответствует одной точке на 2d изображении.

Чтобы решить эту проблему, мы берем две точки для z=1 и z=2. Затем мы находим 2 точки в трехмерном пространстве, которые указывают линии (x1,y1,z1) и (x2,y2,z2).

Тогда мы можем применить R -1 к (x1,y1,z1) и (x2,y2,z2), что приводит к линии, определяемой двумя точками (X1, Y1, Z1) и (X1, Y1, Z1).

Поскольку наши контрольные точки лежат в одной плоскости (пусть плоскость Z = 0 для простоты), мы можем найти соответствующие X и Y точки, которые являются точками в 3d.

После применения нормализации от mm к пикселям мы получаем фронтально-параллельное изображение.

(Если у нас есть искаженное входное изображение, мы должны сначала его не искажать)

...