本发明计算机视觉领域,特指一种基于色彩信息和图割理论的立体匹配算法。
背景技术:
立体视觉是计算机视觉领域的一个至关重要的分支,广泛应用于三维非接触测量、建筑、机器人视觉、航空测绘和军事应用等领域,以致成为了当今国际上热门的课题之一。
立体视觉技术主要包括图像采集、图像预处理、相机标定、立体校正、立体匹配和三维重建几个步骤。其中,立体匹配是立体视觉中核心部分,直接影响后续深度信息的估算和三维重建的效果。立体匹配旨在求得图像对应像素的视差值,根据视差图的疏密行,立体匹配算法可分为稀疏视差的匹配算法和稠密视差的匹配算法。稀疏的视差结果不利用后续的三维重建,因而在很多应用邻域都要求匹配后能得到稠密的视差结果。稠密视差匹配算法主要包括基于区域立体匹配算法以及基于全局的立体匹配算法。例如,基于SAD区域立体匹配算法能满足实时性的要求,但是该算法对噪声比较敏感,同时大的匹配窗口会造成图像细节信息的丢失,而且获取的视差结果在弱纹理区域、视差不连续等特殊区域匹配精度不高;基于全局的立体匹配算法虽然整体匹配精度较高,但是算法实时性较低。因此,同时满足匹配精度和算法实时性要求成为立体匹配算法的最大的难点。
针对上述问题,本发明提出了一种基于色彩信息和图割理论的立体匹配方法。本方法首先在RGB颜色空间模型下,结合模板权值和SAD算法进行匹配,利用色差约束条件判定SAD的最优匹配点,此种情况下的SAD初始匹配的精确度有所提高,抑制了噪声的同时也保持了景物的细节信息;利用左右一致性校验准则和中值滤波来进行遮挡过滤,提高了初始匹配遮挡区域的匹配精度;同时针对初始匹配弱纹理区域、视差不连续的匹配精度不高的问题,结合图割算法构造能量网格图和能量函数进行全局优化求得高精度的视差结果。本发明方法改善了局部立体匹配算法精度不高和全局立体匹配算法实时性较弱的情况,提高了不连续区域等特殊区域的匹配精度,同时缩短了算法匹配的时间。
技术实现要素:
本发明要解决的技术问题在于:为了提高立体匹配视差图的精度,并使其满足实时性需求,提出一种基于色彩空间和图割理论的立体匹配算法。
本发明技术方案具体包括如下步骤:
1、一种基于色彩信息和图割理论的立体匹配改进算法,包括如下步骤:
步骤S1,在RGB色彩模型下,结合模板权值、色差约束条件以及SAD的局部匹配算法求得初始视差结果;
步骤S2,利用左右一致性校验准则和中值滤波来进行遮挡过滤;
步骤S3,基于图割理论的立体匹配改进算法进行全局优化;
步骤S4,视差结果的后处理,利用双边滤波对视差进行滤波得到最终的视差结果。
作为本发明技术方案的进一步改进,所述步骤S1具体包括以下步骤:
S1.1在RGB色彩模型下,结合模板权值和SAD算法进行匹配;
模板权值矩阵W(x,y)满足下式:
lnH(x,y)=[max(i,j)-max(|(x-i-1)|,|y-j-1|)]×lnw,
上式中i,j是像素邻域窗口的半宽度,w是权值;
则结合模板权值和SAD算法的匹配代价为:
式中fQL(x,y)是左图像的通道值,fQR(x,y)是右图像的通道值,d表示像素点(x,y)的视差值,h和k分别表示在x和y方向上移动的位移;
当CRGB(x,y,d)最小时,左右图像对对应的像素为最佳匹配,此时的视差记为:
dp=argminCRGB(x,y,d)(d∈D);
S1.2利用色差约束条件判定匹配过程中的最优匹配点,所述色差约束条件为像素点红绿通道、像素点绿蓝通道和像素点红蓝通道的水平方向的色差梯度以及色差梯度的方向角。
作为本发明技术方案的进一步改进,所述步骤S2具体包括以下步骤:
S2.1遮挡检测,其包括先分别左右图像参考图像,求得左右两幅视差图,若左图像中的一个像素点p,其视差为d1,点p在右图像中对应的视差为d2,当|d1-d2|>T时,则点p被标记为遮挡点,其中T为常数阙值;
S2.2遮挡过滤,对遮挡点重新赋值,即分别从水平向左和向右的方向找到第一个非遮挡点的视差值,记为pl、pr,则点p处的视差值被重新赋值成d(p):d(p)=min(d(pl,pr))。
作为本发明技术方案的进一步改进,所述步骤S3具体包括以下步骤:
S3.1构造α扩展下的能量网格图;
S3.2对α扩展移动算法进行改进,将源点按照视差分布中的大概率视差值优先设定,并设定一个阈值T,当时,算法整体结束,其中为当前能量函数值,E(f)为前一次能量函数值;
S3.3能量函数最小化,求得α扩展移动过程中最小割。
作为本发明技术方案的进一步改进,所述步骤S4具体包括以下步骤:假设滤波前图像I的像素点p(x,y)的灰度值为Ip,滤波后的图像为BI在该像素点的灰度值为BIp,则双边滤波的公式为:
其中,q(u,v)是以像素p为中心像素的领域像素点,领域像素集合记为S,Wp称为归一化因子,是空间滤波核函数,是灰度核滤波函数,和的表达式如下示:
式中,σs表示高斯函数的标准差,sr表示高斯函数的标准差。
与现有技术相比,本发明具有以下有益效果:
1、在RGB色彩模型下,结合模板权值和SAD局部算法进行匹配,当出现多个不同的视差结果时,利用色差约束条件判定最优匹配点;
2、利用左右一致性校验进行遮挡过滤,提高了初始匹配遮挡区域的匹配精度,遮挡过滤之后产生的水平条纹可以利用中值滤波来消除;
3、初始视差结果可作为图割中能量函数的限制项,这样很大程度上减少了能量网格图中节点的数目,有利于算法的实施;
4、改进的α扩展移动算法中,将网格图中源点的设置按视差大概率优先设置以及设定算法结束的阈值,从而缩短的算法运行的时间,进一步满足的实时性要求。
5、采用快速的双边滤波进行视差图的后处理,提高了后处理的速度。
附图说明
图1是本实施例所述整体算法流程图;
图2是本实施例所述初始视差匹配算法流程图;
图3是本实施例所述Middlebury图片库中的Tsukuba、barn和teddy图片和其对应的标准视差图;
图4是本实施例所述SAD局部立体匹配算法的视差结果;
图5是本实施例所述网格图;
图6是本实施例所述原始的图割算法的立体匹配处理结果;
图7是本实施例所述本实施案例算法的处理结果;
图8是本实施例所述本实施案例算法处理相机拍摄图像的视差结果。
具体实施方式
以Middlebury网站上的图片库和相机拍摄的图片为例,结合附图对本发明做进一步详细说明。
S1.在RGB色彩模型下,结合模板权值、色差约束条件以及SAD的局部匹配算法求得初始视差结果;
S1.1在RGB色彩模型下,结合模板权值和SAD算法进行匹配;
R、G、B是彩色图像三个通道,fQL(x,y)(其中Q=R、G、B)是左图像的通道值,fQR(x,y)(其中R、G、B∈Q)是右图像的通道值。则在RGB色彩模型,任意相对应的像素点在左右图像对中SAD匹配代价为:
式中,d表示像素点(x,y)的视差值;h和k分别表示在x和y方向上移动的位移。
为了抑制噪声和视差图能保持较好的轮廓细节信息,引入了模板权值对上述步骤的匹配方法进行改进,模板权值矩阵W(x,y)满足如下公式:
lnH(x,y)=[max(i,j)-max(|(x-i-1)|,|y-j-1|)]×lnw (2)
则结合模板权值和SAD算法的匹配代价为:
式中i,j是像素邻域窗口的半宽度,w是权值。调整宽口和权值来达到滤波效果和最大保持景物的细节信息。
当公式(3)最小时,左右图像对对应的像素为最佳匹配,此时的视差记为:
dp=argminCRGB(x,y,d)(d∈D) (4)
S1.2利用色差约束条件判定匹配过程中的最优匹配点。
在匹配窗口移动的过程中,会出现多个步骤S1.1中多个不同的dp时,依据左右匹配点应该有相同色差梯度的约束条件,可以利用匹配窗口内色差梯度大小和方向来确定最优匹配点。则像素点红绿通道的水平方向的色差梯度如公式(5)所示,色差梯度的方向角如公式(6)所示。
其中,式中,fR(x,y)、fG(x,y)和fB(x,y)分别表示像素点(x,y)的R、G和B三个颜色通道值。绿蓝和红蓝的水平色差梯度定义以及方向角的定义也类似公式(5)和(6)。采用欧式距离判定左右图像对应像素梯度的差异性。
依据图像的三色通道信息,引入色差约束条件,使得匹配的效果更好。
S2.利用左右一致性校验准则和中值滤波来进行遮挡过滤,提高了初始匹配遮挡区域的匹配精度;
本发明采用左右一致性校验主要目的是实现遮挡检测(LRC),遮挡是指只出现在一个图像上,而不出现在另外一幅图像上点。通过左右一致性校验来提高初始视差的精度主要分为两步,即遮挡检测和遮挡过滤。第一步,遮挡检测过程主要是先分别左右图像参考图像,求得左右两幅视差图。若左图像中的一个像素点p,其视差为d1,点p在右图像中对应的视差为d2,当|d1-d2|>T时,则点p被标记为遮挡点,其中T为常数阙值。第二步,遮挡过滤就是对遮挡点重新赋值的过程,即分别从水平向左和向右的方向找到第一个非遮挡点的视差值,记为pl、pr,则点p处的视差值被重新赋值成d(p):
d(p)=min(d(pl,pr)) (7)
一致性遮挡过滤的方法有助于提高遮挡区域的视差精度,但是通常会出现类似于动态规划算法的水平条纹,本发明中采用中值滤波来消除水平条纹。S1步骤获得的初始视差结果精度较高,且提高了遮挡区域的视差精度,高精度的初始视差结果有利用后期的全局优化。初始视差结果的弱纹理区域和不连续区域的视差精度有待改善,基于图割理论的全局优化算法可以有效地解决此问题。
S3.基于图割理论的立体匹配改进算法进行全局优化;
基于图割的立体匹配方法,就是将图像中像素点看作是图中的节点,图像就映射成了带权无向图或是有向图,采用标号视差,通过建立能量函数将立体匹配过程转化成最小化能量函数过程,巧妙地构造网络以及结合图割理论,使得图的最小割和能量函数的最小化具有一致性,最终获得图像对的视差。本发明采用的能量函数为:
E(f)=Edata(f)+Esmooth(f) (8)
其中,Edata(f)和Esmooth(f)可以表示为:
则能量函数也可以表示为:
其中,Edata(f)为数据项,用于度量视差值为fp时两像素间的匹配程度,度量两匹配点之间的相似度。p是像素集合P的元素,也就是图像中像素点。fp就是像素点p对应于视差集合L中的视差值。经过双目立体校正之后,使得左右两幅图像只在x方向上有视差也就是视差集合L的内容,即当一幅图像中的有像素点p,则其对应点在另外一幅图像上p+fp位置处。Dp(fp)表示视差值为fp的像素点p的匹配代价,可表示为公式(12),其中,I(p)表示像素点p的灰度值,fp是像素点对应视差值,即fp对应于视差集合L中的视差值。
Dp(fp)=I1(p)-I2(p+fp)2 (12)
其中,Esmooth(f)用于判定待匹配像素与其领域像素的一致性程度,描述的是领域像素与中心像素之间的视差平滑程度。{p,q}∈N是图片中相邻的两个像素点。V(p,q)(fp,fq)是相邻像素之间的平滑模型,本发明采用Potts模型的平滑函数,这种平滑项也叫边界保留的平滑函数,较好地避免物体边缘和多纹理区域过度平滑的现象,Potts函数的表达式如下:
V(p,q)(fp,fq)=λ·D (13)
其中Ip表示的像素点p的灰度值,Iq表示的像素点q的灰度值,k=20,当fp=fq时,D=0;当fp≠fq时,D=1。
S3.1α扩展下的能量网格图的构造;
巧妙地构造网格图是利用图割理论求解匹配视差的前提。为了能够简便地阐述立体匹配中网格图构造的情况,本发明以给出了一个像素点相对较小的二维图像的网格图的为例,来说明α扩展下的能量网格图的构造。图5记为G=(V,E)。图的顶点集合α和是源点和汇点,在立体匹配网格图的构造当中,源点和汇点表示在求解能量时所分配的视差值;顶点P是像素点集合,记P={p/p=p,q,r,s,h,l,m,n,o(}在未添加辅助节点的情况下),其中,p,q,r,s,h,l,m,n,o分别为像素点。
在构造能量网格图之前,先要构造公式(11)的能量函数。由S1和S2求得初始视差值之后,初始视差结果可作为图割中能量函数的限制项,这样很大程度上减少了能量网格图中节点的数目,有利于算法的实施。
根据能量优化过程中,视差标记值扩展移动方式的不同,构造的能量网格图也会有所不同。每次优化过程中仅改变一个像素点的视差标记值的标准移动很容易陷入局部最小值,这样不利用能量函数的最小化。而本发明采用的Boykov的一次α扩展移动思想则是对那些视差标记值不为α的集合同时进行大规模的优化,使图像中一部分像素点的视差标记值重新标记为α,以此不断循环最终求的全局最优解。采用α扩展移动思想下的能量网格图构造如图5所示。
构造网格图时,网格图中的每条边分配了一定的权值,网格图中一般包括两种边,分别是t-连接边和n-连接边。t-连接边为原始图像中某像素点和终端相链接形成的边,边上的权值表示将终端节点代表的视差值赋给该像素时的惩罚量,此惩罚量等价于能量函数为公式(7)中的数据项。例如,网格图中的像素点p与源点和汇点相连接的t-连接边可表示为和n-连接边为图像中相邻像素点相连接形成的边。边上的权值表示相邻像素视差不一致是的惩罚量,此惩罚量等价于能量函数中平滑项。对于n-连接边要分成两种情况,如同图5所示,当存在两相邻的像素点q和r,且它们的视差值相等时,即fq=fr时,则它们可直接通过n-连接边e{q,r}连接;当存在两相邻的像素点p和q,当它们的是差值不相等时,即fp≠fq,则在它们之间增加一个辅助节点a{p,q},此时两点p和q与辅助点a{p,q}形成辅助边能量网格图图5中顶点和连接边变为:
相对应的链接边的权值如表1所示。其中Pα表示视差值为α,即为源点标记视差值。
表1链接边权值表
S3.2改进的α扩展移动算法;
传统的α扩展移动算法中的源点α是以随机顺序开始的,本发明将源点α的设置顺序改为以视差分布的大概率的视差值优先设置。因为相对于小概率的视差标记值α,大概率的视差标记值α。在进行α扩展移动时对能量函数的变化影响更大些,从而能够更加快速完成能量函数最小化。本发明包含的改进的具体步骤是:1)通过S1中的SSD算法和S2中的左右一致性校验准则得到初始视差值;2)求得初始视差值的视差分布图;3)将α按照视差分布中的大概率视差值优先设定。
再者,传统的α扩展移动算法是以(即此时的能量函数值小于前一次)作为算法继续循环的条件。但当算法执行至一定程度时,不仅能量函数的变化量很小,而且图像像素的视差标记值的变动也是非常小的。本发明设定一个阈值T,当时,算法整体结束,以此缩短了算法运行的时间S3.3能量函数最小化;
在S3.2中的α扩展移动过程中,图像像素的视差会被不断重新标记,能量函数也不断变化。图割的立体匹配算法中的能量函数的最小化等价于求解网络流中最小割问题。所以要通过能量函数获得图像对的最优视差结果,关键在于求得α扩展移动过程中最小割。
以图5为例,其切割为C,视差标记值fC是与切割C有关像素点的视差值。当切割C将像素点p与图的源点α切割开时,则像素点p的视差值被标记为α;当切割C将像素点p与图的汇点切割开时,像素点的视差值就保持原来的标记fp。用公式可以表示为:
推广到像素点个数较多的情况,能量函数的最小化和最小割的等价公式为:
S4.视差结果的后处理;
通过S1、S2和S3处理之后,本发明还采用了一些视差的后处理步骤来提高视差精度。视差的后处理也是立体匹配步骤中的视差求精的体现。本发明采用的视差后处理主要是:首先利用S2中的左右一致性检测中的RLC检测和遮挡过滤对视差结果进行处理,从而改善了遮挡点的视差;再有,双边滤波器来进行视差图像平滑处理。利用双边滤波对视差图进行处理不仅达到了平滑的效果,也保持了图像的边缘信息。
假设滤波前图像I的像素点p(x,y)的灰度值为Ip,滤波后的图像为BI在该像素点的灰度值为BIp,则双边滤波的公式如(19)和(20)示。
其中,q(u,v)是以像素p为中心像素的领域像素点,领域像素集合记为S,Wp称为归一化因子,是空间滤波核函数,是灰度核滤波函数,和的表达式如下示:
式中,σs表示高斯函数的标准差;sr表示高斯函数的标准差。
图6为原始的图割的立体匹配算法处理结果,图7为本实施案列算法的处理结果。从整体的错误视差的像素点百分比(bad-paixel-all,B)、无遮挡区域的错误视差的像素点百分比(bad-pixel-nonocc,)以及不连续D区域错误视差的像素点百分比(bad-pixel-discount,BD)三个方面进行误差统计。计算B、以及BD公式分别为:
其中dC(x,y)为算法计算得到的视差值,dT(x,y)为真实的视差值,δd为容许的错误视差值的阈值。从视差图评价指标对比表可以看出:本实施案例的立体匹配的视差图的精确高于原始的图割算法,在不连续等特殊区域的视差精确度也有所提高,同时算法的运行时间也有一定程度缩短。将本实施案列算法运用到相机拍摄的图像对中,处理结果如图8所示。
表2视差图评价指标对比
本发明中提出的方法实际上可嵌入FPGA实现,运用于监控系统相机或摄像机中。
本领域技术人员将清楚本发明的范围不限制于以上讨论的示例,有可能对其进行若干改变和修改,而不脱离所附权利要求书限定的本发明的范围。尽管己经在附图和说明书中详细图示和描述了本发明,但这样的说明和描述仅是说明或示意性的,而非限制性的。本发明并不限于所公开的实施例。