2D平面拟合,兰萨克,矩阵,链接



我有一组3D点。

Points_[x,y,z]% n*3 where n is number of points

我想安装一架飞机(它是地板(并检查飞机的高度。我认为这是2D问题。

z=bo+b1x+b2y;

我找不到 2D ransac 平面配件的链接。有人可以提供此链接或文件吗?

其次,一些软件(商业(给出了平面的高度值。它是平均值或一些复杂的值。

问候

如果形成以下"A"矩阵

A = [ones(numel(Points_X),1), Points_X(:), Points_Y(:)]; 

(:)是给你列向量(以防它们不是一开始(

然后,您可以将方程组编写为经典的线性方程组:

A*b = Points_Z(:);

其中 b = [b0; b1; b2] -- 您尝试确定的参数的列向量。这有规范的解决方案

b=APoints_Z(:)

b=pinv(A)*Points_Z(:)

请参阅有关 mldivide 和 pinv 的帮助。

您必须有 3 个或更多点,这些点并非全部位于一条线上。 对于像这样的超定系统,pinv 和 \ 基本上会产生相同的结果。 如果它们几乎是共线的,则使用 .

b 中的 3 个参数基本上是平面在原点上方的高度、x 斜率和平面的 y 斜率。 如果你仔细想想,飞机的"高度"就是你的z项。 你可以谈论某个点以上的高度(如原点(。 现在,如果您希望高度位于采样点的质心,则可以

z_mean = [1 mean(Points_X(:) ) mean( Points_Y(:) )] * b

这可能相当于mean( Points_Z(:) ). 要使此定义有意义,必须确保在感兴趣区域上具有均匀间隔的网格。

可能还有其他定义,具体取决于您的应用程序。 例如,如果您试图找到房间中心的高度,并沿墙壁和内部采样点,那么用中位数替换平均值可能更合适。

最新更新