У меня есть матрица камеры k
, которую я вычислил. Значение k
:
[[ 1.92160183e+08 0.00000000e+00 3.06056985e+02]
[ 0.00000000e+00 1.92160183e+08 1.57709172e+02]
[ 0.00000000e+00 0.00000000e+00 1.00000000e+00]]
Теперь я попытался найти инверсию k
, используя numpy (используя np.linalg.inv(k)
). Пусть k1
будет обратным k
.
Используя numpy, значение k*k1
:
[[ 1.00000000e+00 0.00000000e+00 -4.87462472e-04]
[ 0.00000000e+00 1.00000000e+00 -1.29434633e-04]
[ 0.00000000e+00 0.00000000e+00 1.00000000e+00]]
Я ожидал получить идеальную единичную матрицу, но поскольку значения, которые должны быть равны нулю, очень малы, я решил проигнорировать тот факт, что результат не был идеальной единичной матрицей.
Теперь моя проблема: у меня есть две другие матрицы R
и h
. R
- это единичная матрица (это не всегда единичная матрица, но предполагаем, что это так для простоты). Мне нужно выполнить H1 = k*R*k1*h
. В идеале это должно присвоить H1 значение h (так как k*R*k1
должен оказаться тождественным).
Моя исходная h-матрица:
[[ 1.71025842e+00 -7.51761942e-01 1.02803446e+02]
[ -2.98552735e-16 1.39232576e-01 1.62792482e+02]
[ -1.13518150e-18 -2.27094753e-03 1.00000000e+00]]
Моя матрица R:
[[ 1. 0. 0.]
[ 0. 1. -0.]
[-0. 0. 1.]]
Значение H1
, полученное с использованием H1 = k*R*k1*h
:
[[ 1.71025842 -0. -0. ]
[-0. 0.13923258 0. ]
[ 0. -0. 1. ]]
Значение H1
, полученное с использованием H1 = k*k1*h
:
[[ 1.71025842 -0. -0.05011282]
[-0. 0.13923258 -0.02107099]
[-0. -0. 1. ]]
Почему значение H1
не становится равным h
, как должно? Как я могу это исправить?