Как я могу получить позицию «точки» с точки зрения стен? Я знаю координаты x, y, (z) с точки зрения камеры, и знаю граничные точки стены.
Я хочу рассчитать, стоит ли точка перед стеной, а также с ее стороны (слева, справа). Моя идея - рассчитать плоское уравнение стены и проверить, попадает ли перпендикулярная линия от точки к плоскости в границах стены.
Могу ли я сделать это как-то без использования координаты z (это очень неточно), а угол между стенкой и камерой является переменным.Рассчитать перспективное преобразование в OpenCV
ответ
Если вы знаете положение xc, yc центра стены, вы можете преобразовать координаты X, Y точки в новой системе отсчета.
Сначала переведите начало координат. Если камера находится в координатах (0,0), новых координатах poinx (X «Y», Z ') в 3D-мире будет
X' = X - xc
Y' = Y - yc
Z' = Z
(при условии, от вашего изображения, что стена ортогонального к плоскость XY)
Теперь вам нужно вращаться вокруг оси Z, которую вы знаете, и получить конечные координаты X '', Y '', Z '' относительно центра стены.
если угол си Aplha вы выводите (матрицу с помощью вектора moltiplication) rotational matrix around Z
cos(alpha) -sin (alpha) 0
R = [sin(alpha) cos(alpha) 0]
0 0 1
и получить
(X'', Y'', Z'') = R*(X',Y',Z')
вы должны получить еще раз, что Z '= Z
сейчас вы можете определить точку слева или справа до середины стены, если X ''> 0 или X '' < 0 (вы также можете использовать Y '', это зависит от того, какое значение o е альфа вы использовали)
Если этот ответ предположить то, что вы уже не имеете (альфа, хс, Ус, 3D координаты точки) скажите мне, и я добавлю метод или стратегию.
Если координата z не важна, вы можете ее забыть и использовать только x, y.
Вместо самолета вы подходите к двум точкам стены. Затем, как вы предложили, вы вычисляете линию, которая проходит через зеленую точку и перпендикулярна к линии стены и вычисляет точку пересечения между линией стены и перпендикулярной линией.
Если х точка пересечения или у координат находится внутри пределов стен,
< x_wall_min х < x_wall_max или y_wall_min < < у y_wall_max,
, чем точка стоит перед стеной.
Если угол между стеной и камерой может меняться, вам лучше определить «левый или правый стену», поскольку это может быть не очевидно для некоторых углов.