基于机器视觉的远程三维扫描系统及方法_3

文档序号:8940781阅读:来源:国知局
据太阳光光谱中各个波段的强度,选取980nm的垂直线结构光红作为扫 描激光器,在系统进行三维扫描时,可将激光照射在待扫描物体表面,手持或者使用步进电 机匀速带动激光器转动扫射扫描物。
[0110] 滤光片:对应于所选光源,选用980nm窄带滤光片和普通滤光片各2片,窄带滤光 片中心波长为980nm,直径为18mm,半带宽为5nm,截止波长为400-1100nm,中心波长通透率 大于80 %,普通滤光片直径为18mm,400-760nm截止,800nm_l IOOnm高透,厚度为2mm,透过 率为92% ;在每一个摄像机镜头与机身之间加入依次加入窄带和普通滤光片,可消除大量 环境光的干扰并且减少滤光片本身的光晕影响,滤光片和摄像机的安装如图3所示。
[0111] 标定板:标定板包括板体,标定光源采用激光二极管,选用980nm激光二极管作, 其中心波长为980nm,功率为lOOmw,工作电压为2V,工作温度为-10~40°C,中心波长透过 率大于80%。将5个激光二极管以十字形等距固定在电路板上,接通2V直流电可使其发 光,形成标定所用到的四点标定板,如图4所示。
[0112] 本系统的配套软件是在Microsoft Visual 2010下使用C/C++语言,利用摄像机 自带SDK,并结合OpenCV计算机视觉库和MFC开发完成的,利用上述系统进行三维扫描的方 法流程图如图5所示,具体过程如下:
[0113] 步骤一,准备过程
[0114] 按照前述结构部分所述,布置摄像机和支架,打开两个摄像机,判断摄像机的工作 状态,当两个摄像机同时正常采集图像时,进行下一步;两个摄像机分别记为左摄像机和右 摄像机,通过编程逻辑实现具体为:
[0115] 步骤SlOl :用户通过界面中指定需打开的摄像机,系统将参数传回,通过摄像机 的SDK中所提供的函数LONG VSNET_ClientStart来启动摄像机的预览功能;
[0116] 步骤S102 :通过消息处理机制,利用MFC的WMJIMER消息,不断地从打开摄像机 的句柄中获得数据信息;
[0117] 步骤 S103 :利用 SDK 中的 B00L VSNET_ClientShowcallback 回调函数,通过打开 句柄得到图像数据的YUV显示数据并保存;
[0118] 步骤S104 :在回调函数中,将YUV格式的数据转化为IplImage图像;
[0119] 步骤S105:判断当前状态决定对处理当前图像的处理方式:若两幅图像都不为 空,则将图像显示在图片显示区域中并进行处理判断,若有一个为空不继续从摄像机获取 图像数据;
[0120] 步骤二,摄像机焦距标定
[0121] 分别对两个摄像机焦距进行标定,得到两个摄像机标定后的焦距;标定原理如图 6所示,形成的标定图案如图7所示,具体过程包括:
[0122] 步骤S201,将标定板垂直于摄像机光轴方向放置在摄像机的视野之内,打开标定 板的标定光源,调整标定板的位置,记标定光源所在位置为标定点,使标定板中心的标定 点与摄像机捕获到的图像中心重合,保存此时摄像机采集到的图像为标定图像一;
[0123] 步骤S202,记录此时摄像机所在的位置为摄像机位置一,和标定板所在的位置;
[0124] 步骤S203,保持标定板位置不变,将标定摄像机在平行于光轴的方向,向前或向后 移动一定距离,记录此时摄像机所在的位置为摄像机位置二,保存摄像机采集的图像为标 定图像二;
[0125] 重复本步骤,得到摄像机在不同位置采集的多张标定图像以及多个摄像机位置, 分别编号为标定图像三至M、摄像机位置三至M ; -般捕获5~10幅标定图像即可;
[0126] 步骤S204,从标定图像一至M中,任意选择两幅图像作为标定初始图像,记为初始 图像a和初始图像b,将拍摄时记录的对应于初始图像的摄像机位置记为初始位置a和初始 位置b,可计算出移动的距离d ba:
[0127] dba =初始位置a_初始位置b
[0128] 步骤S205,将初始图像a和b都用从左向右从上到下、从右向左从上到下、从上到 下从左向右、从下到上从右向左四种方式遍历图像,将图像读取中遇到的第一片大于设定 阈值(取值为250~255)的像素点取出,保存在新图像中,形成上下左右四幅光斑图像,在 每幅光斑图像上进行光斑中心的提取;具体做法为:
[0129] 设光斑内某一点的坐标设为(X1, Y1),相应的灰度值为g(Xi,Y1) (i = 1,…,N),N为 光斑内点的个数,则该光斑的光斑中心点(H)计算如下:
[0130]
[0131] 步骤S206,通过步骤S205计算得到四副光斑图像中光斑的中心点位置,这四个 光斑在其对应的光斑图像中的位置与其在标定初始图像中的位置相同,可得到两幅标定 初始图像a和b中上下左右四个标定点的坐标位置;记为


