Могу ли я преобразовать координаты экрана в координаты камеры, используя эту процедуру?

Я хочу найти координату камеры из координаты пикселя/экрана, используя opencv.

Предположим, что мои камеры откалиброваны, и я получил внутренний параметр (матрицу с фокусным расстоянием и главной точкой) и внешний параметр (матрицу вращения и перемещения) с помощью opencv. Затем это веб-сайт для 3D-реконструкции с помощью opencv говорит:

s * [q  1]^{Transpose} = [K] * [([R] * P) + T]

где [q] — координата 2d пикселя, s = 1, K — (3x3) внутренняя матрица, R — (3x3) матрица вращения, P — (3x1) в мировых координатах, а T — (3x1) матрица перевода.

So:

[R]^{-1} * ( [ [K]^{-1} * [q  1 ]^{Transpose} ] - [T] ) = [P]

А потом:

[U] = ([R] * [P]) + [T]

где [U] это (3x1) в координатах камеры. Итак, теперь [q] в координатах пикселей будет преобразовано в координаты камеры [U].

Правильно ли я преобразовываю координату пикселя в координату камеры, как это? Всегда ли обратима матрица вращения ([R]) или внутренняя матрица ([K])? Или бывают случаи, когда матрицу вращения и/или внутреннюю матрицу нельзя инвертировать?

Можно ли любезно подтвердить это?


person Community    schedule 14.12.2011    source источник


Ответы (1)


Мне лень проверять это для вас (на самом деле, вы должны протестировать это, и если у вас есть вопросы, обращайтесь сюда за помощью).

Но вы можете использовать этот хороший фрагмент кода: это не совсем то, что вам нужно, но основные принципы верны:

Виртуальная камера Opencv, вращающаяся/переводящаяся для вида с высоты птичьего полета

person Sam    schedule 14.12.2011
comment
Василий спасибо за помощь. Я попробую сам. Еще раз спасибо. - person ; 14.12.2011