技术领域
[0001] 本
发明属于水下
计算机视觉研究领域,涉及一种基于光场多层折射模型的水下双目视觉立体匹配方法,通过建立多层折射图像模型来解决由于水的折射而引起的水下图像立体匹配失败的问题。
背景技术
[0002] 使用视觉探测不仅可以直观地观察到水下环境,而且可以获得更准确的三维信息,例如目标物水下
定位、
三维重建等。虽然目前空气中的双目
立体视觉系统技术已经较为成熟,但精密的光学仪器在水下环境中应用因成像环境特殊而存在很多难点,这时的摄像机往往需要加装防水罩,这里除了原本水对光的吸收和散射造成成像
质量的下降外,最关键的是光线通过水、防水罩和空气的交界面处发生了折射,光的传播路径发生了变化,导致立体匹配环节空气中的极线约束模型(普通的摄像机成像模型)不再适用。关于这个问题,2011年Gedge J等实验证明水下极线约束变为一条曲线,并得出约束极线弯曲程度与摄像机焦距的关系。但是如果以曲线极线约束作为水下立体匹配的约束条件,则需计算每个
像素点对应的极线约束曲线关系,其计算量非常大。
[0003] 李雅倩等人在其论文“基于深度约束的水下稠密立体匹配[J].
光子学报,2017,46(7).”中提出一种基于深度约束的半全局
算法以实现水下稠密立体匹配。该方法首先采用深度约束确定匹配过程的深度约束搜索区域,然后基于深度约束区域将绝对差值和梯度计算推广到二维区域并进行加权融合。在深度约束区域内的搜索过程中,采用胜者为王的策略确定某一
视差值下的最佳行差及最佳行差下的匹配代价,并将其作为
能量函数的数据项应用于半全局算法中,进行匹配代价的聚合,最后采用抛物线拟合法得到亚像素级的稠密视差图。该方法虽然可以获得较好的水下匹配效果,但是该过程中计算量相当大,相当耗时,无法满足系统实时性这一要求。
[0004] 张强等人在论文“基于最佳搜索域的水下图像区域匹配算法研究[J].光学学报,2014,34(6).”中针对水下双目图像匹配时不再满足空气中极线约束条件以及归一化互相关算法处理水下图像计算量大等问题,提出了一种基于最佳搜索域的水下图像区域匹配算法。该方法在得到相关标定参数、参考图和待匹配图后,运用曲线极线约束计算出与空气中极线的最大偏离值,确定最佳搜索域;用归一化互相关算法进行匹配,将原来的线性搜索改为在最佳搜索域中进行多行搜索,提高匹配
精度;并应用盒滤波技术
加速,提高匹配速度。
该方法虽然达到了尺度不变特征变换算法的匹配精度,但在曲线约束环节其运算量很大。
发明内容
[0005] 本发明为解决水下双目视觉立体匹配失败的问题,提出了一种基于光场多层折射模型的水下双目视觉立体匹配方法。
[0006] 在水下拍摄环境中,成像光线依次通过水、玻璃、空气这三种介质。在已知相机内外参数的情况下,计算出水中光线的方向向量,然后在立体视觉
坐标系下构造方向图像,根据方向图像直接使用空气中已有的算法进行立体匹配。
[0007] 为了达到上述目的,本发明具体采用下述技术方案:
[0008] 一种基于光场多层折射模型的水下双目视觉立体匹配方法,包括以下步骤:
[0009] 步骤一:采用相机的多层折射立
体模型,建立立体视觉坐标系。然后定义方向图像内参矩阵,在立体视觉坐标系下建立左右方向图像;
[0010] 步骤二:计算左右方向图像任意像素在立体视觉坐标系下对应的光线方向向量IL_stereo、IR_stereo,并根据立体视觉坐标系与多层折射坐标系的坐标变换关系:Pr=rRnewPnew,计算得到光线在多层折射坐标系下的方向向量IL_reflect、IR_reflect;
[0011] 步骤三:根据光场表示方法,分别计算左右方向图像像点经过多层界面传播和折射后到达空气中的光线 并转换成光线矢量
[0012] 步骤四:将光线矢量 转换到左右相机坐标系下,根据左右相机内参计算得到方向图像上任意像点对应原图像上的像素
位置,并建立位置映射表;
[0013] 步骤五:利用水下双目视觉测量系统获取到的水下目标图像,根据步骤四计算得到的位置映射表,使用OpenCV中Remap函数快速计算出左右方向图像;最后,针对左右方向图像利用空气中的立体匹配算法即可快速计算得到视差图。
[0014] 所述步骤一中的建立立体视觉坐标系,具体包括以下步骤:
[0015] 步骤1.1:以左相机
光心为原点,左相机光心与右相机光心的连线方向为左立体视觉坐标系的x轴;
[0016] 步骤1.2:将左多层折射坐标系的z轴(即分界面的法线)与左立体视觉坐标系x轴的叉乘作为左立体视觉坐标系y轴;
[0017] 步骤1.3:将以上的x轴与y轴叉乘作为z轴;
[0018] 步骤1.4:将左立体视觉坐标系平移到右相机光心,即得到右立体视觉坐标系:
[0019] Pr=rRnewPnew+rtnew
[0020] rRnew=[nx nr×zx nx×(nr×zx)]
[0021] rtnew=[0 0 0]T
[0022] zc=[0 0 1]T
[0023] 所述步骤三中计算左右方向图像像点经过多层界面传播和折射后到达空气中的光线 并转换成光线矢量 具体包括以下步骤:
[0024] 步骤3.1:根据光场模型,将左右方向图像的光线矢量表示为光场:
[0025]
[0026] 步骤3.2:某介质光线nLr传播距离dn,然后从介质μn进入介质μn+1中发生折射,入射光线和折射后光线表示为:
[0027]
[0028] n+1Lr=R(sn tn μn μn+1)×T(dn)×nLr
[0029] 其中
[0030] 步骤3.3:根据以上两步计算左右方向图像像点经过多层界面传播和折射后到达空气中的光线 并转换成光线矢量
[0031]
[0032] 与
现有技术相比,本发明具有如下显而易见的优点:
[0033] 本发明方法匹配精度高,计算速度快,不仅解决了水下图像因不同介质面的折射所导致的立体匹配失败的问题,而且保证在较高的匹配精度前提下显著提高匹配效率。处理后的左右方向图像可以直接利用空气中的匹配算法进行计算,方便快捷,可移植性好。
附图说明
[0035] 图2为本发明计算所得到的方向图像,其中a为右相机方向图像,b为左相机方向图像。
[0036] 图3为本发明行匹配误差的仿真计算结果。
[0037] 图4为本发明算法计算出来的视差图。
具体实施方式
[0038] 下面结合附图对本发明的优选
实施例作出详细说明。
[0039] 如图1所示,一种基于光场多层折射模型的水下双目视觉立体匹配方法,包括以下步骤:
[0040] 步骤一:本实施例采用中国
专利CN201710702222中的“基于多层折射模型的水下立体视觉系统标定方法”中所述的相机的多层折射立体模型。相机封装在舱内后,相机坐标系z轴即相机光轴与“空气-水”分界面一般不垂直。因此建立z轴与“空气-水”分界面垂直的多层折射坐标系,采用中国专利CN201710702222中的“基于多层折射模型的水下立体视觉系统标定方法”获得法向量参数(nL,nR),根据法向量参数计算相机坐标系与多层折射坐标系的转换关系。多层折射成像坐标系与相机坐标系的关系可表示为:
[0041] Pr=cRrPr+ctr
[0042] cRr=[nc×zc nc×(nc×zc) nc]
[0043] ctr=[0 0 0]T
[0044] zc=[0 0 1]T
[0045] 然后根据相机的多层折射模型,建立立体视觉坐标系。以左相机的光心为原点,左相机光心与右相机的光心的连线方向作为x轴,以左相机当前左相机的光场的z轴(即界面的法线)与x轴叉乘得到y轴,然后x轴与y轴叉乘得到z轴。得到立体视觉坐标系:
[0046] Pr=rRnewPnew+rtnew
[0047] rRnew=[nx nr×zx nx×(nr×zx)]
[0048] rtnew=[0 0 0]T
[0049] zc=[0 0 1]T
[0050] 其中nx为左右相机光心构成的单位向量在多层折射坐标系下的表示。多层折射坐标系相对立体视觉坐标系的关系可表达为:Pnew=newRrPr+newtr,其中:newRr=rRnew-1。然后定义方向图像内参矩阵,在立体视觉坐标系下建立左右方向图像矩阵。
[0051] 步骤二:计算光线在多层折射坐标系下的方向向量。首先计算左右方向图像中的任意像素在立体视觉坐标系下对应的光线的方向向量IL_stereo和IR_stereo。然后根据立体视觉坐标系与多层折射坐标系的坐标变换关系:Pr=rRnewPnew,得到光线在多层折射坐标系下的方向向量IL_reflect和IR_reflect。
[0052] 步骤三:根据光场表示方法,分别计算左右方向图像像点经过多层界面传播和折射后到空气中的光线 并转换成光线矢量 和 本实施例根据中国专利CN109490251A“基于光场多层折射模型的水下折射率自标定方法”所述的光场模型,将左右方向图像的光线矢量表示为光场:
[0053]
[0054] 光线Lr传播距离d0,然后从水进入空气中发生折射,入射光线和折射后光线可表示为:
[0055]
[0056] 1Lr=R(s0 t0 1.333 1)×T(d0)×0Lr
[0057] 其中
[0058] 根据以上公式即可求出左右方向图像像点经过水的传播和折射后到达空气中的光线 并转换成光线矢量
[0059]
[0060] 步骤四:将步骤三中的光线矢量 转换到左右相机坐标系下,根据左右相机内参计算得到方向图像上任意像点对应原图像上的像素位置,建立x方向和y方向的映射表。
[0061] 步骤五:利用水下双目视觉测量系统获取到的水下目标图像,同时辅以绿色散点激光增加水下图像的纹理性,将采集到的左右图像畸变校正后,利用opencv中的remap函数以及步骤四中的映射表,即可快速计算出左右方向图像,如图2所示。
[0062] 由于行匹配效果直接影响接下来立体匹配的准确率,这里利用matlab对该环节进行仿真,仿真结果如图3所示,可以看出其行匹配误差低于0.8个像素,表明上述方法计算出来的方向图像行匹配精度很高。
[0063] 最后,基于步骤五得到的左右方向图像直接利用空气中的SGBM算法即可准确快速地计算出视差图,如图4所示。水下双目视觉的立体匹配得以准确快速地实现。