本发明属于相机标定技术领域,具体涉及标定板、基于编码定义的九点标定物体抓取方法及系统。
背景技术:
在机器视觉的应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。目前常见的标定分为相机参数的标定与相机和机械手之间的标定,而九点标定就是直接建立相机和机械手之间的坐标变化关系,让机械手末端去走这九个点在机器人坐标系中的坐标,因此需要用相机识别九个点得到像素坐标,由于工业上对这九个点的输出存在无序,导致机械手识别与抓取时出现乱序。
技术实现要素:
针对现有技术中的缺陷,本发明提供标定板、基于编码定义的九点标定物体抓取方法及系统,根据编码有序输出九点坐标,使得机械手对目标的抓取和识别更为精准有序。
第一方面,一种标定板,
所述标定板被若干条平行的垂直线和若干条平行的水平线分割成多个方格,方格颜色为黑色或白色;所述标定板上设有9个标识区域,其中每个标识区域由若干个黑色方格和若干个白色方格构成不同的图案,每个识别区域设有多个标识不同方向的编码;
标定板中除标识区域以外的方格中,相邻的方格颜色不同。
第二方面,一种基于编码定义的九点标定物体抓取方法,包括以下步骤:
获取相机拍摄第一方面所述标定板得到的标定图像;
对所述标定图像进行标定,得到基于相机坐标系的像素坐标;
将机械手末端分别移动到标定板中9个标识区域中的目标点,以获得与9个标识区域中目标点对应的基于机械手坐标系的机械手坐标;
根据所述像素坐标和机械手坐标求解旋转矩阵和位移矩阵;
获取相机拍摄待抓取物体的相机图像,获取相机图像中基于相机坐标系的像素坐标;
根据得到的旋转矩阵和位移矩阵将相机图像中像素坐标转换为机械手坐标;
根据所述机械手坐标控制机械手抓取待抓取物体。
优选地,所述对所述标定图像进行标定具体包括:
识别出标定图像中的垂直线和水平线;
根据识别区域的编码识别出标定图像上标识区域中目标点;
根据得到的目标点进行标定。
优选地,所述识别出标定图像中的垂直线和水平线具体包括:
根据标定图像生成x方向梯度图像、y方向梯度图像和旋转角度;
根据所述旋转角度求出对应的旋转向量;利用旋转向量,将所述x方向梯度图像上的点投影到y方向上,将所述y方向梯度图像上的点投影到x方向上,分别获得x方向投影点坐标值和y方向投影点坐标值,从所述x方向投影点坐标值和y方向投影点坐标值筛选出第一目标投影点,进行第一次拟合;
从经过第一次拟合得到的第一直线中筛选出第二目标投影点,进行二次拟合,识别出标定图像中的所述垂直线和水平线。
优选地,所述旋转角度包括x方向旋转角度和y方向旋转角度;
所述根据标定图像生成x方向梯度图像、y方向梯度图像和旋转角度具体包括:
获取所述标定图像对应的二维函数,对所述二维函数分别进行x方向和y方向上的求导,获得所述x方向梯度图像和y方向梯度图像;
执行旋转角度步骤,生成x方向旋转角度和y方向旋转角度,当x方向旋转角度和y方向旋转角度相差没有落入预设的重新生成阈值范围内时,删除得到的x方向旋转角度和/或y方向旋转角度,重新执行旋转角度步骤,生成x方向旋转角度和/或y方向旋转角度,直至生成差值落入重新生成阈值范围内的x方向旋转角度和y方向旋转角度;
所述旋转角度步骤包括:获取所述x方向梯度图像中像素值位于预设梯度范围内像素点的角度值,统计每个像素点对应的角度值的累计数量,定义累计数量最高的像素点对应的角度值为x方向旋转角度;获取所述y方向梯度图像中像素值位于所述梯度范围内像素点的角度值,统计每个像素点对应的角度值的累计数量,定义累计数量最高的像素点对应的角度值为y方向旋转角度。
优选地,所述从所述x方向投影点坐标值和y方向投影点坐标值筛选出第一目标投影点具体包括:
对所述x方向投影点坐标值和y方向投影点坐标值进行统计,以获得x方向直方图和y方向直方图;
分别运用预设的平滑矩阵对所述x方向直方图和y方向直方图进行平滑处理,根据平滑处理结果分别提取出x方向和y方向上每个周期下的极大值,对得到的所述极大值进行筛选后,定义筛选后得到的极大值对应的投影点为所述第一目标投影点;
对筛选出来的极大值进行分析,统计相邻两个极大值之间的像素长度,提取出现次数最多的像素长度,定义为标准间距值。
优选地,所述进行第一次拟合具体包括:
分别获取x方向上和y方向上第一目标投影点对应的原始坐标点;
分别根据所述原始坐标点拟合得到所述x方向上的第一直线和y方向上的第一直线。
优选地,所述从经过第一次拟合得到的第一直线中筛选出第二目标投影点,进行二次拟合,识别出标定图像中的所述垂直线和水平线具体包括:
对所述第一直线进行修正,计算第一目标投影点对应的原始坐标值与修正后的第一直线的距离,根据得到的距离从第一目标投影点中筛选出x方向上和y方向上第二目标投影点;
分别获取x方向上和y方向上第二目标投影点对应的原始坐标值;
分别根据所述原始坐标值拟合得到所述垂直线和水平线。
优选地,所述根据识别区域的编码识别出标定图像上标识区域中目标点具体包括:
根据预设的直线交点计算公式计算标定图像的交点坐标;
根据相邻交点之间的坐标差定义每个方格;
设定一个与标识区域大小相同的滑动窗口,利用所述滑动窗口在所述标定图像中滑动,根据连续颜色相同的方格个数识别出标识区域对应的编码,依次输出标识区域的目标点。
第三方面,一种基于编码定义的九点标定物体抓取系统,包括:
相机:用于进行拍摄,并拍摄后得到的图像传输给标定设备;
标定设备:用于获取相机拍摄权利要求1所述标定板得到的标定图像;对所述标定图像进行标定,得到基于相机坐标系的像素坐标;根据九个目标点的像素坐标和与九个目标点对应的机械手坐标求解旋转矩阵和位移矩阵;标定设备还用于获取相机拍摄待抓取物体的相机图像,获取相机图像中基于相机坐标系的像素坐标;根据得到的旋转矩阵和位移矩阵将相机图像中像素坐标转换为机械手坐标,将该机械手坐标传输给机械手;
机械手:其末端当移动到标定板中9个标识区域中的目标点时,获得与9个标识区域中目标点对应的基于机械手坐标系的机械手坐标,并将该机械手坐标传输给标定设备;机械手还用于根据标定设备下发的所述机械手坐标抓取待抓取物体。
由上述技术方案可知,本发明提供的标定板,标定板上标识区域内包含了由一定数量的黑色方格和白色方格组成的不同形状,对标识区域进行编码时,可以根据方向进行编码。
方法及系统基于不同形状编码提取目标点,利用定义的编码,在相机坐标系中确定九点的坐标位置,可以实现对图像中九个目标点精准有序的输出,同时计算得到图像dpi,使得机械手对目标的抓取和识别更为精准有序。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。
图1为本发明实施例二提供的物体抓取方法的流程图。
图2为本发明实施例三提供的标定方法的流程图。
图3中(a)、(b)、(c)和(d)为本发明实施例三提供的标定板在4个方向上的标定图像。
图4中(a)、(b)、(c)和(d)为本发明实施例三提供的标定图像在4个方向上经过第一拟合后得到的水平方向的直线,(e)、(f)、(g)和(h)为本发明实施例三提供的标定图像在4个方向上经过第一拟合后得到的直线。
图5中(a)、(b)、(c)和(d)为本发明实施例三提供的标定图像在4个方向上经过第二拟合后得到的水平方向的直线,(e)、(f)、(g)和(h)为本发明实施例三提供的标定图像在4个方向上经过第二拟合后得到的直线。
图6中(a)、(b)、(c)和(d)为本发明实施例三提供的标定图像在4个方向上经过目标点坐标提取及编码后得到的示意图。
具体实施方式
下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
实施例一:
一种标定板,所述标定板被若干条平行的垂直线和若干条平行的水平线分割成多个方格,方格颜色为黑色或白色;所述标定板上设有9个标识区域,其中每个标识区域由若干个黑色方格和若干个白色方格构成不同的图案,每个识别区域设有多个标识不同方向的编码;
标定板中除标识区域以外的方格中,相邻的方格颜色不同。
具体地,标定板可以是方格数为30*42、且间隔交错设置有黑色方格和白色方格,标识区域可以是方格数为6*6的区域,标识区域内包含了由一定数量的白色方格组成的不同形状,对标识区域进行编码时,可以根据方向进行编码,例如每个标识区域针对4个方向设有4个编码。
实施例二:
一种基于编码定义的九点标定物体抓取方法,参见图1,包括以下步骤:
s1:获取相机拍摄上述标定板得到的标定图像;
s2:对所述标定图像进行标定,得到基于相机坐标系的像素坐标;
s3:将机械手末端分别移动到标定板中9个标识区域中的目标点,以获得与9个标识区域中目标点对应的基于机械手坐标系的机械手坐标;
s4:根据所述像素坐标和机械手坐标求解旋转矩阵和位移矩阵;相机标定过程主要是为了求解相机内外参,外参即旋转矩阵和位移矩阵构成的参数矩阵。
s5:获取相机拍摄待抓取物体的相机图像,获取相机图像中基于相机坐标系的像素坐标;
s6:根据得到的旋转矩阵和位移矩阵将相机图像中像素坐标转换为机械手坐标;
s7:根据所述机械手坐标控制机械手抓取待抓取物体。
具体地,该方法根据标定板中标识区域的编码得到其对应的目标点,并使其具有顺序地输出,同时计算dpi(每英寸的像素数)。转换为表达式如下:
其中di为编码,当编码匹配时输出目标点
将相机坐标系的像素坐标转换为对应的机械手坐标,实现相机坐标系向机械手坐标系的转换。变换矩阵如下:
[x′iy′i]t=r*[xiyi]t+t
其中x′i,y′i分别表示机械手坐标,xi,yi分别表示像素坐标,r表示旋转矩阵,t表示位移矩阵。
该方法基于不同形状编码提取目标点,利用定义的编码,在相机坐标系中确定九点的坐标位置,可以实现对图像中9个目标点精准有序的输出,同时得出机械手坐标和图像dpi,使得机械手对目标的抓取和识别更为精准有序。
本发明实施例所提供的方法,为简要描述,实施例部分未提及之处,可参考前述产品实施例中相应内容。
实施例三:
实施例三在实施例二的基础上,还增加了以下内容:
参见图2,该方法步骤具体为:
s11:生成梯度图像及旋转角度。
参见图3,假设标定图像的二维函数为f(x,y),则对应像素点(i,j)的像素值可以表示为pf(i,j),对应x方向梯度图像可以表示为gx,y方向梯度图像可以表示为gy,最终梯度图像为
定义算子核分别如下:
二维函数的偏微分方程计算公式如下:
由于f(x,y)是根据像素点来离散表示的二维函数,因此结合算子核可以得到gx和gy分别为:
根据幅角tθ的范围,采用直方图统计像素点(i,j)对应的像素值qij,设置梯度范围qij∈[100,255]对应的角度值tij的累计数量为nθ,则:
nθ={tij=θ,qij∈[100,255]}+nθ;
其中,θ∈[0,180],i∈[0,w],j∈[0,h],w为图像的宽度,h为图像的高度。
根据直方图搜索最大的nθ对应的θ值,将其作为x方向旋转角度
其中若得到的x方向旋转角度和y方向旋转角度相差落入重新生成角度范围(80度-100度)时,则求解正确。即对x方向旋转角度和y方向旋转角度的结果进行判断,若
s12:生成第一目标投影点。
生成第一目标投影点主要是为了将x方向旋转角度上每条直线投影到y方向旋转角度的方向向量上,以此得到x方向旋转角度上每条直线对应的投影坐标点ptx;同理,将y方向旋转角度上每条直线投影到x方向旋转角度的方向向量上,以此得到y方向旋转角度上每条直线对应的投影坐标点pty。
根据理想情况下的投影结果,可以知道第一目标投影点之间的距离du应该具有一定周期性,但是实际情况存在噪声和设备等外界因素的影响,因此需要对第一目标投影点形成的直方图进行高斯平滑处理,使得一个大概的周期内一定会出现一个极大值,此时的极大值就是第一目标投影点pt,具体步骤为:
根据角度ax和ay,求出对应的旋转向量v分别如下:
设筛选第一目标投影点的像素值区间qij∈[150,255],角度区间为θ∈[a-90-4,a-90+4]。
根据投影坐标点ptx和pty,结合旋转向量,得出投影点坐标转换公式如下:
其中,x、y为原始坐标值,px、py分别为投影后的坐标值。
对投影坐标点pt(pxi,pyj)的坐标值pxn采用直方图统计,然后运用高斯平滑对直方图进行平滑处理,公式如下:
其中,f[i]={0.0536,0.1232,0.2032,0.2400,0.2032,0.1232,0.0536},n∈[0,w*h],w为图像的宽度,h为图像的高度。
根据直方图平滑处理结果,判断pxn的值是否满足条件pxn>pxn-1、pxn>pxn+1、pxn>pxn-2和pxn>pxn+2,若满足条件,则输出pxn的值作为极大值
判断理想情况下的极大值结果可知,筛选出来的极大值个数应该与标定图像中直线个数相同,因此需要对极大值结果进行删除操作,具体步骤如下:
当水平放置图像时,对图像每一方格的像素长度测量得到lm≈16,但是当图像存在一定倾斜角度时,直线段会发生一定程度的形变,因此定义图像每一方格最小像素长度为lmin=11,最大像素长度lmax=20。判断
s13:第一次拟合。
参见图4,标定图像f(x,y)是根据像素点来离散表示的二维函数,且直线段过长时存在形变,因此对筛选出来的第一目标投影点进行第一次拟合,得到部分拟合较好的直线段,为后续第二次拟合打下基础。
跟据极大值筛选结果
遍历x方向上的第一目标投影点的坐标值px,选择坐标区间为
对pzx中的数据进行随机选取,将其分为10组随机数据,进行一次拟合,生成10条拟合的直线,计算pzx中数据到10条直线的距离ds,选择ds∈[0,1]的投影点,并统计每条直线中ds数据最多时对应的直线ldx。同理得到直线ldy。
其中距离公式为:
对目标点pzx再次计算投影点到直线ldx的距离ds,选择ds∈[0,4]的投影点进行拟合,并迭代拟合5次生成输出直线
s14:二次拟合。
参见图5,设第一次拟合所得直线为lzx:a1x+b1y+c1=0,lzy:a2x+b2y+c2=0。如果在理想情况下同一方向的直线应该平行,既存在关系
定义前半部分的区间为
定义后半部分的区间为
再次重新筛选目标投影点,根据投影坐标点值px,选择区间为
根据最小二乘法对目标投影点pz再次拟合,得到最终直线lz。
对x方向和y方向分别采用上述操作完成修正拟合,定义最终所得直线个数分别为nx和ny。
s15:目标点坐标提取及编码。
参见图6,设修正拟合所得直线为lzx:a1x+b1y+c1=0,lzy:a2x+b2y+c2=0,根据最小二乘法拟合得到的输出可以得到a1=a2=-r1、b1=b2=r0、c1=-(r2*a1+r3*b1)和c2=-(r2*a2+r3*b2)。根据标定板对原始图像中黑白方格的设定,使得图像中具有九块大小相同的标识区域,标识区域中所属白色方格形状不一,如果进行编码定义,则可以得到九种不同的3*3编码,根据编码就可以得到所需目标点dn。由于标定板放置具有四种方向,且每一种放置方向具有九种不同的3*3编码,因此为避免坐标点提取重叠,定义起始点坐标编码如下:
具体步骤如下:
定义两方向直线的交点坐标为pij(u,v),交点坐标计算公式如下:
其中i∈[1,nx-1]、j∈[1,ny-1]。
对图像进行二值化处理,得到像素值只有0和255的图像,根据计算公式求出两方向直线的交点坐标pij(u,v),称其为交点坐标。
从第一个交点开始遍历图像,计算每一块小方格的像素值,统计方格中连续像素值为255的方格个数np,若np<(lg-4)2,则定义此方格编码为0,否则为1,同时方格编码也对应此时的交点坐标pij(u,v),需要注意由于直线存在形变,导致每块区间大小不一样,因此需要通过交点坐标来定义每块区域,既u∈[uij,ui(j+1)],v∈[vij,v(i+1)j]。该方法采用标识区域中黑色方格连续的个数以及黑色白色方格连续的个数为特征,便于寻找标识区域。
再次从第一个交点进行搜索,定义方格数为6*6大小的滑动窗口wuv进行搜索,具体步骤如下:
定义黑色目标区域的判断条件如下:
w0v=w1v={[0,0,0,0,0],v<6}||w4v=w5v={[0,0,0,0,0],v<6};
w0v=w1v={[1,1,0,0,0],v<6}||w4v=w5v={[1,1,0,0,0],v<6};
当窗口滑到黑色目标区域时进行编码判断,编码与标识区域一一对应,当为所需编码时进行坐标提取,输出目标点坐标为p(u+3,v+3),由于起始点编码始终定义为d0,因此根据编码按照一定顺序输出目标点坐标p(u+3,v+3)。
根据图3中的(a)定义编码如下:
跟据图3中的(b)定义编码如下:
跟据图3中的(c)定义编码如下:
跟据图3中的(d)定义编码如下:
s16:坐标系转换。
生成目标点p(u+3,v+3)对应的是相机坐标系下的像素坐标值,而九点手眼标定需要得到是机械手坐标系中机械手的坐标值,因此需要进行坐标系转换。在实际操作中,相机识别到目标在图像中的像素坐标,通过标定好的坐标转换矩阵将像素坐标变换到机械手的空间坐标系,从而控制机械手到达指定位置。具体包括:
坐标点变换矩阵如下:
[x′iy′i]t=r*[xiyi]t+t;
转换为公式表示如下:
x′i=a1xi+b1yi+c1;
y′i=a2xi+b2yi+c2;
其中x′i,y′i分别表示机械手坐标,r表示旋转矩阵,t表示位移矩阵根据3个标定点求解标定矩阵,示例如下:
转换为矩阵表达如下:
本发明实施例所提供的方法,为简要描述,实施例部分未提及之处,可参考前述方法实施例中相应内容。
实施例四:
一种基于编码定义的九点标定物体抓取系统,包括:
相机:用于进行拍摄,并拍摄后得到的图像传输给标定设备;
标定设备:用于获取相机拍摄权利要求1所述标定板得到的标定图像;对所述标定图像进行标定,得到基于相机坐标系的像素坐标;根据九个目标点的像素坐标和与九个目标点对应的机械手坐标求解旋转矩阵和位移矩阵;标定设备还用于获取相机拍摄待抓取物体的相机图像,获取相机图像中基于相机坐标系的像素坐标;根据得到的旋转矩阵和位移矩阵将相机图像中像素坐标转换为机械手坐标,将该机械手坐标传输给机械手;
机械手:其末端当移动到标定板中9个标识区域中的目标点时,获得与9个标识区域中目标点对应的基于机械手坐标系的机械手坐标,并将该机械手坐标传输给标定设备;机械手还用于根据标定设备下发的所述机械手坐标抓取待抓取物体。
系统基于不同形状编码提取目标点,利用定义的编码,在相机坐标系中确定九点的坐标位置,可以实现对图像中9个目标点精准有序的输出,同时计算得到图像dpi,使得机械手对目标的抓取和识别更为精准有序。
本发明实施例所提供的系统,为简要描述,实施例部分未提及之处,可参考前述方法实施例中相应内容。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。