使用PCA拟合平面

背景

本文参考以下两篇平面解析的论文。
《Fast Plane Extraction in Organized Point Clouds Using Agglomerative Hierarchical Clustering》2014 ICRA
《Fast Cylinder and Plane Extraction from Depth Cameras for Visual Odometry》2018 IROS

这两篇论文在为数不多的平面解析中都取得了较好的效果,并且均开源。本文不详细解析论文本身的方法,而是简单的分析代码是如何使用PCA这种方法来拟合平面的。

三点确定一平面

还是回顾一下基础。

平面方程可以由下列两种方式表示。
Ax+By+Cz+D=0 截距式
A(x-x0)+B(y-y0)+C(z-z0)=0 点法式

其中,A、B、C组成的向量为平面的法向量。

为啥呢?

因为平面法向量垂直于平面任何向量,有 :平面法向量 点乘· 平面向量 = 0 ,对应着 A ( x − x 0 ) + B ( y − y 0 ) + C ( z − z 0 ) = 0 A(x-x0)+B(y-y0)+C(z-z0)=0 A(xx0)+B(yy0)+C(zz0)=0
故A,B,C组成的向量为平面法向量。

我们知道,三点可以确定一个平面。假如我们有三个空间点:
P 0 = ( x 0 , y 0 , z 0 ) , P 1 = ( x 1 , y 1 , z 1 ) , P 2 = ( x 2 , y 2 , z 2 ) P_0 = (x_0,y_0,z_0) ,P_1 =(x_1,y_1,z_1),P_2 = (x_2,y_2,z_2) P0=(x0,y0,z0)P1=(x1,y1,z1)P2=(x2,y2,z2)
P 0 P_0 P0为中心点得到两平面向量:
V 0 = P 1 − P 0 , V 1 = P 2 − P 0 V_0=P_1-P_0,V_1=P_2-P_0 V0=P1P0,V1=P2P0

平面法向量为: n = V 1 × V 2 n=V_1 × V_2 n=V1×V2

即上面所说的(A,B,C)。

多点拟合平面

基础数学知识

协方差:
C o v ( X , Y ) = E [ ( X − E [ X ] ) ( Y − E ( Y ) ) ] = E [ X Y ] − 2 E [ Y ] [ X ] + E [ X ] E [ Y ] = E [ X Y ] − E [ X ] E [ Y ] \begin{aligned} Cov(X,Y) &=E[(X-E[X])(Y-E(Y))] \\ &=E[XY]-2E[Y][X]+E[X]E[Y] \\ &=E[XY]-E[X]E[Y]\end{aligned} Cov(X,Y)=E[(XE[X])(YE(Y))]=E[XY]2E[Y][X]+E[X]E[Y]=E[XY]E[X]E[Y]
协方差矩阵,可描述不同变量关系的矩阵。对角元素是自身的方差,非对角元素是某变量与另一变量的协方差。
C = ( c i j ) n × n = ( c 11 c 12 ⋯ c 1 n c 21 c 22 ⋯ c 2 n ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ c n 1 c n 2 … c n n ) C=\left(c_{i j}\right)_{n \times n}=\left(\begin{array}{cccc}c_{11} & c_{12} & \cdots & c_{1 n} \\ c_{21} & c_{22} & \cdots & c_{2 n} \\ \cdot & \cdot & & \cdot \\ \cdot & \cdot & & \cdot \\ \cdot & \cdot & & \cdot \\ c_{n 1} & c_{n 2} & \ldots & c_{n n}\end{array}\right) C=(cij)n×n=

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值