一种基于OpenCV摄像头标定的3D输入方法技术

技术编号:9356456 阅读:391 留言:0更新日期:2013-11-20 23:38
本发明专利技术涉及一种3D输入方法,具体涉及一种具有6自由度的基于OpenCV摄像机标定技术的3D输入方法。本发明专利技术包括:输入棋盘方格大小、角点数目以及摄像机输出图像的大小参数;判断本次输入的参数是否与上一次保存的棋盘方格大小、角点数目,输出图像大小一致;对摄像头进行标定,求解摄像机的内部参数矩阵以及摄像机镜头引起的畸形系数;对摄像头采集棋盘的图像进行灰度处理;提取图像上棋盘的角点信息;判断输入图像的角点数目与棋盘的角点总数是否一致;提取棋盘所有角点的位置信息,根据摄像头的内参矩阵以及畸形系数,分别求出棋盘的6个自由度信息。本发明专利技术克服了传统3D输入设备的结构复杂、成本高、维护困难等缺点。

【技术实现步骤摘要】
一种基于OpenCV摄像头标定的3D输入方法
本专利技术涉及一种3D输入方法,具体涉及一种具有6自由度的基于OpenCV摄像机标定技术的3D输入方法。
技术介绍
传统的2D输入设备,如轨迹球、鼠标和绘图仪等,只提供平面(二维)位置信息,不能提供其在空间坐标系中的三维位置和方向信息。为了弥补2D输入设备的不足,近年来出现了很多三维输入设备,它们广泛应用到娱乐、机器人仿真、医学、工业等诸多领域,如三维操作系统的输入设备,各种游戏类、模拟类虚拟场景的多维控制,机器人主从控制系统,飞行器仿真,手术控制等。当前主流3D输入设备依据工作原理可分为机械式、电磁式、光学式、声学式和惯性式等,这些设备结构复杂,连线多,成本高,维护难,应用起来十分不方便。本专利技术基于跨平台计算机视觉库OpenCV摄像机标定技术,利用普通网络摄像机以及PC机(或者嵌入式处理器)实现对棋盘空间位姿精确计算,然后将棋盘位姿信息作为系统的输入信息,为3D输入设备应用开拓了新的领域。
技术实现思路
本专利技术的目是提供一种结构简单、连线少、安装方便、成本低、易实现的基于OpenCV摄像机标定的技术,具有6自由度的三维(3D)输入方法。本专利技术的目的是这样实现的:(1)输入棋盘方格大小、角点数目以及摄像机输出图像的大小参数;(2)判断本次输入的参数是否与上一次保存的棋盘方格大小、角点数目,输出图像大小一致,若一致,程序执行步骤(3),否则程序执行步骤(4);(3)对摄像头进行标定,求解摄像机的内部参数矩阵以及摄像机镜头引起的畸形系数:1)输入需要进行摄像机标定的图像数量;2)移动或旋转棋盘到不同的位置,通过摄像机采集棋盘的图像,按顺序进行编号并保存;3)对采集的图像进行灰度处理,提取棋盘图像的角点信息;4)判断提取的棋盘图像的角点数量与棋盘的角点总数是否一致,若一致,则执行5),若不一致,重新步骤2),采集下一张图片;5)提取棋盘所有角点的信息,并临时保存;6)判断摄像机进行标定的图像数量是否与设定的数目相同,若不同,返回步骤2)继续采集图片,若相同,执行步骤7);7)收集每张不同角度的棋盘角点信息,计算出摄像头的内参矩阵以及畸形系数;8)将计算得到的内参矩阵以及畸形系数,保存成XML文件,并释放内存,执行步骤4);(4)对摄像头采集棋盘的图像进行灰度处理;(5)提取图像上棋盘的角点信息;(6)判断输入图像的角点数目与真实的棋盘角点总数是否一致,若不一致,提取新的图像,重新执行步骤(4),若一致,执行步骤(7);(7)提取棋盘所有角点的位置信息,根据摄像头的内参矩阵以及畸形系数,求解出当前棋盘的位姿,通过空间解析,分别求出棋盘的6个自由度信息,即位置(x,y,z)和姿态(γ,β,α),最后返回步骤(4)进行新一轮循环计算,直到提取完所有图像。本专利技术的有益效果在于:本专利技术使用棋盘在空间的移动或旋转量作为3D输入设备的输入信息,克服了传统3D输入设备的结构复杂、成本高、维护困难等缺点。经过实验测试,该3D输入设备能够更准确地获取并有效处理棋盘的位姿,实现操作者的控制意图。附图说明图13D输入设备示意图;图23D输入设备流程图;图3摄像头标定流程图。具体实施方式下面结合附图对本专利技术做进一步描述。本专利技术用一个有规律的黑白棋盘、一台普通网络摄像机以及一台PC机(或嵌入式微处理器),基于OpenCV视觉处理库的摄像机标定技术,通过摄像机采集的图片,并进行图像处理,实时计算出棋盘空间位姿,以棋盘位姿作为输入信息的3D输入设备。本专利技术首先使用摄像机采集不同位置的棋盘图片,利用OpenCV的摄像机标定技术,提取棋盘中的角点位置信息,利用棋盘上的角点和其图像的对应点进行直接线性变换(DLT变换)以及最小二乘法来确定摄像头的内部参数、以及由摄像机镜头引起的畸形系数,生成并保存摄像机内参矩阵和畸形系数的XML文件;然后通过摄像机实时拍摄棋盘图片,并对图片进行灰度处理;识别并提取棋盘的角点,判断通过识别的棋盘角点数目与棋盘真实的角点数目是否一致;若是角点的数目保持一致,则进行计算棋盘角点的位置信息;结合已求解的内参、畸形系数以及棋盘的角点位置信息,求解出以摄像机为原点的棋盘空间坐标信息,这个棋盘空间坐标就作为3D输入设备的实时的输入信息。如图1所示:本设备由一个有规律的黑白棋盘(1)、普通网络摄像头(2)、PC机或嵌入式微处理器(3)、基于OpenCV摄像头标定技术的函数库(4)以及数据输出单元组成(5)。首先,准备一个黑白棋盘,棋盘方格大小为s,角点数目为a×b(棋盘的参数可以根据具体需求设计);然后通过USB接口把摄像头与PC机连接,启动摄像机,设定相应的初始化参数,最后人为移动或旋转棋盘,让摄像机实时捕捉到包含棋盘的图像帧并进行处理。具体流程如图2所示,具体算法和操作按以下步骤进行:步骤A:首先把棋盘方格大小以及棋盘角点总数目,以及摄像机输出图片的大小参数输入;步骤B:根据本次输入的参数是否与上一次保存的方格大小以及角点数目,图像大小一致,判断系统是否需要对摄像机进行重新标定,若是一致,程序判断Yes,则程序进入步骤C,否则程序进入步骤D;步骤C:对摄像机进行标定,求解摄像机的内部参数矩阵以及摄像机镜头引起的畸形系数,为求解棋盘位姿作好准备,具体流程如图3所示。步骤C-1:输入需要进行摄像机标定的图片数目;步骤C-2:移动或旋转棋盘到不同的位置,并通过摄像机采集棋盘的图像,按顺序进行编号并保存;步骤C-3:对上述采集的图片进行灰度处理,调用cvFindChessboardCorners()函数提取棋盘图片的角点信息;步骤C-4:判断输入图像的角点数目与与真实的棋盘的角点总数是否一致,若一致,则执行C-5,若不一致,返回步骤C-2,重新采集下一张图片;步骤C-5:在图片角点检测成功后,调用cvFindCornerSubPix()提取棋盘所有角点的信息,并临时保存;步骤C-6:判断进行摄像机标定的图片数目与设定的数目是否相同,若不同,返回步骤C-2继续采集图片;步骤C-7:收集每张不同角度的棋盘角点信息,调用cvCalibrateCamera2()函数计算出摄像头的内参矩阵以及畸形系数;步骤C-8:把计算得到内参矩阵以及畸形系数,保存成XML文件,并释放内存,并调回主程序步骤D。步骤D:通过摄像头采集棋盘的图片,然后进行灰度处理;步骤E:调用cvFindChessboardCorners()函数提取图片上棋盘的角点信息;步骤F:判断输入图片的角点数目与真实的棋盘的角点总数是否一致,若不一致,返回步骤D,重新采集一张新的棋盘图片;步骤I:调用cvFindCornerSubPix()提取棋盘所有角点的位置信息,并结合上述已经保存的摄像机的内参矩阵以及畸形系数,调用cvFindExtrinsicCameraParams2()函数求解出当前棋盘的位姿,最后通过空间解析,分别求出棋盘的6个自由度信息,即位置(x,y,z)和姿态(γ,β,α),最后返回步骤D进行新一轮循环计算。至此,基于摄像头标定技术的3D输入设备的方法已经介绍完毕,但凡对以上实施进行任何简单修改、等同变化,均属于本专利技术技术方案的范围内。本文档来自技高网...
一种基于OpenCV摄像头标定的3D输入方法

