点云边界直角边修补系统及方法_2

文档序号:9709135阅读:来源:国知局
第一面的边界点。所述拟牛顿解非线形方程式为:
[0029]
[0030] 其中,(X1,Y1,Z1)为第一平面的点云中的点坐标,(X2,Y2,Z2)为虚拟平面中的坐 标。通过上述算法,得到边界点中属于第一面的边界点。查找边界点中属于第二面的边界 点的方式与查找边界点中属于第一面的边界点的方式相同。
[0031] 所述计算模块106用于计算第一面的边界点中每点到第二面的映射点,并形成第 一面中要修补的第一区域,及计算第二面的边界点中每点到第一面的映射点,形成第二面 中要修补的第二区域。
[0032] 计算第一面的边界点中每点到第二面的映射点的方式为:假设第一面的边界点Ρ 坐标为(XI,Yl,Ζ1),第二面拟合平面方程为AX+BY+CZ+D = 0,点Ρ到第二面拟合平面的投 影点为 PI (Χ12, Υ12, Ζ12),其中,常量 Τ = - (A*X1+B*Y1+C*Z1+D) AA*A+B*B+C*C),则 Π2 = X1+A*T,Y12 = Y1+B*T,Z12 = Z1+OT,由上述公式可以计算出第一面所有边界点到第二面 的投影点。第一面的边界点和这些边界点在第二面的投影点共同组成了一个封闭的区域, 该区域就是第一面的修补区域,如图8所示。
[0033] 计算第二面的边界点中每点到第一面的映射点的方式与计算第一面的边界点中 每点到第二面的映射点的方式相同。具体而言:
[0034] 假设第二面的边界点Μ坐标为(xl,yl,zl),第一面拟合平面方程为 A1X+B1Y+C1Z+D1 = 0,点Μ到第一面拟合平面的投影点为Ml(xl2,yl2,zl2),其中,常 量 T1 = -(Al*xl+Bl*yl+Cl*zl+DlV(Al*Al+Bl*Bl+Cl*Cl),则 xl2 = xl+Al*Tl,yl2 = yl+Bl*Tl,zl2 = zl+Cl*Tl,由上述公式可以计算出第二面所有边界点到第一面的投影点。 第二面的边界点和这些边界点在第一面的投影点共同组成了一个封闭的区域,该区域就是 第二面的修补区域。
[0035] 所述修补模块108用于对第一区域及第二区域进行修补。具体而言,分别将第一 区域划及第二区域分为多个小正方形(根据点云数据的点数目等属性,合理设置修补参数 进行划分),如图9所示。在每个小正方形区域内随机生成一个点,当所有小正方形内都有 一个点以后,即完成对第一区域及第二区域的修补,如图10所示所有正方形都有一个点。
[0036] 如图3所示,是本发明点云边界直角边修补方法较佳实施例的作业流程图。
[0037] 步骤S10,三角网格化模块100对待测产品的点云进行三角网格化处理,形成实体 面。具体而言,从所述待测产品的点云中任意选取距离最近的两点确定一条有效边,以此有 效边作为三角形的边;寻找该有效边附近的第三点,要求该有效边与第三点所构成三角形 的外接圆内不包含其它点,否则舍弃该点;依次选取以三角形的另外两边作为有效边,寻找 有效边附近的点,构建新的三角形,要求有效边与第三点所构成的新的三角形的外接圆内 不包含其它点,依次操作循环,直到所述点云中所有的点都被连接成三角形,达到三角网格 化的效果,形成实体面。如图4所示,假设所述点云有4个的点(实际情况点数目远大于该 值),以AB为基准边,确定另一个顶点。过三角形ABC的外接圆内不包含其他点,故C点符 合要求,而过三角形ABD的外接圆内包含点C,故舍弃D点。最终以A,B,C三点构建三角形。 按照上述操作逻辑,依次操作循环,再分别以BC边,AC边以及新构建的三角形的边为基准, 构建新的三角形,直到点云中所有的点都被连接成三角形,达到三角网格化的效果,形成实 体面。
[0038] 步骤S20,获取模块102从三角网格化处理后的点云中获取边界点。
[0039] 具体而言,所述获取边界点的方式如下:三角网格化处理后的点云全部由三角形 组成,判断一个点是否为边界点,需先找出所有以该点为顶点的三角形,依次计算每个三角 形中以该点为顶点的夹角的度数,将所有以该点为顶点的夹角度数相加,如果和为360度, 则该点不是边界点,如果和小于360度,则该点为边界点。如图5所示,图中角Ζ Α0Β、角 Z B0C、角Z C0D、角Z D0E、角Z EOF及角Z F0A相加,和等于360,所以可以判断点0不是 边界点。如图6所示,图中角Z ABS及角Z SBC相加,和小于360,所以可以判断点B就是边 界点。
[0040] 步骤S30,查找模块104查找边界点中属于第一面的边界点及边界点中属于第二 面的边界点。所述第一面与第二面为待测产品的两个衔接面。具体而言,查找边界点中属于 第一面的边界点的方式为:根据最小二乘法将第一面的点云拟合成初始平面Plane(c,v) 及计算该初始平面的法向量;根据拟牛顿算法对初始平面的法向量进行迭代得到实际旋转 工作面平面Planel (cl,vl),即虚拟平面;根据最小二乘法迭代第一面的点云相对虚拟平 面的最佳位置,该最佳位置是使得第一面的点云中的点到虚拟平面距离平方和的平均最 小(拟牛顿解非线形方程式),从而得到第一面的边界点。所述拟牛顿解非线形方程式为:
[0041 ]
[0042] 其中,(X1,Y1,Z1)为第一平面的点云中的点坐标,(X2,Y2,Z2)为虚拟平面中的坐 标。通过上述算法,得到边界点中属于第一面的边界点。查找边界点中属于第二面的边界 点的方式与查找边界点中属于第一面的边界点的方式相同。
[0043] 步骤S40,计算模块106计算第一面的边界点中每点到第二面的映射点,并形成第 一面中要修补的第一区域,及计算第二面的边界点中每点到第一面的映射点,形成第二面 中要修补的第二区域。
[0044] 计算第一面的边界点中每点到第二面的映射点的方式为:假设第一面的边界点Ρ 坐标为(XI,Yl,Ζ1),第二面拟合平面方程为AX+BY+CZ+D = 0,点Ρ到第二面拟合平面的投 影点为 PI (Χ12, Υ12, Ζ12),其中,常量 Τ = - (A*X1+B*Y1+C*Z1+D) AA*A+B*B+C*C),则 Π2 = X1+A*T,Y12 = Y1+B*T,Z12 = Z1+OT,由上述公式可以计算出第一面所有边界点到第二面 的投影点。第一面的边界点和这些边界点在第二面的投影点共同组成了一个封闭的区域, 该区域就是第一面的修补区域,如图8所示。
[0045] 计算第二面的边界点中每点到第一面的映射点的方式与计算第一面的边界点中 每点到第二面的映射点的方式相同。具体而言:
[0046] 假设第二面的边界点Μ坐标为(xl,yl,zl),第一面拟合平面方程为 A1X+B1Y+C1Z+D1 = 0,点Μ到第一面拟合平面的投影点为Ml(xl2,yl2,zl2),其中,常 量 T1 = -(Al*xl+Bl*yl+Cl*zl+DlV(Al*Al+Bl*Bl+Cl*Cl),则 xl2 = xl+Al*Tl,yl2 = yl+Bl*Tl,zl2 = zl+Cl*Tl,由上述公式可以计算出第二面所有边界点到第一面的投影点。 第二面的边界点和这些边界点在第一面的投影点共同组成了一个封闭的区域,该区域就是 第二面的修补区域。
[0047] 步骤S50,修补模块108对第一区域及第二区域进行修补。具体而言,分别将第一 区域划及第二区域分为多个小正方形(根据点云数据的点数目等属性,合理设置修补参数 进行划分),如图9所示。在每个小正方形区域内随机生成一个点,当所有小正方形内都有 一个点以后,即完成对第一区域及第二区域的修补,如图10所示所有正方形都有一个点。
[0048] 最后所应说明
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1