两个平面之间检测到的角度不正确

时间:2014-11-26 05:34:20

标签: matlab vector svd point-clouds stereo-3d

我想计算2个平面,参考平面和Plane1之间的角度。当我将pointCloud的X,Y,Z坐标提供给函数plane_fit.m(由Kevin Mattheus Moerman提供)时,我得到系数:

reference_plane_coeff:[ - 0.13766204 -0.070385590 130.69409]

Plane1_coeff:[0.0044337390 -0.0013548643 95.890228]

enter image description here

接下来,我在XZ平面上分别找到两个平面的交点,得到一个线方程; ref_line_XZ和plane1_line_XZ分别为。为此,我将第二个系数设为0.(这是对的吗?)

Aref = reference_plane_coeff(1);
Cref = reference_plane_coeff(3);
ref_line_XZ = [Aref Cref];
Arun = Plane1_coeff(1);
Crun = Plane1_coeff(3);
plane1_line_XZ = [Arun Crun];
angle_XZ = acos(  dot(ref_line_XZ,plane1_line_XZ ) / (norm(ref_line_XZ) * norm(plane1_line_XZ ))        )

我得到angle_XZ值为0.0012 rad。即0.0685度

当我在图表上绘制这些平面并查看它时,角度似乎远远超过0.0012度。我说的是两个平面与XZ平面相交后两条线所形成的角度。

enter image description here

我做错了什么?

另外,当我试图找到它的法线之间的角度时,使用:

angle_beta_deg = acosd(  dot(reference_plane_coeff,Plane1_coeff) / (norm(reference_plane_coeff) *     norm(Plane1_coeff))    )

我的角度为0.0713。

在目视检查两个平面的图并从图中手动计算时,angle_XZ应该在9度左右。

plane_fit.m (by Kevin Mattheus Moerman)

0 个答案:

没有答案