Оценить глубину 2D-пикселя с учетом внутренних и внешних параметров и ограничения Y=0.

У меня камера с одним обзором на определенной высоте (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 недели, так что было бы здорово получить помощь от сообщества. Я уверен, что это что-то очевидное, что я упускаю.

Спасибо еще раз


person PirosB3    schedule 27.03.2015    source источник


Ответы (1)


Координата однородного изображения — P1 = [u,v,1] или [f*u,f*v,f].

Умножение на обратную матрицу камеры дает вам луч, вдоль которого расположена 3D-точка. P2 ~= K⁻¹ * P1 (~= is equality up to a scale factor)

Предположим, что камера расположена в точке C (что равно (0,0,0,1) в системе координат камеры), а вектор P2 имеет вид [x,y,z,0]. (Нуль в конце делает перевод инвариантным!)

Тогда искомая 3D-точка находится в C + k*P2, и вы должны найти переменную k.

P3 = Rt⁻¹ * (C + k*P2)
P4 = C2  + k * P3   

C2 — положение камеры в мировых координатах. P3 — вектор в мировых координатах. P4 — ваша точка Y=-h

Наконец, подключите ограничение Y=-h и рассчитайте k, используя компоненты y:

k = (-h - C2_y) / P3_y
person Tobias    schedule 27.03.2015