[0132] 步骤S207,将两图初始标定图像中的对应的上下点aia2、和左右点a 3a4、b3b4 取出,计算两图初始标定图像中的上下和左右标定点之间的距离:dala2、dblb2、d a3a4、db3b4:
[0133]
[0134]
[0135]
[0136]
[0137] 步骤S208,根据平移前后摄像机光心与标定板上的标定点坐标形成的三角形之间 的相似关系及平移距离,计算出摄像机焦距,具体方法如下:
[0138] 设第一次拍照时摄像机中心是0',第二次在移动一定距离之后,摄像机中心0", 焦距是0。,。,和0。,,。,,。令0。,。,=0。,,。,,=(^+£,其中(^为焦距,£为标定焦距时广生的误差, 如图6所示;
[0139] 则根据相似三角形关系有:
[0140]
[0141]
[0142]
[0143]
[0144]
[0145] 步骤S209,重复步骤S204至S208,可计算出多组摄像机焦距,去除偏差较大的焦 距并将其余取平均,得到该摄像机标定后的焦距f,将该焦距显示在界面上。
[0146] 步骤三,系统标定
[0147] 利用两个摄像机和标定板,使用到的标定板与摄像机焦距标定相同,得到两个摄 像机的平移旋转矩阵;其中系统标定图案如图7所示,具体过程如下:
[0148] 步骤S301,调整两摄像机,使摄像机的光轴相互平行,并且平行于水平面,固定两 个摄像机的位置,将标定板垂直于光轴方向放置在两摄像机的公共视野内,打开标定板的 标定光源,使得两摄像机拍摄的图像中能同时看到标定点;从两个相机分别获取一幅图像 为系统标定图像,分别为左系统标定图像L和右系统标定图像R ;
[0149] 步骤S302,将左右系统标定图像都用从左向右从上到下、从右向左从上到下、从上 到下从左向右、从下到上从右向左四种方式遍历,将图像读取中遇到的第一片大于设定阈 值(取值为250~255)的像素点取出,保存在新图像中,形成上下左右四幅光斑图像,在每 幅光斑图像上进行光斑中心的提取;
[0150] 步骤S303,通过计算可得到四幅光斑图像中提取到的光斑中心位置,这四个光 斑在其对应的光斑图像中的位置与其在系统标定图像中的位置相同,可得到两幅系统标 定图像L和R中上下左右四个标定点的坐标位置,记为


[0151 ] 步骤S304,根据系统标定图像L和R与对应摄像机焦距之间的关系,通过计算得到 系统标定图像L和R中标定点的实际三维坐标,具体为:
[0152] 在实际空间中,系统标定图像L和R上的点到对应摄像机中心距离为焦距f\、f;, 则将系统标定图像L和R中四个二维点坐标中增加对应的摄像机焦距,构成三维坐标,可得 到系统标定图像L和R上标定点的图像三维坐标为:
[0153]
和: CN 105157602 A VL lU/lb 贝
[0154]
fr);
[0155] 计算每幅系统标定图像中上下标定点LupLdciwn、RupR dciwn和左右标定点L leftLright、 IfAlght可形成四条直线,则L upLd_与L lrftL"ght连线的交点为C i (Clx,Cly,Clz),RupRdciwn与 RleftRright的连线交点为 C r(Crx,Cry,Crz),则有:
[0156]
[0157]
[0158]
[0159]
[0160]
[0161]
[0162]
[0163]
[0164] 计算系统标定图像 L 中 LupLdciwn与 L leftL"ght的交点为 C : (Clx,Cly,Clz),C1= C 2= 0, 4
相等,得到:
[0165]
[0166] 同理可计算系统标定图像R中RupRdmm与R leftR"ght的交点C JCm C",CU,C3= C 4 =0,令 RupRdcmA R leftRright相等,得到:
[0167]
[0168] 利用几何投影定理,在系统标定图像L和R中,利用上下标定点连线上三个点(Lup、 Ld_、C1, Rup、Rd_、(;)及左右标定点连线上三个点
的图像坐 标,可分别得到系统标定图像L和R中标定点的实际三维坐标

[0169] 步骤S305,对系统标定图像L和R中位置对应的标定点的实际三维坐标进行配对, CN 105157602 A IX m "ti 11/15 页 组成四对匹配点对,表示为
从这四对匹配点对中任意选取其中三对,相互组合,构成四组不同
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1