Я хочу найти координату камеры из координаты пикселя/экрана, используя 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]
)? Или бывают случаи, когда матрицу вращения и/или внутреннюю матрицу нельзя инвертировать?
Можно ли любезно подтвердить это?