【技术保护点】
一种基于OpenCV摄像头标定的3D输入方法,其特征在于:(1)输入棋盘方格大小、角点数目以及摄像机输出图像的大小参数;(2)判断本次输入的参数是否与上一次保存的棋盘方格大小、角点数目,输出图像大小一致,若一致,程序执行步骤(3),否则程序执行步骤(4);(3)对摄像头进行标定,求解摄像机的内部参数矩阵以及摄像机镜头引起的畸形系数:1)输入需要进行摄像机标定的图像数量;2)移动或旋转棋盘到不同的位置,通过摄像机采集棋盘的图像,按顺序进行编号并保存;3)对采集的图像进行灰度处理,提取棋盘图像的角点信息;4)判断提取的棋盘图像的角点数量与棋盘的角点总数是否一致,若一致,则执行5),若不一致,重新步骤2),采集下一张图片;5)提取棋盘所有角点的信息,并临时保存;6)判断摄像机进行标定的图像数量是否与设定的数目相同,若不同,返回步骤2)继续采集图片,若相同,执行步骤7);7)收集每张不同角度的棋盘角点信息,计算出摄像头的内参矩阵以及畸形系数;8)将计算得到的内参矩阵以及畸形系数,保存成XML文件,并释放内存,执行步骤4);(4)对摄像头采集棋盘的图像进行灰度处理;(5)提取图像上棋盘的角点信息;(6)判断输入图像的角点数目与棋盘的角点总数是否一致,若不一致,提取新的图像,重新执行步骤(4),若一致,执行步骤(7);(7)提取棋盘所有角点的位置信息,根据摄像头的内参矩阵以及畸形系数,求解出当前棋盘的位姿,通过空间解析,分别求出棋盘的6个自由度信息,即位置(x,y,z)和姿态(γ,β,α),最后返回步骤(4)进行新一轮循环计算,直到提取完所有图像。...

【技术特征摘要】
1.一种基于OpenCV摄像头标定的3D输入方法,其特征在于:(1)输入棋盘方格大小、棋盘角点总数目以及摄像机输出图像的大小参数;(2)判断本次输入的参数是否与上一次保存的棋盘方格大小、棋盘角点总数目,摄像机输出图像的大小一致,若一致,程序执行步骤(3),否则程序执行步骤(4);(3)对摄像头进行标定,求解摄像机的内部参数矩阵以及摄像机镜头引起的畸形系数:1)输入需要进行摄像机标定的图像数量;2)移动或旋转棋盘到不同的位置,通过摄像机采集棋盘的图像,按顺序进行编号并保存;3)对采集的图像进行灰度处理,提取棋盘图像的角点信息;4)判断提取的棋盘图像的角点数量与输入的棋盘角点总数目是否一致,若一致,则执行5),若不一致,重新步骤2),采集下一张图片;5)提取棋盘所有角点的信息,并临时保存;6)判断...

【专利技术属性】
技术研发人员:王平薛开何波贤王跃午杨恒
申请(专利权)人:哈尔滨工程大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1