2D平面拟合,ransac,matlab,链接
我有一组3D点。2D平面拟合,ransac,matlab,链接
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=A\Points_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(:))
。为了使这个定义有意义,你必须确保你在感兴趣的区域上有一个均匀间隔的网格。
可能存在其他定义,例如,如果您试图找到房间中心的高度,并沿着墙壁和内部采样点,则用平均值替换平均值可能更合适。
以上是 2D平面拟合,ransac,matlab,链接 的全部内容, 来源链接: utcz.com/qa/259438.html