【论文阅读】空间圆形拟合检测新方法


摘 要 根据空间圆中任意两条弦所对应的中垂面与空间圆所处的平面必然相交且交点即为圆心这一空间圆特性,利用空间向量按照最小二乘法推导出圆心计算方程,按照附有条件的间接平差求解圆心坐标,进而反算出空间圆半径。经实例验证表明该模型可靠,拟合精度高,程序实现较其他模型更为简便,在工程运用中具有良好的实用性。
关键词 空间圆; 空间向量; 最小二乘; 限制条件; 间接平差
中图分类号 P207; P258 文献标识码 A

1、空间圆拟合模型

  如图所示,从理论而言,所有的测量点都必须位于空间平面内,首先需要进行空间平面拟合; 其次,在空间圆中任意两点连线可以得到一条弦,通过这条弦的直线方程可以计算出对应的中垂面方程,以测量点 N ( N > 3 ) N(N > 3) N(N3)为例,可以得到 N − 1 N-1 N1条线性不相关的弦,从而得出 N − 1 N-1 N1个线性不相关的中垂面方程。根据空间圆的特性,拟合平面和所有空间平面相交有且只有一个交点,这个交点即为平面圆的圆心; 最后,将拟合的空间平面作为限制条件,中垂面作为观测方程,利用带有限制条件的间接平差作为基本函数模型推导出平面圆圆心的计算方程,再根据点到圆心的代数距离方程计算出平面圆半径。
在这里插入图片描述

空间圆拟合原理示意图

1.1、空间平面拟合

  由于所有观测点必在平面上,所以首先需对实测点进行平面拟合。任何空间平面方程可表示为:
a x + b y + c z − 1 = 0 (1) ax + by + cz-1 = 0 \tag{1} ax+by+cz1=0(1)
n n n个观测点的三维坐标代入式(1)可得:
A ⋅ X − l = 0 (2) A·X-l = 0 \tag{2} AXl=0(2)
式中:

A = ( x 1 x 2 ⋯ x n y 1 y 2 ⋯ y n z 1 z 2 ⋯ z n ) T , X = ( a b c ) T , l = ( 1 1 ⋯ 1 ) T A=\left( \begin{matrix} x_1 & x_2 & \cdots& x_n\\ y_1 & y_2 & \cdots& y_n \\ z_1 & z_2 & \cdots& z_n \end{matrix} \right)^T,X=\left( \begin{matrix} a & b & c\\ \end{matrix} \right)^T, l=\left( \begin{matrix} 1 & 1 & \cdots& 1\\ \end{matrix} \right)^T A= x1y1z1x2y2z2xnynzn TX=(abc)T,l=(111)T
权阵 P P P 为单位矩阵。

  根据最小二乘法则 V T P V = m i n V^TPV = min VTPV=min 可知,拟合平面的法向量的方向系数为:
X = ( A T A ) − 1 A T l (3) X = (A^TA)^{-1} A^Tl\tag{3} X=(ATA)1ATl(3)
而各个点 P i ( x i , y i , z i ) P_i(x_i,y_i,z_i) Pi(xiyizi) 的平整度为:

d i = ∣ a x i + b y i + c z i − 1 ∣ a 2 + b 2 + c 2 (4) d_i=\frac{|ax_i+by_i+cz_i-1|}{\sqrt{a^2+b^2+c^2}}\tag{4} di=a2+b2+c2 axi+byi+czi1∣(4)

1.2、空间圆拟合

  运用空间向量思想推导球面上任意两点之间的中垂面方程。
  向量 P 1 P 2 ⃗ \vec{P_1P_2} P1P2 ( x 2 − x 1 , y 2 − y 1 , z 2 − z 1 ) (x_2-x_1,y_2-y_1,z_2-z_1) (x2x1y2y1z2z1),设圆心 P 0 ( x 0 , y 9 , z 0 ) P_0(x_0,y_9,z_0) P0(x0,y9,z0),过 P 1 P_1 P1 P 2 P_2 P2的中间点 P 12 P_{12} P12与圆心 P 0 P_0 P0连线的方向向量为 P 0 P 12 ⃗ ( x 2 + x 1 2 − x 0 , y 2 + y 1 2 − y 0 , z 2 + z 1 2 − z 0 ) \vec{P_0P_{12}}(\frac{x_2+x_1}{2}-x_0,\frac{y_2+y_1}{2}-y_0,\frac{z_2+z_1}{2}-z_0) P0P12 (2x2+x1x0,2y2+y1y0,2z2+z1z0),由于2个空间向量垂直,得出:
