为了保证螺柱焊接时,螺柱焊接位置和螺柱所在凸台偏差太远带来的抱怨,打算采用图像识别的方法识别螺柱在所焊接凸台位置是否居中;
通过计算凸台圆弧的圆心和螺柱的圆心偏差来判断螺柱是否在凸台的中心,分以下几个步骤来处理:
(1)原始图片降采样
原始图片太大,噪点多,带不动;
(2)采用基于梯度的图像边界检测方法查出钣金凸台的轮廓及螺柱轮廓
在这一步先要把图像转换成灰度图;
检测边缘的主要依据是灰度在两个方向上的一阶或二阶导数,即灰度一阶导数为极值或二阶导数为过零点,检测的结果生成二值图;
(3)基于霍夫变换的圆弧识别
为了根据边界图像得到凸台圆弧的圆心和螺柱的圆心,需要用到霍夫变换;
在计算圆心和半径时,霍夫变换把边界图像中的所有点(x0,y0)映射到以圆心坐标(a,b)和半径r的参数空间中,在参数空间中以(x0,y0)为圆心,历遍r为半径画圆;
若边界图像中存在圆弧(圆心为(a0,b0)),其上的点为(x0,y0)(x1,y1)...半径为r0,则这些点在参数空间中画的所有圆,在半径为r0,(a0,b0)的位置相交;
(4)依据圆弧圆心和半径,判断螺柱是否在钣金凸台中间
想是这么想的,直到这个时候发现凸台的特征是准确清晰的,但是螺柱计算存在偏差,回头才发现二值图中小圆弧是油污的灰烬。。。
且螺柱的边缘识别不准确。。。
To be continued。。。
二更,昨天图像横纵坐标弄错了。。。螺柱圆弧识别Get!
重新调整图像像素,重算一遍;
根据实物图,凸台外圆半径认为是21mm,对应大圆检测的半径为150像素,即1像素对应空间距离为0.14mm
霍夫空间中计算所得的大圆圆心位置为(165,168),大圆半径150像素;小圆圆心为(173,155),半径为34像素;可计算螺柱中心和凸台中心偏差距离为2.14mm。