发明名称 一种双目视觉图像立体匹配方法
摘要 本发明一种双目视觉图像立体匹配方法,涉及图像数据处理,步骤是:双目图像的采集与预处理;对双目图像进行图像梯度矩阵求解;得到初始视差图;得到最终视差图像并输出,由此完成双目视觉图像立体匹配。本发明克服了现有的双目立体匹配技术匹配的精度低和实时性不足的缺陷。
申请公布号 CN105528785A 申请公布日期 2016.04.27
申请号 CN201510882365.6 申请日期 2015.12.03
申请人 河北工业大学 发明人 于明;师硕;于洋;郭迎春;刘依;阎刚;王佳希
分类号 G06T7/00(2006.01)I 主分类号 G06T7/00(2006.01)I
代理机构 天津翰林知识产权代理事务所(普通合伙) 12210 代理人 胡安朋
主权项 一种双目视觉图像立体匹配方法,其特征在于步骤如下:第一步,双目图像的采集与预处理:双目图像的采集方法是通过两个在物理位置上相对平行的摄像头进行左右视图的提取;预处理的方法是,将提取的双目图像归一化为384×288像素,然后根据摄像头的标定参数对左右视图进行校正,消除畸变以及行对准,使得左右视图的成像原点坐标一致,对校正完的左右图像进行初始参数的设置,将左右两幅图像分别设置为匹配图像L和待匹配图像R,并设置最大视差值d<sub>max</sub>,具体方法是:(1)图像分块:对于输入的匹配图像L和待匹配图像R设置初始的视差范围和分割阈值,将输入的图像分别分成大小均匀的Q<sub>1</sub>×Q<sub>2</sub>个子块;(2)图像块匹配代价聚类:采用平方差和算法的代价聚集策略聚集窗口内的匹配代价,首先对上述步骤(1)中各个图像子块内的像素在初始视差范围内进行匹配代价求解,求解方法如公式(1)所示,其中,F<sub>x,y</sub>(o)为匹配代价函数,o为偏移距离,表示当前视差,o的初始范围为[0,100],R(x,y,z)、L(x,y,z)是待匹配图像R以及匹配图像L在点(x,y,z)处的像素值,<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msub><mi>F</mi><mrow><mi>x</mi><mo>,</mo><mi>y</mi></mrow></msub><mo>(</mo><mi>o</mi><mo>)</mo><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>z</mi><mo>=</mo><mn>1</mn></mrow><mn>3</mn></munderover><msup><mrow><mo>&lsqb;</mo><mi>R</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow><mo>-</mo><mi>L</mi><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mi>o</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>z</mi><mo>)</mo></mrow><mo>&rsqb;</mo></mrow><mn>2</mn></msup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA0000866236330000011.GIF" wi="1413" he="135" /></maths>之后,对偏移距离为o时的图像子块q内各像素匹配代价进行求平均,并作为偏移距离为o时的图像子块q的匹配代价,如公式(2)所示,<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>&gamma;</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>o</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><mrow><msub><mi>N</mi><mi>c</mi></msub><msub><mi>N</mi><mi>r</mi></msub></mrow></mfrac><munder><mo>&Sigma;</mo><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo><mo>&Element;</mo><mi>q</mi></mrow></munder><msub><mi>F</mi><mrow><mi>x</mi><mo>,</mo><mi>y</mi></mrow></msub><mrow><mo>(</mo><mi>o</mi><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA0000866236330000012.GIF" wi="1395" he="141" /></maths>这里γ(x,y,o)是偏移距离为o的图像块的匹配代价,N<sub>c</sub>、N<sub>r</sub>分别为图像块的宽度和高度,以像素为单位;将偏移距离o从0到100遍历,重复上述步骤(2),记录下每个视差值下的γ(x,y,o),直到对所有的子块完成上述计算;(3)选取视差值范围:统计每个子块在不同偏移距离下的匹配代价,将其称作图像块的匹配代价图,若匹配代价图存在唯一的显著的最小值,则认为该子块可靠,选择匹配代价最小的偏移距离o作为子块的视差值d,否则认为该子块不可靠,进一步将该子块细分为Q<sub>1</sub>×Q<sub>2</sub>个子块,重复上述步骤(2),选择被细分的子块与这些细分后的子块中视差值最相近的局部极小值点作为被细分的子块的视差,依照上述方法判断全部的子块,并判断当前子块的视差值是否全部相等或者子块的尺寸是否达到设定的分隔阈值,若是,则返回这些当前子块的视差值作为双目图像的最大视差值d<sub>max</sub>,否则,将最大视差值所在的子块继续细分为Q<sub>1</sub>×Q<sub>2</sub>个子块,初始偏移距离范围减半,重复上述步骤(2)的计算过程,直到当前子块的视差值全部相等或者子块的尺寸达到设定的阈值,由此完成设置最大视差值d<sub>max</sub>;第二步,对双目图像进行图像梯度矩阵求解:对上述第一步采集与预处理后的双目图像进行图像梯度矩阵求解,过程是:根据下述公式(3)、(4)和(5)分别求出待匹配图像R在x、y、z轴三方向的梯度矩阵D<sub>rx</sub>、D<sub>ry</sub>、D<sub>rz</sub>,x轴为待匹配图像R的横坐标轴,y轴为待匹配图像R的纵坐标轴,z轴为待匹配图像R的RGB通道的坐标轴,以下公式(3)、(4)和(5)中,R(i,j,k)代表待匹配图像R在点(i,j,k)处的像素值,其中,i、j、k分别代表点(i,j,k)对应于x、y、z坐标轴的坐标值,a、b分别代表匹配图像R在x、y坐标轴方向的最大下标值,k=1,2,3,分别表示RGB通道的红色、绿色和蓝色通道,<img file="FDA0000866236330000021.GIF" wi="1715" he="230" /><img file="FDA0000866236330000022.GIF" wi="1725" he="231" /><maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msub><mi>D</mi><mrow><mi>r</mi><mi>z</mi></mrow></msub><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><mi>R</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><mi>R</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>k</mi><mo>)</mo></mrow></mrow></mtd><mtd><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow></mtd></mtr><mtr><mtd><mrow><mo>(</mo><mi>R</mi><mo>(</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>k</mi><mo>+</mo><mn>1</mn></mrow><mo>)</mo><mo>-</mo><mi>R</mi><mo>(</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>k</mi><mo>-</mo><mn>1</mn></mrow><mo>)</mo><mo>)</mo><mo>/</mo><mn>2</mn></mrow></mtd><mtd><mrow><mi>k</mi><mo>=</mo><mn>2</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>R</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>k</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><mi>R</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>k</mi><mo>)</mo></mrow></mrow></mtd><mtd><mrow><mi>k</mi><mo>=</mo><mn>3</mn></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA0000866236330000023.GIF" wi="1732" he="230" /></maths>同理,根据以下公式(6)、(7)、(8)求出匹配图像L在x、y、z轴三方向的梯度矩阵D<sub>lx</sub>、D<sub>ly</sub>、D<sub>lz</sub>,L(i,j,k)代表匹配图像L在点(i,j,k)处的像素值,<img file="FDA0000866236330000024.GIF" wi="1670" he="230" /><img file="FDA0000866236330000025.GIF" wi="1659" he="231" /><maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><msub><mi>D</mi><mrow><mi>l</mi><mi>z</mi></mrow></msub><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><mi>L</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><mi>L</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>k</mi><mo>)</mo></mrow></mrow></mtd><mtd><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow></mtd></mtr><mtr><mtd><mrow><mo>(</mo><mi>L</mi><mo>(</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>k</mi><mo>+</mo><mn>1</mn></mrow><mo>)</mo><mo>-</mo><mi>L</mi><mo>(</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>k</mi><mo>-</mo><mn>1</mn></mrow><mo>)</mo><mo>)</mo><mo>/</mo><mn>2</mn></mrow></mtd><mtd><mrow><mi>k</mi><mo>=</mo><mn>2</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>L</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>k</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><mi>L</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>k</mi><mo>)</mo></mrow></mrow></mtd><mtd><mrow><mi>k</mi><mo>=</mo><mn>3</mn></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>8</mn><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000866236330000026.GIF" wi="1662" he="222" /></maths>第三步,得到初始视差图:视差图是双目图像的视差值的图像,初始视差图的生成方法如下:(1)计算匹配代价:1)计算像素值匹配代价:根据上述第一步中得到的匹配图像L和待匹配图像R,计算对应图像中的每个像素对在z轴方向的平方差的和以消去z轴的位置信息,再用消去z轴位置信息的矩阵中点(x,y)在n×n邻域中的平均值作为像素值匹配代价S(x,y,d),采用的计算公式(9)如下:<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><mi>S</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>d</mi><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mo>-</mo><mrow><mo>(</mo><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>/</mo><mn>2</mn></mrow><mrow><mrow><mo>(</mo><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>/</mo><mn>2</mn></mrow></munderover><munderover><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mo>-</mo><mrow><mo>(</mo><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>/</mo><mn>2</mn></mrow><mrow><mrow><mo>(</mo><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>/</mo><mn>2</mn></mrow></munderover><mrow><mfrac><mn>1</mn><msup><mi>n</mi><mn>2</mn></msup></mfrac><munderover><mo>&Sigma;</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mn>3</mn></munderover><msup><mrow><mo>&lsqb;</mo><mrow><mi>R</mi><mrow><mo>(</mo><mrow><mi>x</mi><mo>+</mo><mi>i</mi><mo>,</mo><mi>y</mi><mo>+</mo><mi>j</mi><mo>,</mo><mi>k</mi></mrow><mo>)</mo></mrow><mo>-</mo><mi>L</mi><mrow><mo>(</mo><mrow><mi>x</mi><mo>+</mo><mi>i</mi><mo>,</mo><mi>y</mi><mo>+</mo><mi>j</mi><mo>+</mo><mi>d</mi><mo>,</mo><mi>k</mi></mrow><mo>)</mo></mrow></mrow><mo>&rsqb;</mo></mrow><mn>2</mn></msup></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mo>(</mo><mn>9</mn><mo>)</mo><mo>,</mo></mrow>]]></math><img file="FDA0000866236330000031.GIF" wi="1726" he="151" /></maths>其中,d为匹配点与待匹配点在y轴坐标的差值,即匹配图像的移动次数,0≤d≤d<sub>max</sub>;2)计算梯度矩阵匹配代价:同上述步骤1),对第二步中获得的梯度矩阵进行梯度匹配代价计算,采用的计算公式(10)、(11)、(12)如下:<maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><msub><mi>D</mi><mi>x</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>d</mi><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mo>-</mo><mrow><mo>(</mo><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>/</mo><mn>2</mn></mrow><mrow><mrow><mo>(</mo><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>/</mo><mn>2</mn></mrow></munderover><munderover><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mo>-</mo><mrow><mo>(</mo><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>/</mo><mn>2</mn></mrow><mrow><mrow><mo>(</mo><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>/</mo><mn>2</mn></mrow></munderover><mrow><mfrac><mn>1</mn><msup><mi>n</mi><mn>2</mn></msup></mfrac><munderover><mo>&Sigma;</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mn>3</mn></munderover><msup><mrow><mo>&lsqb;</mo><mrow><msub><mi>D</mi><mrow><mi>r</mi><mi>x</mi></mrow></msub><mrow><mo>(</mo><mrow><mi>x</mi><mo>+</mo><mi>i</mi><mo>,</mo><mi>y</mi><mo>+</mo><mi>j</mi><mo>,</mo><mi>k</mi></mrow><mo>)</mo></mrow><mo>-</mo><msub><mi>D</mi><mrow><mi>l</mi><mi>x</mi></mrow></msub><mrow><mo>(</mo><mrow><mi>x</mi><mo>+</mo><mi>i</mi><mo>,</mo><mi>y</mi><mo>+</mo><mi>j</mi><mo>+</mo><mi>d</mi><mo>,</mo><mi>k</mi></mrow><mo>)</mo></mrow></mrow><mo>&rsqb;</mo></mrow><mn>2</mn></msup></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mo>(</mo><mn>10</mn><mo>)</mo><mo>,</mo></mrow>]]></math><img file="FDA0000866236330000032.GIF" wi="1717" he="155" /></maths><maths num="0007" id="cmaths0007"><math><![CDATA[<mrow><msub><mi>D</mi><mi>y</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>d</mi><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mo>-</mo><mrow><mo>(</mo><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>/</mo><mn>2</mn></mrow><mrow><mrow><mo>(</mo><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>/</mo><mn>2</mn></mrow></munderover><munderover><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mo>-</mo><mrow><mo>(</mo><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>/</mo><mn>2</mn></mrow><mrow><mrow><mo>(</mo><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>/</mo><mn>2</mn></mrow></munderover><mrow><mfrac><mn>1</mn><msup><mi>n</mi><mn>2</mn></msup></mfrac><munderover><mo>&Sigma;</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mn>3</mn></munderover><msup><mrow><mo>&lsqb;</mo><mrow><msub><mi>D</mi><mrow><mi>r</mi><mi>y</mi></mrow></msub><mrow><mo>(</mo><mrow><mi>x</mi><mo>+</mo><mi>i</mi><mo>,</mo><mi>y</mi><mo>+</mo><mi>j</mi><mo>,</mo><mi>k</mi></mrow><mo>)</mo></mrow><mo>-</mo><msub><mi>D</mi><mrow><mi>l</mi><mi>y</mi></mrow></msub><mrow><mo>(</mo><mrow><mi>x</mi><mo>+</mo><mi>i</mi><mo>,</mo><mi>y</mi><mo>+</mo><mi>j</mi><mo>+</mo><mi>d</mi><mo>,</mo><mi>k</mi></mrow><mo>)</mo></mrow></mrow><mo>&rsqb;</mo></mrow><mn>2</mn></msup></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mo>(</mo><mn>11</mn><mo>)</mo><mo>,</mo></mrow>]]></math><img file="FDA0000866236330000033.GIF" wi="1706" he="156" /></maths><maths num="0008" id="cmaths0008"><math><![CDATA[<mrow><msub><mi>D</mi><mi>z</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>d</mi><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mo>-</mo><mrow><mo>(</mo><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>/</mo><mn>2</mn></mrow><mrow><mrow><mo>(</mo><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>/</mo><mn>2</mn></mrow></munderover><munderover><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mo>-</mo><mrow><mo>(</mo><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>/</mo><mn>2</mn></mrow><mrow><mrow><mo>(</mo><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>/</mo><mn>2</mn></mrow></munderover><mrow><mfrac><mn>1</mn><msup><mi>n</mi><mn>2</mn></msup></mfrac><munderover><mo>&Sigma;</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mn>3</mn></munderover><msup><mrow><mo>&lsqb;</mo><mrow><msub><mi>D</mi><mrow><mi>r</mi><mi>z</mi></mrow></msub><mrow><mo>(</mo><mrow><mi>x</mi><mo>+</mo><mi>i</mi><mo>,</mo><mi>y</mi><mo>+</mo><mi>j</mi><mo>,</mo><mi>k</mi></mrow><mo>)</mo></mrow><mo>-</mo><msub><mi>D</mi><mrow><mi>r</mi><mi>z</mi></mrow></msub><mrow><mo>(</mo><mrow><mi>x</mi><mo>+</mo><mi>i</mi><mo>,</mo><mi>y</mi><mo>+</mo><mi>j</mi><mo>+</mo><mi>d</mi><mo>,</mo><mi>k</mi></mrow><mo>)</mo></mrow></mrow><mo>&rsqb;</mo></mrow><mn>2</mn></msup></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mo>(</mo><mn>12</mn><mo>)</mo><mo>;</mo></mrow>]]></math><img file="FDA0000866236330000034.GIF" wi="1724" he="156" /></maths>(2)计算代价聚合值矩阵:将上述步骤(1)得到的结果利用公式(13)计算匹配图像L中点(x,y)的代价聚合值矩阵A(x,y,d):A(x,y,d)=S(x,y,d)+w×(D<sub>x</sub>(x,y,d)+D<sub>y</sub>(x,y,d)+D<sub>z</sub>(x,y,d))   (13),其中,w为梯度矩阵匹配代价值的权重;(3)匹配代价比较:将匹配图像L以及上述第二步求出的匹配图像L的x、y、z轴三方向的梯度矩阵D<sub>lx</sub>、D<sub>ly</sub>、D<sub>lz</sub>分别向左移动一列,最后一列都补零,得到四个新的矩阵L<sub>1</sub>、D<sub>lx 1</sub>、D<sub>ly 1</sub>、D<sub>lz 1</sub>,将这四个新的矩阵带入上述步骤(1)的计算匹配代价和上述步骤(2)的计算匹配代价聚合值矩阵,得到新的代价聚合矩阵A<sub>1</sub>,比较A<sub>1</sub>与上述步骤(2)计算得到的代价聚合矩阵A,两矩阵中相应较小的元素保留在A<sub>1</sub>中,并保存A<sub>1</sub>中各元素获得时的匹配图像的移动次数,以此对应存放于矩阵C中,矩阵C中元素随着代价聚合矩阵A<sub>1</sub>的更新而更新,直到移动次数达到所规定的最大视差值d<sub>max</sub>,最后的矩阵C即为初始视差矩阵,由此得到初始视差图;第四步,得到最终视差图像并输出,由此完成双目视觉图像立体匹配:将第一步中得到的匹配图像L换为待匹配图像R,待匹配图像R换为匹配图像L,重复第三步,求得第二个视差矩阵M,用胜者为王算法对矩阵C和矩阵M进行去噪,即遍历两幅图像,创建一个新的视差矩阵N,其大小与视差矩阵M相同,取初始视差矩阵C和视差矩阵M同一位置中数值最小的值,保存在视差矩阵N的对应位置上,然后利用改进的Mode滤波器对视差矩阵N进行滤波,所用公式(14)如下:<img file="FDA0000866236330000035.GIF" wi="1396" he="158" />其中,m是大小为n×n像素的窗口中心点像素值,H为直方图统计,即通过一个大小为n×n像素的小窗口在矩阵N上滑动,首先判断窗口中心点像素值m的大小,当m≤2,即m=0,1,2时,该窗口的中心点像素值取值不变,当2&lt;m≤d<sub>max</sub>时,d<sub>max</sub>为第一步中的最大视差值,统计窗口中各个像素值v的出现次数H(v),取出现次数最多,即H<sub>max</sub>次的像素值v来代替中心点像素值m,通过提前判断中心点像素值m的大小,避免无用的计算,此更新滤波过程结束后的视差矩阵N为最终视差图像,至此,将视差矩阵N即最终视差图像输出,由此完成双目视觉图像立体匹配。
地址 300130 天津市红桥区丁字沽光荣道8号河北工业大学东院330#