
我怎样才能从墙的角度得到“点”的位置?我知道x,y,(z)坐标从摄像机的角度,我知道墙的边缘点。
我想要计算该点是否位于墙的前面,以及它的另一侧(左,右)。我的想法是计算墙的平面方程,并测试从点到平面的垂直线是否在墙的边界中与它相撞。
我能以某种方式做到这一点而不使用z坐标(它是非常不准确的),并且墙和相机之间的角度是可变的。
发布于 2016-09-22 00:38:33
如果知道墙中心的xc、yc位置,则可以在新的参考系中变换点的X、Y坐标。
首先,翻译原点。如果相机位于坐标(0,0)中,则3D世界中点(X',Y',Z')的新坐标将为
X' = X - xc
Y' = Y - yc
Z' = Z(假设从您的图像可以看出,墙与XY平面是正交的)
现在你必须绕着Z轴旋转一个你知道的角度,并获得相对于墙中心的最终坐标X'',Y'',Z'‘。
如果角度不同,你就可以得到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'',这取决于你使用的alpha的值)
如果这个答案假设了你还没有的东西(alpha,xc,yc,点的3D坐标),告诉我,我会添加一个方法或策略。
发布于 2016-09-22 06:58:20
如果z坐标不重要,你可以忘记它,只使用x,y。
您可以将一条线拟合到墙的二维点,而不是平面。接下来,按照您的建议,计算一条穿过绿点并垂直于墙的线的线,并计算墙的线和垂直线之间的交点。
如果交点的x或y坐标在墙界限内,
x_wall_min
比这一点站在墙前还多。
如果墙和摄像头之间的角度可以改变,那么你必须更好地定义“墙的左边或右边”,因为它在某些角度可能不明显。
https://stackoverflow.com/questions/39619754
复制相似问题