基于单目视觉检测零件空间位置的检测方法与流程

文档序号:23687010发布日期:2021-01-23 09:31阅读:75来源:国知局
基于单目视觉检测零件空间位置的检测方法与流程

[0001]
本发明属于机器人视觉技术领域,涉及一种基于单目视觉检测零件空间位置的检测方法。


背景技术:

[0002]
双目视觉技术已经发展几年,双目的方案,两个镜头理论上要一模一样,因为一旦存在差异,会使得测量的准确性大打折扣。双目摄像头,由于本身测距的原理,导致会要求两个镜头之间的误差越小越好。如果两个镜头各自都有5%左右的误差,那么对于后期调教的算法,难度就会加大许多,而且还不能保证确定性。双目摄像头同时也存在摆放位置的问题。两个镜头之间的距离是10~20cm之间,这个距离需要非常精准,因为这会直接关系到测距的准确性。
[0003]
传统的基于双目视觉检测技术的零件检测系统有其优点:成本低,室内外都适用等,但也有如下缺点:对环境光照非常敏感,不适用于单调缺乏纹理的场景,计算复杂度高,且相机基线限制了测量范围。由此可见,双目视觉检测技术的特征匹配较为繁琐。


技术实现要素:

[0004]
本发明的目的是解决现有技术中存在的上述问题,提供一种基于单目视觉检测零件空间位置的检测方法。本发明是对目前机械臂自动化的检测物块空间位置的模拟与实现,目的在于提供一个稳定高效的、通过单目摄像机定位被检测零件的方法,代替双目视觉繁琐的特征匹配。
[0005]
为达到上述目的,本发明采用的技术方案如下:
[0006]
基于单目视觉检测零件空间位置的检测方法,包括以下步骤:
[0007]
(1)标定并校准相机;
[0008]
相机为单目摄像机;
[0009]
(2)为图像的世界坐标的建立做准备;
[0010]
在零件所在的水平面上绘制一个十字标记,零件为立方体,且高垂直于水平面;
[0011]
(3)为图像二值化做准备;
[0012]
使用标定和校准后的相机对零件及十字标记进行拍摄,拍摄时调整拍摄角度使得零件的上表面、零件的两个侧面和十字标记同时完全呈现在图像中;
[0013]
(4)进行图像二值化;
[0014]
将步骤(3)得到的图像二值化;二值化的目的是为了简化图像处理过程与增加图像的精度;
[0015]
(5)建立图像的世界坐标;
[0016]
检测步骤(4)得到的二值化图像中十字标记的图像坐标后,将其转换为十字标记的相机坐标,再将十字标记的相机坐标转换为十字标记的世界坐标,最后结合十字标记的世界坐标和相机的标定结果建立图像的世界坐标;
[0017]
其中,将十字标记的相机坐标转换为十字标记的世界坐标采用的公式如下:
[0018][0019]
式中,x
c
、y
c
、z
c
为相机坐标;r为3
×
3矩阵,r为旋转矩阵,是x、y、z三个轴向旋转矩阵的乘积,即r=r
x
×
r
y
×
r
z
;t为3
×
1矩阵,t为平移向量,表示三个轴向上的平移距离,即t=[t
x
,t
y
,t
z
]
t
;0为(0,0,0);t上标表转置;x、y、z为世界坐标;l
w
为由旋转平移构成的一个4
×
4的矩阵;
[0020]
(6)图像边缘检测;
[0021]
对步骤(4)得到的二值化图像进行边缘检测,得到边缘直线图像;
[0022]
(7)精准检测图像中的直线;
[0023]
采用霍夫线变换由步骤(6)得到的边缘直线图像得到变换后的边缘直线图像;
[0024]
(8)获取角点的二维坐标;
[0025]
采用角点检测算法由步骤(7)得到的变换后的边缘直线图像得到零件的各个角点的二维坐标;
[0026]
(9)获取角点的三维坐标;
[0027]
将步骤(8)得到的零件的各个角点的二维坐标输入到步骤(5)得到的图像的世界坐标中,得到零件的各个角点的三维坐标,即确定零件的空间位置。
[0028]
作为优选的技术方案:
[0029]
如上所述的基于单目视觉检测零件空间位置的检测方法,还包括以下步骤:
[0030]
(10)将步骤(9)得到的零件的各个角点的三维坐标与实际三维坐标进行比较,计算误差。
[0031]
如上所述的基于单目视觉检测零件空间位置的检测方法,步骤(1)具体为:首先通过相机对标定板进行不同角度的拍摄来采集标定板图像,并从中选取多张图像,然后读取选取的图像,对图像进行角点检测,利用张正友标定法计算得到图像的旋转矩阵、平移矩阵、相机的内外参数以及畸变系数矩阵,然后根据所得的旋转矩阵、平移矩阵、相机的内外参数进行相机的标定,最后通过畸变系数矩阵对标定结果进行校正。
[0032]
如上所述的基于单目视觉检测零件空间位置的检测方法,标定板的材质为氧化铝,大小为70
×
70mm
2
;氧化铝具有表面漫反射不反光和不易热膨胀的特点,同时70
×
70mm
2
较小的面积可以使得在1m以内(贴近的实际实验中摄像头和物块的距离)仍可以使标定板在相机的视场和景深范围中拍出全貌。
[0033]
如上所述的基于单目视觉检测零件空间位置的检测方法,步骤(3)中,拍摄时采用led手电筒照射零件,led手电筒的功率为3w,led手电筒与零件的距离为1.2m。
[0034]
如上所述的基于单目视觉检测零件空间位置的检测方法,步骤(4)中采用最大类间方差方法确定最佳的灰度阈值;通过计算目标图像和背景图像之间的方差,当方差取达到最大值时找到阈值,阈值通过otsu自动阈值分割算法获得,当阈值是高于该阈值中属于目标对象的灰度值,又是低于该阈值中属于背景图像的灰度值便是最佳阈值。
[0035]
如上所述的基于单目视觉检测零件空间位置的检测方法,步骤(6)中的边缘检测采用canny算子。
[0036]
如上所述的基于单目视觉检测零件空间位置的检测方法,步骤(7)中的霍夫线变换为多尺度霍夫线变换;霍夫线变换是一种在图像中寻找直线的方法,opencv中支持三种霍夫线变换,分别是标准霍夫线变换、多尺度霍夫线变换和累计概率霍夫线变换,本发明经过对比使用的是效果更好的多尺度霍夫线变换。
[0037]
如上所述的基于单目视觉检测零件空间位置的检测方法,步骤(8)中的角点检测算法为shi-tomasi算法。
[0038]
如上所述的基于单目视觉检测零件空间位置的检测方法,步骤(10)中的误差为:零件的各个角点的x坐标或y坐标的误差绝对值小于等于2.01mm,z坐标的误差绝对值小于等于0.54mm;假设检测得到的零件的某个角点的三维坐标为(x
t
,y
t
,z
t
),而该角点的实际三维坐标为(x
a
,y
a
,z
a
),则该角点的x坐标误差绝对值=|x
t-x
a
|,该角点的y坐标误差绝对值=|y
t-y
a
|,该角点的z坐标误差绝对值=|z
t-z
a
|;本发明利用单目视觉技术检测物体的位置,实现了物块横向(x、y轴方向)检测效果比较好,减小了径向畸变,使纵向(z轴方向)检测也达到了很好的效果,实验结果表明,z坐标的误差绝对值最小,x坐标或y坐标的误差绝对值稍微大一点,但是误差的范围还是比较小的,所以可以看出本发明使检测的纵向和横向误差都实现了比较好的效果;此外,本发明使用的器材是一般性器材,针对本实验如果采用更加精密的仪器就可以实现更加好的效果,采用更加精密的镜头可以减小径向畸变。
[0039]
有益效果:
[0040]
(1)本发明利用单目视觉技术检测物体的位置,减小了物块的横向误差和纵向误差,实现了很好的物块横向检测效果和纵向检测效果;
[0041]
(2)本发明通过各种环节的技术优化实现了目前来说的最佳效果,将检测误差与实际物体的定位误差降到了最低,利用该技术可以实现立方体角点的定位,进而可以应用到立方体的拼接过程中,实现更加精准的拼接和焊接。
附图说明
[0042]
图1为基于单目视觉检测零件空间位置的检测方法的流程图;
[0043]
图2为二值化图像;
[0044]
图3为边缘直线图像;
[0045]
图4为确定角点的三维坐标后的零件图像。
具体实施方式
[0046]
下面结合具体实施方式,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
[0047]
基于单目视觉检测零件空间位置的检测方法,如图1所示,步骤如下:
[0048]
(1)标定并校准相机;
[0049]
相机为单目摄像机;
[0050]
标定和校准的具体过程为:首先通过相机对标定板(标定板的材质为氧化铝,大小为70
×
70mm
2
)进行不同角度的拍摄来采集标定板图像,并从中选取多张图像,然后读取选取的图像,对图像进行角点检测,利用张正友标定法计算得到图像的旋转矩阵、平移矩阵、相机的内外参数以及畸变系数矩阵,然后根据所得的旋转矩阵、平移矩阵、相机的内外参数进行相机的标定,最后通过畸变系数矩阵对标定结果进行校正;
[0051]
(2)为图像的世界坐标的建立做准备;
[0052]
在零件所在的水平面上绘制一个十字标记,零件为立方体,且高垂直于水平面;
[0053]
(3)为图像二值化做准备;
[0054]
使用标定和校准后的相机对零件及十字标记进行拍摄,拍摄时调整拍摄角度使得零件的上表面、零件的两个侧面和十字标记同时完全呈现在图像中,拍摄时采用led手电筒照射零件,led手电筒的功率为3w,led手电筒与零件的距离为1.2m;
[0055]
(4)进行图像二值化;
[0056]
采用最大类间方差方法确定最佳的灰度阈值,将步骤(3)得到的图像二值化;
[0057]
(5)建立图像的世界坐标;
[0058]
检测步骤(4)得到的二值化图像中十字标记的图像坐标后,将其转换为十字标记的相机坐标,再将十字标记的相机坐标转换为十字标记的世界坐标,最后结合十字标记的世界坐标和相机的标定结果建立图像的世界坐标;
[0059]
(6)图像边缘检测;
[0060]
采用canny算子对步骤(4)得到的二值化图像进行边缘检测,得到边缘直线图像;
[0061]
(7)精准检测图像中的直线;
[0062]
采用多尺度霍夫线变换由步骤(6)得到的边缘直线图像得到变换后的边缘直线图像;
[0063]
(8)获取角点的二维坐标;
[0064]
采用shi-tomasi算法由步骤(7)得到的变换后的边缘直线图像得到零件的各个角点的二维坐标;
[0065]
(9)获取角点的三维坐标;
[0066]
将步骤(8)得到的零件的各个角点的二维坐标输入到步骤(5)得到的图像的世界坐标中,得到零件的各个角点的三维坐标,即确定零件的空间位置;
[0067]
(10)计算误差;
[0068]
将步骤(9)得到的零件的各个角点的三维坐标与实际三维坐标进行比较,计算误差,实验结果表明:零件的各个角点的x坐标或y坐标的误差绝对值小于等于2.01mm,z坐标的误差绝对值小于等于0.54mm。
[0069]
现结合具体应用场景对上述方法进行说明:
[0070]
基于单目视觉检测零件空间位置的检测方法,如图1所示,步骤如下:
[0071]
(1)标定并校准相机;
[0072]
相机为单目摄像机;
[0073]
标定和校准的具体过程为:首先通过相机对标定板(标定板的材质为氧化铝,大小为70
×
70mm
2
)进行不同角度的拍摄来采集标定板图像,并从中选取多张图像(在拍取30张标定板的图片之后,选择13张角度差别较大的,并且角点可以清晰可见的图片进行标定,将
这几张图片统一的命名保存在程序的根目录里面,然后在根目录里面创建一个txt文件,将图片的链接输入其中),然后读取选取的图像(在opencv中会依次的读取10张指定照片,接着会对图片的大小进行分析,由于事先挑选好图片,所以每一张的图片都可以检测出事先设定好的角点数量,否则会直接出错),对图像进行角点检测(处理图像的个数为10,实现输入内部角点的横纵数量,角点的横纵数量应该是一奇一偶,不然无法确定纵横关系,接着会依次弹出10幅图,在每幅标定图像中,用会用红绿两种颜色圈出检测出来的角点),利用张正友标定法计算得到图像的旋转矩阵、平移矩阵、相机的内外参数以及畸变系数矩阵,然后根据所得的旋转矩阵、平移矩阵、相机的内外参数进行相机的标定,最后通过畸变系数矩阵对标定结果进行校正(在标定好结果之后可以通过利用projectpoints()函数对空间的三维点进行重新投影计算,得到校正之后的点坐标,这个坐标可以与之前得到的亚像素坐标进行比对并计算偏差,偏差越小代表校正的结果也就越正确,同时生成标定后的图片可以直观的看到校正之后的结果);
[0074]
(2)为图像的世界坐标的建立做准备;
[0075]
在零件所在的水平面上绘制一个十字标记(十字标作为特征线,用于定位零件下平面的3个点),零件为立方体,且高垂直于水平面,使得零件下平面的三个点可以作为上平面定位时的特征点;为了简化图像处理过程与增加图像的精度,实验过程中选择的具有鲜艳颜色的小木块作为零件,同时将其放在白色的背景之上;
[0076]
(3)为图像二值化做准备;
[0077]
使用标定和校准后的相机对零件及十字标记进行拍摄,拍摄时调整拍摄角度使得零件的上表面、零件的两个侧面和十字标记同时完全呈现在图像中,拍摄时采用led手电筒照射零件,led手电筒的功率为3w,led手电筒与零件的距离为1.2m,照射角度为45
°

