2016-09-21 5 views
0

enter image description here
Как я могу получить позицию «точки» с точки зрения стен? Я знаю координаты x, y, (z) с точки зрения камеры, и знаю граничные точки стены.
Я хочу рассчитать, стоит ли точка перед стеной, а также с ее стороны (слева, справа). Моя идея - рассчитать плоское уравнение стены и проверить, попадает ли перпендикулярная линия от точки к плоскости в границах стены.
Могу ли я сделать это как-то без использования координаты z (это очень неточно), а угол между стенкой и камерой является переменным.Рассчитать перспективное преобразование в OpenCV

ответ

0

Если вы знаете положение 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 координаты точки) скажите мне, и я добавлю метод или стратегию.

0

Если координата z не важна, вы можете ее забыть и использовать только x, y.

Вместо самолета вы подходите к двум точкам стены. Затем, как вы предложили, вы вычисляете линию, которая проходит через зеленую точку и перпендикулярна к линии стены и вычисляет точку пересечения между линией стены и перпендикулярной линией.

Если х точка пересечения или у координат находится внутри пределов стен,

< x_wall_min х < x_wall_max или y_wall_min < < у y_wall_max,

, чем точка стоит перед стеной.

Если угол между стеной и камерой может меняться, вам лучше определить «левый или правый стену», поскольку это может быть не очевидно для некоторых углов.