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

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

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

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

, где [q] - это 2-мерная пиксельная координата, s = 1, K - это (3x3) собственная матрица, R - это (3x3) матрица вращения, P - это (3x1) в мировой координате и T является (3x1) матрицей перевода.

Итак:

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

А потом:

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

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

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

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

1 Ответ

0 голосов
/ 14 декабря 2011

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

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

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

...