本发明属于机器视觉,特别是涉及一种3d孔洞姿态快速求取方法。
背景技术:
1、机器视觉是人工智能正在快速发展的一个分支。简单说来,机器视觉就是用机器代替人眼来做测量和判断。机器视觉系统是通过机器视觉产品将被摄取目标转换成图像信号,传送给专用的图像处理系统,得到被摄目标的形态信息,根据像素分布和亮度、颜色等信息,转变成数字化信号,图像系统对这些信号进行各种运算来抽取目标的特征,进而根据判别的结果来控制现场的设备动作。
2、随着3d机器视觉应用的不断增长,在实际项目中常常遇见在工件某个平面上的圆型孔洞中心的3d姿态求取用于引导机器人对圆孔打磨、中心定位进行铆压等。使用基于点云的传统找孔洞算法处理时间和检测精度不能满足工业在线检测的要求。
技术实现思路
1、本发明主要解决的技术问题是提供一种3d孔洞姿态快速求取方法,快速准确的求取工件上圆形孔洞的姿态,弥补直接在点云中求取3d圆孔姿态的时间效率和精度问题。
2、为解决上述技术问题,本发明采用的一个技术方案是:一种3d孔洞姿态快速求取方法,包括以下步骤:
3、s1:为了快速实现孔洞3d姿态计算用到的数据,输入3d传感器反射图和有序点云两重格式数据,通过算法参数输入特定区域,提取输入区域中的点云数据通过最小二乘法拟合平面方程ax+by+cz+d=0,ax+by+cz+d=0中参数a,b,c,d是描述平面空间特征的常数,其中(a,b,c)可以是一组平面的法向量,d用于确定唯一的平面;
4、s2:点云映射到提取平面上生成2d的zmap图像:通过s1求取的平面方程计算平面的单位法向量在s1求取的平面任意取两点pa和pb计算单位向量求得从而得到从原点云到平面pa点的旋转平移变换矩阵,pa点作为新变换后的原点用向量表示为则旋转平移矩阵表示为通过rt矩阵对原始点云进行刚体变换后生成新的点云数据,然后将变换后的点云沿着z方向映射成16位的2d的zmap图像;
5、s3:使用传统2d视觉算法找圆算法提取圆心(ox,oy);
6、s4:将2d图像上找到的圆心坐标转换到原来点云坐标系的3d姿态,变换后的点云圆孔所在的平面为零平面,则圆心的坐标为(ox,oy,0),通过rt矩阵进行逆变换后坐标为(x,y,z)用向量表示成从而求得圆孔在原始点云坐标系的3d姿态为
7、进一步地说,在步骤s1中,3d传感器可以输出2d反射图和3d有序点云,提取平面的算法输入区域可以在2d反射图像通过编辑框选择,在有序点云对应位置直接提取对应的3d点来拟合平面从而加快平面提取步骤的速度。同时考虑到在工业检测现场产品来料位置相对3d传感器的位置变化较大时可以通过2d反射图匹配产品固定的特征来自动调整提取平面输入区域的位置,从而来满足算法适应更多的应用场景。
8、进一步地说,在步骤s2中,在建立以步骤s1求取平面为零平面的坐标系时,新坐标选择合适规则从而保证重新生成2d的zmap图位置相对稳定。新坐标系建立取步骤s1求取的平面方程和3d传感器视野的中垂线相交点作为坐标系原点,x轴选择向量作为坐标系,z轴选择步骤s2求取平面的法向量方向,通过x轴和z轴方向单位向量叉乘得到向量作为y轴。
9、进一步地说,在步骤s2中,在转换后的点云生成zmap图像时在z方向可能出现多个点在投影到x和y平面时通过算法输入参数选择保留需要的点。
10、进一步地说,在步骤s2中,单位法向量单位向量
11、进一步地说,在步骤s2中,新坐标系下生成的zmap图像时通过x偏移(x_offset)、y偏移(y_offset)、z偏移(z_offset)、x缩放(x_radio)、y缩放(y_radio)、z缩放(z_radio)六个变量和16位zmap图像来表示3d空间数据。
12、进一步地说,在步骤s3中,在zmap图像可以通过多种传统视觉算法提取边缘点,经过坐标变换后的点云重新生成的zmap图像圆孔所在平面的阈值相对固定,通过传统视觉blob算法提取圆孔边缘点,同时可以通过传统2d机器视觉圆型卡尺工具提取圆孔的边缘点,提取边缘点后在对提取到的边缘点在进行拟合圆算法求解出圆心坐标(ox,oy)。
13、进一步地说,在步骤s4中,在实际应用如果圆形孔洞的坐标刚好在平面上在对应新坐标系的三维坐标为(ox*x_radio+x_offset,oy*y_radio+y_offset,0),若是需要圆形孔洞凸起或者凹陷的圆心姿态则可以通过步骤s3寻找的边缘点周围通过插值算法提取对应的灰度值value,从而得到三维坐标(ox*x_radio+x_offset,oy*y_radio+y_offset,value*z_radio+z_offset),然后通过步骤2求解rt矩阵的逆运算得到圆孔在原始点云的三维姿态。
14、本发明的有益效果至少具有以下几点:
15、本发明可以根据工业应用场景对算法进行简单的参数输入后,快速准确的求取工件上圆形孔洞的姿态,弥补直接在点云中求取3d圆孔姿态的时间效率和精度问题;
16、本发明将2d图像上找到圆孔的二维坐标变换成原始点云上的3d圆孔姿态,可以解决工业应用中工件平面上的圆孔定位用于引导打磨、抓取等一类问题。
1.一种3d孔洞姿态快速求取方法,其特征在于:包括以下步骤:
2.根据权利要求1所述的3d孔洞姿态快速求取方法,其特征在于:在步骤s1中,3d传感器可以输出2d反射图和3d有序点云,提取平面的算法输入区域可以在2d反射图像通过编辑框选择,在有序点云对应位置直接提取对应的3d点来拟合平面从而加快平面提取步骤的速度。
3.根据权利要求1所述的3d孔洞姿态快速求取方法,其特征在于:在步骤s2中,新坐标系建立取步骤s1求取的平面方程和3d传感器视野的中垂线相交点作为坐标系原点,x轴选择向量作为坐标系,z轴选择步骤s2求取平面的法向量方向,通过x轴和z轴方向单位向量叉乘得到向量作为y轴。
4.根据权利要求1所述的3d孔洞姿态快速求取方法,其特征在于:在步骤s2中,在转换后的点云生成zmap图像时在z方向可能出现多个点在投影到x和y平面时通过算法输入参数选择保留需要的点。
5.根据权利要求1所述的3d孔洞姿态快速求取方法,其特征在于:在步骤s2中,单位法向量单位向量
6.根据权利要求3所述的3d孔洞姿态快速求取方法,其特征在于:在步骤s2中,新坐标系下生成的zmap图像时通过x偏移(x_offset)、y偏移(y_offset)、z偏移(z_offset)、x缩放(x_radio)、y缩放(y_radio)、z缩放(z_radio)六个变量和16位zmap图像来表示3d空间数据。
7.根据权利要求1所述的3d孔洞姿态快速求取方法,其特征在于:在步骤s3中,在zmap图像可以通过多种传统视觉算法提取边缘点,经过坐标变换后的点云重新生成的zmap图像圆孔所在平面的阈值相对固定,通过传统视觉blob算法提取圆孔边缘点,同时可以通过传统2d机器视觉圆型卡尺工具提取圆孔的边缘点,提取边缘点后在对提取到的边缘点在进行拟合圆算法求解出圆心坐标(ox,oy)。
8.根据权利要求1所述的3d孔洞姿态快速求取方法,其特征在于:在步骤s4中,在实际应用如果圆形孔洞的坐标刚好在平面上在对应新坐标系的三维坐标为(ox*x_radio+x_offset,oy*y_radio+y_offset,0),若是需要圆形孔洞凸起或者凹陷的圆心姿态则可以通过步骤s3寻找的边缘点周围通过插值算法提取对应的灰度值value,从而得到三维坐标(ox*x_radio+x_offset,oy*y_radio+y_offset,value*z_radio+z_offset),然后通过步骤2求解rt矩阵的逆运算得到圆孔在原始点云的三维姿态。