У меня камера с одним обзором на определенной высоте (h) от земли. Путем калибровки я получил внутренние параметры K, матрицу вращения и вектор смещения [R|t], и, поскольку у меня есть полный доступ к камере и окружающей среде, я могу измерять все, что захочу. Моя цель - оценить глубину пикселя [u,v] на камере, учитывая, что я знаю, что пиксель находится на полу (то есть он находится в точке y=-h относительно камеры). Учитывая это ограничение, я сделал следующее (без успеха):
- создайте новую 3D-точку P1 из [u, v] и параметров камеры + фокусное расстояние: [u - cx, v - cy, f]
- умножьте P на обратную матрицу моей камеры K и назовите результат P2
- умножьте P2 на обратную матрицу [R|t] и назовите результат P3
- P3 — это вектор 4x1, поэтому мы нормализуем его и уменьшим до 3x1 [X1, Y1, Z1]. Эта точка должна быть мировой координатной проекцией моей точки [u, v]
- Solve X and Z when Y=-h in the following way:
- x = x1 * (-h / y1)
- y = z1 * (-h / y1)
К сожалению, это не выглядит правильно! Я решил эту проблему уже 2 недели, так что было бы здорово получить помощь от сообщества. Я уверен, что это что-то очевидное, что я упускаю.
Спасибо еще раз