在空间三维坐标系下的圆、直线和平面拟合 |
您所在的位置:网站首页 › 切线法求拟合直线 › 在空间三维坐标系下的圆、直线和平面拟合 |
前言
上个学期,在做项目的时候遇到了许多需要拟合的情况。但是在网上寻找资料的时候大多是建立在二维空间的,在三维坐标系下的拟合较乱。因此在下面列举一些我所用到的直线拟合和圆拟合。 空间圆拟合在二维空间中对圆的拟合较为简单,由初中的几何知识我们可以知道,确定一个三角形至少需要三个不共线的点,因此确定一个三角形的外接圆至少可用三个点。我们不妨假设三个点坐标为P1(x1,y1,z1),P2(x2,y2,z2),P3(x3,y3,z3)。 圆方程的标准形式为: (xi-x)2+(yi-y)2=R2 (1) 在三维空间坐标系中球的方程为: (xi-x)2+(yi-y)2+(zi-z)2=R2 (2) 一个空间圆的产生可以看作过该圆心的一个球体,被一个经过该点的平面所截而得到。因此在求取空间圆的时候还应添加平面约束方程,以上述P1、P2、P3三个不共线的点可以确定一个平面,平面方程为: AX+BY+CZ+D=0 (3) 求解方程(3)时注意技巧,常用两种方式,向量法或者待定系数法。若使用待定系数法则需平面方程的另一种形式,点法式为: A(x-x0)+B(y-y0)+C(z-z0)=0 (4) 但是笔者建议使用向量的方式,更为简单方便,三点在同一个平面上,以P1为基点,寻找两条向量P12、P13;该平面方程的法向量为n=P12×P13(注:向量的叉乘)。在得到平面的法向量之后,带入其中一个点到方程(4)中即可得到平面约束方程。我们不妨将该约束方程系数设为A1、B1、C1、D1。 在得到约束平面方程之后还须求解空间中圆的方程,在求解圆的方程时也有诸多方式,一种方式为将已知点带入到方程(2)中,利用待定系数法求解,我们仍参以P1为方程的基点,分别将P2,P3带入可以得到如下方程: (x1-x)2+(y1-y)2+(z1-z)2=R2 (x2-x)2+(y2-y)2+(z2-z)2=R2 (x3-x)2+(y3-y)2+(z3-z)2=R2 整理后可以得到 A2=2(x2-x1) ,B2=2(y2-y1) ,C2=2(z2-z1),D2=x12+y12+z12-x22-y22-z22 (5) A3=2(x3-x1) ,B3=2(y3-y1) ,C3=2(z3-z1),D3=x12+y12+z12-x32-y32-z32 (6) 建立系数矩阵:
t
=
x
−
m
x
l
=
y
−
m
y
m
=
z
−
m
z
n
t = \frac{x-m_x}{l}=\frac{y-m_y}{m}=\frac{z-m_z}{n}
t=lx−mx=my−my=nz−mz
s
=
x
−
n
x
p
=
y
−
n
y
q
=
z
−
n
z
r
s = \frac{x-n_x}{p}=\frac{y-n_y}{q}=\frac{z-n_z}{r}
s=px−nx=qy−ny=rz−nz 联立方程消去xyz,可得到下列方程(不唯一)
l
∗
t
+
m
x
=
p
∗
s
+
n
x
l*t+m_x=p*s+n_x
l∗t+mx=p∗s+nx
m
∗
t
+
m
y
=
q
∗
s
+
n
y
m*t+m_y=q*s+n_y
m∗t+my=q∗s+ny 改写为矩阵形式 实现在二维平面的直线拟合较为简单,可以利用离散点(实际点)与拟合直线上的点(理想点)残差的平方和作为目标函数,求偏导计算最小值即可。另一种方式可以解多个点的矛盾方程,构建直线拟合经验公式:
y
=
a
∗
x
+
b
y=a*x+b
y=a∗x+b 在二维空间中,假设我们有一组二维点数据,其中每一个X均有一个Y与之对应,我们不妨构建矩阵 实现上述过程在opencv或者Matlab中均十分简单,在此就不贴上自己拙劣的代码了。。。。。。 如有错误,欢迎指正。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |