基于摄像头的目标跟踪系统设计.doc
****大学第九届智能控制设计大赛论文 队名 队员 时间 组别 基于摄像头的目标跟踪系统 目录 一、绪论3 二、设计要求3 三、方案比较与选择5 四、摄像机标定5 五、物体识别9 六、三维坐标的计算11 七、总结 论文关键词双目视觉,摄像机标定,特征提取,视差,opencv 一 绪论 众所周知,人类通过各种感官来感知世界,而视觉在其中扮演者举足轻重的角色,我们所获得的信息有80来源于视觉。当下,机器人的研发已经成为潮流,机器人与外界的信息交互方式也多种多样,而人们对机器视觉更是怀有极大的期待。一旦机器人拥有的视觉功能,将会更好的工作于一些危险,或者人类难以触及的地方,也可以更大的提高生产效率和生产的自动化程度。随着计算机计算功能的提高,使计算量浩大的图像处理成为可能,促进了机器视觉的进一步发展. 二 方案的比较与选择 (1) 摄像机标定方式的选择 方案一opencv自带函数的标定 方案二matlab标定工具 比较据大神所说,matlab标定的结果会准确一点,而且matlab 标定简单易操作。 (2) 乒乓球识别方法 方案一转化为灰度图后,再用霍夫圆变换 方案二通过颜色空间进行筛选识别 比较对于霍夫圆变换而言,灰度图的噪声较多,影响识别,而通 过颜色空间进行筛选能够达到更好的效果。 四 摄像机的标定 (1) 摄像机模型 对于假想的针孔摄像机,从针孔到屏幕的距离就是焦距。如图,f是摄像头的焦距,Z是摄像机到物体的距离,X是物体长度,x是图像平面上的物体图像,其数值可以通过三角形-x/fX/Z得到。 实际上,成像仪的中心通常不在光轴上,我们因此引入两个新的参数Cx和Cy,对可能的偏移进行建模。这样物理世界中的点Q,其坐标为(X,Y,Z,以某些偏移的方式投影为点(Xscreen,Yscreen,如下所示 XscreenfxX/ZCx, YscreenfyY/ZCy 注意焦距fx实际上是透镜的物理焦距长度与成像仪每个单元尺寸Sx(单位是像素/每毫米)的乘积。同样的道理也适用于fy与Sy 2 基本投影几何 我们将定义摄像机的参数(如fx,fy,Cx和Cy重新排列为一个3*3的矩阵,该矩阵称为摄像机的内参数矩阵。那么将物理世界上的点投影到摄像机上,可以用下式表示 (3) 透镜畸变 Xcorrectedx Ycorrectedy (4) 旋转矩阵与平移向量 标定方法是把摄像机对准一个有很多独立可标识的物体,通过在不同角度观看这个物体,可以利用通过每个图像计算摄像机的相对位置和方向以及摄像机的内参数。 如果依次绕x,y和z轴旋转角度Ψ,α,β,那么总的旋转矩阵R是三个矩阵RxΨ,Ryα,Rzβ的乘积,其中 RxΨ Ryα Rzβ 旋转矩阵RRxΨRyαRzβ,平移向量T目标原点-摄像机原点。 点在世界坐标系中的坐标Po到在摄像机坐标系的坐标Pc PcRPo-T 三个角度来表示三维旋转,三个参数(x,y,z来表示三维平移,摄像机内参数矩阵有4个参数(fx,fy,Cx,Cy,因此对每个视场的解需要10个参数。使用一个平面物体,每个视场固定8个参数。因为不同视场下旋转和平移的6个参数会变化,对每一个视角用来解摄像机内参数矩阵的两个额外参数需要约束,因此求解全部几何参数至少需要两个视场。 (5) 单应性 如果对点Q到成像仪的点q的映射使用齐次坐标,这种映射可以用矩阵相乘的方式表示。有如下定义 Q[X Y Z 1] q[x y 1] 则可以将单应性简单表示为qsHQ 物理变换部分是与观测到的图像平面相关的部分旋转R和部分平移t的影响之和。因为使用齐次坐标,我们可以把它们组合到一个单一矩阵中,如下所示 W[R t] 则qsMWQ,其中摄像机矩阵为M 考虑到一般性,我们可以选择定义这个物体平面,使得Z0,具体如下 映射目标点到成像仪的单应矩阵H可以完全用H表述,其中 qsHQ (6) 立体标定 立体标定是计算空间上两台摄像机几何关系的过程,其关系可通过旋转矩阵R与平移矩阵T来表示。 (7) 立体校正,立体校正则是对个体图像进行纠正的过程,这样保证这些图像可以从像平面行对准的两幅图像获得。通过这样的校正,两台摄像机的光轴就是平行的。 opencv内相应的函数是void stereoRectify......,函数输入摄像机内参数矩阵,畸变矩阵,表示两台摄像机几何关系的旋转矩阵R与平移矩阵T,函数得到左右摄像机平面间的行对准的校正旋转矩阵Rl,Rr和左右投影方程Pl和Pr,可选择返回矩阵H. 校正映射的函数实现是void initUndistortRectifyMap......,这个函数被调用两次,左右图像各调用一次。得到校正矩阵mapx,mapy,再调用remap函数,便可得到行对准的图像。 (8) matlab工具箱的使用 http// 详情参考此网页,利用matlab工具箱,得到摄像机的内参数矩阵和畸变矩阵,以及两摄像头的平移矩阵和旋转矩阵,其参数可作为opencv函数的输入参数,从而得到校正矩阵。 五 三维坐标的计算 (1) 通过视差求深度 xl和xr分别表示点在左右成像仪上的水平位置,这使得深度与视差成反比关系,视差的简单定义为dxl-xr,利用相似三角形可以很容易推导出Z值,由图可知 (2)由重投影矩阵得到三维坐标 重投影矩阵如下 这里,除外的所有参数都来自于左图像,是主点在右图像上的x坐标。如果主光线在无穷远处相交,那么,并且右下角的项为0.给定一个二维齐次点与其关联的视差d,我们可以将此点投影到三维中 三维坐标就是(X/W,Y/W,Z/W,程序效果如下 六 机械臂的跟踪控制 由于使用的是由伺服舵机组成的四自由度机械臂,所以控制只涉及到机械臂的逆运动学,而不需要过多的考虑动力学及轨迹规划。 对机械臂的建模我们采用最常用的D-H参数表,并使用matlab的Robotics Toolbox进行建模,最终得出机械臂的各坐标系的转换矩阵。 经过双目摄像头三维重建环境后,选取需要跟踪的目标点,然后通过正运动学将目标点坐标转换到世界坐标系,再经过解出各个关节的角度,选取最优解,通过串口控制机械臂,实现跟踪的效果。 七 总结 很多东西都需要不断尝试才能得到更好的效果,所以坚持才是王道。 8