( x 2 − x 1 , y 2 − y 1 , z 2 − z 1 ) ⋅ ( x 2 + x 1 2 − x 0 , y 2 + y 1 2 − y 0 , z 2 + z 1 2 − z 0 ) = 0 (5) (x_2-x_1,y_2-y_1,z_2-z_1)\cdot(\frac{x_2+x_1}{2}-x_0,\frac{y_2+y_1}{2}-y_0,\frac{z_2+z_1}{2}-z_0)=0\tag{5} (x2x1y2y1z2z1)(2x2+x1x0,2y2+y1y0,2z2+z1z0)=0(5)
式(5) 可以简化为下式:
Δ x 12 ⋅ x 0 + Δ y 12 ⋅ y 0 + Δ z 12 ⋅ z 0 - l 1 = 0 (6) Δx_{12}·x_0 + Δy_{12}·y_0 + Δz_{12}·z_0 - l_1=0 \tag{6} Δx12x0+Δy12y0+Δz12z0l1=0(6)
式中, Δ x 12 = x 2 − x 1 , Δ y 12 = y 2 − y 1 , Δ z 12 = z 2 − z 1 , l 1 = ( x 2 2 + y 2 2 + z 2 2 − x 1 2 − y 1 2 − z 1 2 ) 2 Δx_{12} = x_2-x_1,Δy_{12} = y_2-y_1,Δz_{12} = z_2-z_1,l_1=\frac{(x_2^2+y_2^2+z_2^2-x_1^2-y_1^2-z_1^2)}{2} Δx12=x2x1Δy12=y2y1,Δz12=z2z1,l1=2(x22+y22+z22x12y12z12)

  由空间球体中垂面方程的相关性, n n n个观测点坐标可以列出 n − 1 n-1 n1个线性无关的中垂面方程,可得误差方程:
( v 1 v 2 ⋮ v n − 1 ) = ( Δ x 12 Δ x 23 ⋯ Δ x ( n − 1 ) n Δ y 12 Δ y 23 ⋯ Δ y ( n − 1 ) n Δ z 12 Δ z 23 ⋯ Δ z ( n − 1 ) n ) ( l 1 l 2 ⋮ l n ) (7) \left( \begin{matrix} v_1 \\ v_2 \\ \vdots \\ v_{n-1} \end{matrix} \right)= \left( \begin{matrix} Δx_{12}&Δx_{23}&\cdots&Δx_{(n-1)n} \\ Δy_{12}&Δy_{23}&\cdots&Δy_{(n-1)n} \\ Δz_{12}&Δz_{23}&\cdots&Δz_{(n-1)n} \\ \end{matrix} \right) \left( \begin{matrix} l_1 \\ l_2 \\ \vdots \\ l_n\\ \end{matrix} \right) \tag{7} v1v2vn1 = Δx12Δy12Δz12Δx23Δy23Δz23Δx(n1)nΔy(n1)nΔz(n1)n l1l2ln (7)
上式简化为: V = B ⋅ X - L (8) V = B·X - L \tag{8} V=BXL(8)
  此时权阵 P P P为单位阵。认定圆心必在拟合的空间平面上,依此作为限制条件,按照附有条件的间接平差进行计算,限制条件为式(9),推导法方程,可得圆心的最小二乘解。
  限制条件: C ⋅ X − W x = 0 (9) C·X-W_x = 0 \tag{9} CXWx=0(9)
式中: C = ( a , b , c ) C = (a, b, c) C=(a,b,c) W x = 1 W_x = 1 Wx=1
  法方程为:
