基于OpenCv的机器人手眼标定(九点标定法)
对于初学者而言,对相机的标定经常模糊不清。不知道机器坐标与相机坐标如何转换,两个坐标系又是如何建立? 我们通常是利用张氏标定法,针对于相机的畸变进行标定,利用校正得到的参数对图形进行处理后再呈现出来。这个方法网上用的人很多,资料也较为全面。这里就不做说明了。本文主要是针对机械手的手眼标定,一般而言目前相机的畸变较小,精度也较为准确,使用该方法进行标定也能得到较好的效果。 首先,对于九点标定而言。我们使用到的是OpenCv中的 estimateRigidTransform 函数。 函数定义如下: Mat estimateRigidTransform(InputArraysrc,InputArraydst,boolfullAffine) 前两个参数,可以是 :src=srcImage (变换之前的图片Mat) dst=transImage(变换之后的图片Mat) 也可以: src=array(变换之前的关键点Array) dst=array(变换之后的关键点Array) 第三个参数: 1(全仿射变换,包括:rotation, translation, scaling,shearing,reflection) 其主要原理为:如果我们有一个点变换之前是[x,y,1],变换后是[x’,y’,1] 则fullAffine表示如下: TX=Y 展开后表示 如果我们想求这【a-f】