[0078]
(4)进行图像二值化;
[0079]
采用最大类间方差方法(otsu)确定最佳的灰度阈值,将步骤(3)得到的图像二值化,得到的二值化图像如图2所示;
[0080]
(5)建立图像的世界坐标;
[0081]
检测步骤(4)得到的二值化图像中十字标记的图像坐标后,将其转换为十字标记的相机坐标,再将十字标记的相机坐标转换为十字标记的世界坐标,最后结合十字标记的世界坐标和相机的标定结果建立图像的世界坐标;
[0082]
(6)图像边缘检测;
[0083]
采用canny算子对步骤(4)得到的二值化图像进行边缘检测,得到如图3所示的边缘直线图像;
[0084]
(7)精准检测图像中的直线;
[0085]
采用多尺度霍夫线变换由步骤(6)得到的边缘直线图像得到变换后的边缘直线图像;
[0086]
(8)获取角点的二维坐标;
[0087]
采用shi-tomasi算法(辅助opencv视觉库里的cv.goodfeaturestotrack()函数)由步骤(7)得到的变换后的边缘直线图像得到零件的各个角点的二维坐标;
[0088]
(9)获取角点的三维坐标;
[0089]
将步骤(8)得到的零件的各个角点的二维坐标输入到步骤(5)得到的图像的世界
坐标中,得到零件的各个角点的三维坐标,如图4所示,即确定零件的空间位置;
[0090]
(10)计算误差;
[0091]
将步骤(9)得到的零件的各个角点的三维坐标与实际三维坐标进行比较,计算误差,实验结果如表1所示,表中误差绝对值1~5为多次实验得到的角点的三维坐标与实际三维坐标的误差绝对值。
[0092]
表1
[0093][0094][0095]
本发明虽然可以直接通过摄像头进行图像的提取的使用,但实验的本质是单目视觉的单帧检测,而非单目视觉的多帧检测,所以通过事先拍摄好的照相再进行标定,可以最大限度地减轻外界环境带来的干扰,本实验调用的balser相机驱程,可以方便地进行图片保存,单帧采集的图像保存至计算机事先划分好的盘符中保存,并在之后可以为opencv进行调用。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1