( B T P B C T C 0 ) ⋅ ( X K s ) − ( B T P l W x ) = 0 (10) \left( \begin{matrix} B^TPB & C^T\\ C & 0 \\ \end{matrix} \right)·\left( \begin{matrix} X \\ K_s \\ \end{matrix} \right)- \left( \begin{matrix} B^TPl \\ W_x \\ \end{matrix} \right)=0 \tag{10} (BTPBCCT0)(XKs)(BTPlWx)=0(10)

式中 K s K_s Ks为限制条件的联系数向量。
  得出最小二乘解:
( X K s ) = ( B T P B C T C 0 ) − 1 ⋅ ( B T P l W x ) = 0 (11) \left( \begin{matrix} X \\ K_s \\ \end{matrix} \right)= \left( \begin{matrix} B^TPB & C^T\\ C & 0 \\ \end{matrix} \right)^{-1}\cdot \left( \begin{matrix} B^TPl \\ W_x \\ \end{matrix} \right)=0 \tag{11} (XKs)=(BTPBCCT0)1(BTPlWx)=0(11)
  再根据解出的圆心坐标,求出各个观测点到空间圆圆心的距离:
r i = ( x i − x 0 ) 2 + ( y i - y 0 ) 2 + ( z i - z 0 ) 2 , ( i = 1 , 2 , … , n ) (12) r_i= \sqrt{(x_i -x_0)^2 + (y_i-y_0)^2 + (z_i-z_0) ^2} ,(i = 1,2,…,n)\tag{12} ri=(xix0)2+(yiy0)2+(ziz0)2 (i=12n)(12)
圆的拟合半径 r r r为这些距离的平均值, Δ r i = r i − r ( i = 1 , 2 , … , n ) Δr_i = r_i -r(i =1,2,…,n) Δri=rir(i=12n)为这些点的圆度。

2、参考文献

[1] 李英硕,杨帆,袁兆奎.空间圆形拟合检测新方法[J].测绘科学,2013,38(06):147-148.DOI:10.16251/j.cnki.1009-2307.2013.06.060.

3、算法伪码

# --------------------------------读取点云--------------------------------
pc = PointCloudReader('E://data//Circle.pcd');
# -------------------------------获取xyz坐标------------------------------
P = [];                 % XYZ坐标
n = point_num;          % 点的个数
# ----------------------最小二乘求拟合平面的法向量系数--------------------
% 法方程:AX-l=0
A = [];                 % 法方程系数
l = [];                 % 法方程常数项
X = A * [] * l;         % 求解法方程
di = |(ax+by+cz-1)/sqrt(a^2+b^2+c^2)|; % 各点的平整度
# ------------------------------空间圆拟合--------------------------------
B = [];                 % 系数矩阵B
L = [];                 % 系数矩阵L
% 限制条件:CX - Wx = 0
 C = (a, b, c);
% 法方程系数
N = [B'*B C';C 0];
% 法方程常数项
W = [B'*L;1];
% 求解法方程
Xo = N^-1 * W;
% 计算圆心
center = [xo yo zo];
% 计算半径
ri = sqrt((xi-xo)^2+(yi-yo)^2+(zi-zo)^2);
r = mean(ri); % 空间圆拟合半径
% 计算点的圆度
dri = ri - r; 
# ----------------------------结果可视化----------------------------------
figure
% 1、绘制原始点
h1 = plot3(P(:,1), P(:,2), P(:,3), '*');
% 2、绘制拟合空间圆
x = c1 + r * a(1) * cos(theta) + r * b(1) * sin(theta);% 圆上各点的x坐标
y = c2 + r * a(2) * cos(theta) + r * b(2) * sin(theta);% 圆上各点的y坐标
z = c3 + r * a(3) * cos(theta) + r * b(3) * sin(theta);% 圆上各点的z坐标
hold on;

h2 = plot3(x, y, z, '-r');
% 3、绘制拟合圆圆心
h3 = plot3(center(1),center(2),center(3),'go');
grid on
% 4、误差分布统计
plot(di);       % 平整度
hold on
plot(dri,'.-'); % 圆度

4、算法结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_36686437/article/details/131693784