本发明涉及计算机视觉与图像处理领域,特别涉及一种立体匹配方法及系统。
背景技术:
立体匹配是计算机视觉领域的重要组成部分,也是许多3d应用的核心部分。目前,立体匹配方法主要分为局部匹配方法、全局匹配方法以及半全局匹配方法等三类。其中,局部匹配方法复杂度低,运算量小,但匹配效果较差;全局的匹配方法可以获得非常好的匹配效果,但复杂度太高,不能做到实时处理;而半全局的匹配方法其匹配效果介于局部算法和全局算法之间,但其运算量仍然很大,难以应用到实时性要求较高的地方。因此,综合考虑匹配效果和实时性,许多应用选择了折中的算法。
近几年,一种基于非局部的立体匹配算法被提出来。该方法在代价聚集的过程采用最小生成树的方式进行滤波,每一个像素都利用了图像中其他所有像素进行代价的聚集,但其运算量接近局部的方法,因此受到广泛的关注。该方法在图像纹理比较丰富的区域能够获得比较好的效果,但是,该方法计算复杂、耗时长、耗内存,且在纹理较弱的区域以及室外实际场景中却难以取得理想的效果。因此,如何提升该立体匹配算法的匹配效果,是本领域技术人员需要解决的技术问题。
技术实现要素:
本发明的目的是提供一种立体匹配方法及系统,能够有效地解决弱纹理区域误匹配的问题,并在室外场景中也能取得较好的匹配效果,同时,计算量较小,实时性好。
为解决上述技术问题,本发明提供一种立体匹配方法,所述方法包括:
步骤s10、获取参考图像以及目标图像,并确定聚合区域的视差区域;
步骤s11、将所述参考图像以及所述目标图像均等分为n*n个区域,得到参考分块图像以及目标分块图像;
步骤s12、根据所述参考分块图像以及所述目标分块图像,利用分块变换算法,将所述参考图像变换为聚合参考图像,所述目标图像变换为聚合目标图像;
步骤s13、分别计算所述聚合参考图像以及所述聚合目标图像的census特征,并进行立体匹配,计算得到所述聚合参考图像的census特征与所述聚合目标图像的census特征的匹配代价值;
步骤s14、分别计算各所述参考分块图像与对应的相同分块位置的所述目标分块图像的区域代价聚合;
步骤s15、比较所述匹配代价值与各所述区域代价聚合,若存在所述匹配代价值大于区域代价聚合,则重新分割区域代价聚合小于所述匹配代价值的区域代价聚合对应的参考分块图像以及目标分块图像并计算分割后的区域代价聚合,直到所述匹配代价值均小于各区域代价聚合;
步骤s16、计算所述匹配代价值均小于各区域代价聚合时各参考分块图像与对应目标分块图像中每个像素的代价聚合,并利用wta方法得到第一视差图像。
可选的,步骤s12包括:
制作第一空图像和第二空图像,其中,所述第一空图像中每个像素点与所述参考图像的像素点一一对应,所述第二空图像中每个像素点与所述目标图像的像素点一一对应;
计算每一个所述参考分块图像的像素值之和,并赋值给所述第一空图像中对应的像素点中,得到聚合参考图像;
计算每一个所述目标分块图像的像素值之和,并赋值给所述第二空图像中对应的像素点中,得到聚合目标图像。
可选的,重新分割区域代价聚合小于所述匹配代价值的区域代价聚合对应的参考分块图像以及目标分块图像,包括:
分别判断代价聚合小于所述匹配代价值的区域代价聚合对应的各参考分块图像以及各目标分块图像的像素平均值和中间像素值的大小;
当参考分块图像或目标分块图像的像素平均值小于中间像素值,则按照估计视差进行区域扩大,当参考分块图像或目标分块图像的像素平均值大于中间像素值,则按照估计视差进行区域缩小。
可选的,计算所述匹配代价值均小于各区域代价聚合时各参考分块图像与对应目标分块图像中每个像素的代价聚合,包括:
确定像素的视差区域[dmin,dmax];
以估计视差d为基准,对所述参考图像的每一个像素点p(x,y),在所述目标图像上确定对应的像素点p(x-d,y);其中,d∈[dmin,dmax];
计算像素点p(x,y)与像素点p(x-d,y)之间对应的census特征的汉明距离,得到像素的代价聚合cd(p);
计算各参考分块图像中相邻节点的边权重,并根据所述边权重得到四连通的无向图;
利用boruvka算法对所述无向图进行处理,得到最小生成树;
将所述最小生成树转换为具有根节点和叶节点的树形结构,并对所述树形结构从叶节点到根节点进行滤波得到向上代价聚集;
根据所述向上代价聚集,对所述树形结构从根节点到叶节点进行滤波得到各参考分块图像与对应目标分块图像中每个像素的代价聚合。
可选的,本方案还包括:
将所述参考图像作为新的目标图像,将所述目标图像作为新的参考图像,并根据所述新的目标图像以及所述新的参考图像,执行所述步骤s11至所述步骤s16得到第二视差图像;
利用所述第一视差图像和所述第二视差图像进行视差求精,得到最终视差图像。
可选的,利用所述第一视差图像和所述第二视差图像进行视差求精,得到最终视差图像,包括:
对所述第一视差图像和所述第二视差图像进行左右一致性检测确定视差稳定点;
利用公式
根据所述新的代价集合
本发明还提供一种立体匹配系统,包括:
获取模块,用于获取参考图像以及目标图像,并确定聚合区域的视差区域;
划分模块,用于将所述参考图像以及所述目标图像均等分为n*n个区域,得到参考分块图像以及目标分块图像;
聚合模块,用于根据所述参考分块图像以及所述目标分块图像,利用分块变换算法,将所述参考图像变换为聚合参考图像,所述目标图像变换为聚合目标图像;
匹配代价计算模块,用于分别计算所述聚合参考图像以及所述聚合目标图像的census特征,并进行立体匹配,计算得到所述聚合参考图像的census特征与所述聚合目标图像的census特征的匹配代价值;
区域代价聚合模块,用于分别计算各所述参考分块图像与对应的相同分块位置的所述目标分块图像的区域代价聚合;
匹配模块,用于比较所述匹配代价值与各所述区域代价聚合,若存在所述匹配代价值大于区域代价聚合,则重新分割区域代价聚合小于所述匹配代价值的区域代价聚合对应的参考分块图像以及目标分块图像并计算分割后的区域代价聚合,直到所述匹配代价值均小于各区域代价聚合;
视差图像获取模块,用于计算所述匹配代价值均小于各区域代价聚合时各参考分块图像与对应目标分块图像中每个像素的代价聚合,并利用wta方法得到第一视差图像。
可选的,所述聚合模块,包括:
空图像制作单元,用于制作第一空图像和第二空图像,其中,所述第一空图像中每个像素点与所述参考图像的像素点一一对应,所述第二空图像中每个像素点与所述目标图像的像素点一一对应;
聚合参考图像单元,用于计算每一个所述参考分块图像的像素值之和,并赋值给所述第一空图像中对应的像素点中,得到聚合参考图像;
聚合目标图像单元,用于计算每一个所述目标分块图像的像素值之和,并赋值给所述第二空图像中对应的像素点中,得到聚合目标图像。
可选的,所述匹配模块,包括:
判断单元,用于分别判断代价聚合小于所述匹配代价值的区域代价聚合对应的各参考分块图像以及各目标分块图像的像素平均值和中间像素值的大小;
重新划分单元,用于当参考分块图像或目标分块图像的像素平均值小于中间像素值,则按照估计视差进行区域扩大,当参考分块图像或目标分块图像的像素平均值大于中间像素值,则按照估计视差进行区域缩小。
可选的,本方案还包括:
视差求精模块,用于将所述参考图像作为新的目标图像,将所述目标图像作为新的参考图像,并根据所述新的目标图像以及所述新的参考图像计算得到第二视差图像;利用所述第一视差图像和所述第二视差图像进行视差求精,得到最终视差图像。
可见,该方法利用聚合图像进行匹配,加快匹配速度;在基于聚合图像的匹配基础之上对匹配块的像素进行精准匹配,匹配精度高,计算量小,同时,解决了弱纹理区域误匹配的问题;本发明还提供一种立体匹配系统,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例所提供的立体匹配方法的流程图;
图2为本发明实施例所提供的立体匹配系统的结构框图。
具体实施方式
本发明的核心是提供一种立体匹配方法及系统,能够有效地解决弱纹理区域误匹配的问题,并在室外场景中也能取得较好的匹配效果,同时,计算量较小,实时性好。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明实施例所提供的立体匹配方法的流程图;该方法可以包括:该方法可以包括:
步骤s10、获取参考图像以及目标图像,并确定聚合区域的视差区域;
具体的,这里的参考图像和目标图像为经过畸变校正后的图像。稠密的立体匹配算法主要关注匹配问题,因此在匹配之前需要将两幅图像中的像素校正到同一水平线上,即参考图像和目标图像为经过畸变校正后的图像,从而可以保证匹配准确性和可靠性。
这里可以将左图像作为参考图像对应的右图像作为目标图像;也可以是将右图像作为参考图像对应的左图像作为目标图像。即本实施例并不对参考图像以及目标图像具体选择方式进行限定。通常情况下以左图像作为参考图像对应的右图像作为目标图像。
确定聚合区域的视差区域可以用
步骤s11、将参考图像以及目标图像均等分为n*n个区域,得到参考分块图像以及目标分块图像;
步骤s12、根据参考分块图像以及目标分块图像,利用分块变换算法,将参考图像变换为聚合参考图像,目标图像变换为聚合目标图像;
具体的,该步骤即将参考图像基于分块变换成聚合参考图像,将目标图像基于分块变换成聚合目标图像。具体过程可以如下:
制作第一空图像和第二空图像,其中,第一空图像中每个像素点与参考图像的像素点一一对应,第二空图像中每个像素点与目标图像的像素点一一对应;
计算每一个参考分块图像的像素值之和,并赋值给第一空图像中对应的像素点中,得到聚合参考图像;
计算每一个目标分块图像的像素值之和,并赋值给第二空图像中对应的像素点中,得到聚合目标图像。
具体的,制作两张空图像:第一空图像和第二空图像,第一空图像和第二空图像的尺寸与参考图像和目标图像一致,例如为n*n,本实施例并不对图像的具体尺寸进行限定。第一空图像的每个像素点与参考图像中的像素点成一一对应关系,第二空图像的每个像素点与目标图像中的像素点成一一对应关系。计算参考图像的每一个分块s(即每一个参考分块图像)的像素值之和:
通过上述获得聚合参考图像以及聚合目标图像的方式,即利用像素之和作为图像聚合指标,简单方便,计算量小。可以提高立体匹配的速度。
步骤s13、分别计算聚合参考图像以及聚合目标图像的census特征,并进行立体匹配,计算得到聚合参考图像的census特征与聚合目标图像的census特征的匹配代价值;
其中,本实施例并不限定匹配代价值的获取方式。由于加权census特征比一般的颜色梯度特征更有效,因此本实施例可以采用census特征计算聚合图像(包括聚合参考图像以及聚合目标图像)的特征。
具体的,该步骤具体可以是计算聚合参考图像和聚合目标图像的census特征,同时对聚合参考图像census特征和聚合目标图像census特征进行立体匹配,计算聚合参考图像census特征和聚合目标图像census特征的匹配代价cc=|i(s)-i(c)|。
步骤s14、分别计算各参考分块图像与对应的相同分块位置的目标分块图像的区域代价聚合η;
步骤s15、比较匹配代价值与各区域代价聚合,若存在匹配代价值大于区域代价聚合,则重新分割区域代价聚合小于匹配代价值的区域代价聚合对应的参考分块图像以及目标分块图像并计算分割后的区域代价聚合,直到匹配代价值均小于各区域代价聚合;
具体的,若存在匹配代价值cc大于区域代价聚合η,则重新分割参考图像和目标图像中对应的区域,否则,则认为该区域的聚合代价匹配完成(即结束该参考分块图像和对应的目标分块图像之间的匹配)。即每一个参考分块图像与对应的相同分块位置的目标分块图像都要进行对应的比较,若比较结果为匹配代价值cc大于该参考分块图像和目标分块图像对应的区域代价聚合η时,将该参考分块图像和目标分块图像重新分割,至到该参考分块图像和目标分块图像对应的区域代价聚合η大于匹配代价值cc。
本实施例并不对具体的重新分割规则进行限定。具体的,重新分割规则可以如下:
当需要重新分割的参考分块图像以及对应的目标分块图像的像素平均值小于中间像素值,则按照估计视差进行区域扩大,当参考分块图像或目标分块图像的像素平均值大于中间像素值,则按照估计视差进行区域缩小。即需要重新分割的参考分块图像以及对应的目标分块图像的像素平均值小于中间像素值,则按照估计视差
步骤s16、计算匹配代价值均小于各区域代价聚合时各参考分块图像与对应目标分块图像中每个像素的代价聚合,并利用wta方法得到第一视差图像。
具体的,本实施例并不限定具体的每个像素的代价聚合的具体方式。具体可以如下:
确定像素的视差区域[dmin,dmax];
以估计视差d为基准,对参考图像的每一个像素点p(x,y),在目标图像上确定对应的像素点p(x-d,y);其中,d∈[dmin,dmax];
具体的,对于参考图像中的分块s(其中分块的意思即第s个参考分块图像)在目标图像中的匹配分块c之间进行估计稠密匹配,即估计两个分块中的像素点的一一匹配的对应关系。具体为:以估计视差取值d为基准,d∈[dmin,dmax],对参考图像的每一个像素点p(x,y),在目标图像上找到对应的像素点p(x-d,y)。
计算像素点p(x,y)与像素点p(x-d,y)之间对应的census特征的汉明距离,得到像素的代价聚合cd(p);
计算各参考分块图像中相邻节点的边权重,并根据边权重得到四连通的无向图;
其中,本实施例在生成最小生成树时,图像像素的排列方式可以看作是8连通或者4连通的邻接图,本实施例中可以任意进行选取,并不对此进行限定。进一步为了减小运算量,优选的可以采用4连通的连接方式。
具体的,将图像看作四连通的无向图,图中的节点为各个像素点,相邻节点r和s之间边的权重为像素间各通道颜色值的最大差异,计算公式如下:
利用boruvka算法对无向图进行处理,得到最小生成树;
具体的,将得到的无向图利用boruvka算法(最小生成树算法)生成最小生成树;其中,树中任意两个节点间的距离dis(p,q)为连接两个节点间路劲权重之和,两个节点的相似度s(p,q)为
将最小生成树转换为具有根节点和叶节点的树形结构,并对树形结构从叶节点到根节点进行滤波得到向上代价聚集;
根据向上代价聚集,对树形结构从根节点到叶节点进行滤波得到各参考分块图像与对应目标分块图像中每个像素的代价聚合。
其中,为了保证滤波效果可以进行两次滤波,具体过程可以是:将最小生成树转换为具有根节点和叶节点的树形结构,并对树形结构从叶节点到根节点进行滤波得到向上代价聚集;根据向上代价聚集,对树形结构从根节点到叶节点进行滤波得到参考图像的像素代价聚集。
具体的,最小生成树转换为具有父节点(即根节点)和子节点(即叶节点)的树形结构。对树形结构进行两次滤波,第一次从叶节点到根节点滤波,得到向上代价聚集
其中,p(vc)表示节点vc的父节点,cd(v)表示像素点v的代价聚集,s(v,vc)表示像素点v和vc之间的相似度权重,
本实施例中两次滤波保证了每一个像素都能以全图的像素作为支撑区域,并且聚集代价只需要计算一次,显著降低了算法的运算量。
具体的,通过上述的计算每个像素的代价聚合的方法,在基于聚合图像的匹配基础之上对匹配块的像素进行精准匹配,匹配精度高,计算量小,同时,解决了弱纹理区域误匹配的问题。
进一步,利用wta方法得到第一视差图像。具体的,根据wta(winnertakeall)原则,对每一个像素点选取最终代价最小的视差值作为最终的视差值,得到第一视差图像。进一步还可以对其进行快速中值滤波得到滤波后的第一视差图像,这里的第一视差图像可以用d(p)表示。
基于上述技术方案,本发明实施例提的立体匹配方法,该方法利用聚合图像进行匹配,加快匹配速度;在基于聚合图像的匹配基础之上对匹配块的像素进行精准匹配,匹配精度高,计算量小,同时,解决了弱纹理区域误匹配的问题。
基于上述技术方案,该方法还可以包括:
将参考图像作为新的目标图像,将目标图像作为新的参考图像,并根据新的目标图像以及新的参考图像,执行步骤s11至步骤s16得到第二视差图像;
利用第一视差图像和第二视差图像进行视差求精,得到最终视差图像。
具体的,视差求精的过程。即本实施例还可以包括将参考图像作为新的目标图像,将目标图像作为新的参考图像,并根据新的目标图像以及新的参考图像,执行步骤s11至步骤s16得到第二视差图像;利用第一视差图像和第二视差图像进行视差求精,得到最终视差图像。
其中,交换参考图像和目标图像,即将上述实施例中参考图像和目标图像进行交换。将参考图像作为新的目标图像,将目标图像作为新的参考图像,并根据新的目标图像以及新的参考图像。例如当上述实施例中左图像作为参考图像对应的右图像作为目标图像时,交换后的结果即左图像作为目标图像对应的右图像作为参考图像。这里的第二视差图像可以用dr(p)表示。
可选的,利用第一视差图像和第二视差图像进行视差求精,得到最终视差图像可以包括:
对第一视差图像和第二视差图像进行左右一致性检测确定视差稳定点;
利用公式
根据新的代价集合
基于上述技术方案,本发明实施例提的立体匹配方法,该方法利用聚合图像进行匹配,加快匹配速度;在基于聚合图像的匹配基础之上对匹配块的像素进行精准匹配,匹配精度高,计算量小,同时,解决了弱纹理区域误匹配的问题,并在室外场景中也能取得较好的匹配效果。同时运算量也没有大幅增加,可以获得较好的匹配效果。
下面对本发明实施例提供的立体匹配系统进行介绍,下文描述的立体匹配系统与上文描述的立体匹配方法可相互对应参照。
请参考图2,图2为本发明实施例所提供的立体匹配系统的结构框图;该系统可以包括:
获取模块100,用于获取参考图像以及目标图像,并确定聚合区域的视差区域;
划分模块200,用于将参考图像以及目标图像均等分为n*n个区域,得到参考分块图像以及目标分块图像;
聚合模块300,用于根据参考分块图像以及目标分块图像,利用分块变换算法,将参考图像变换为聚合参考图像,目标图像变换为聚合目标图像;
匹配代价计算模块400,用于分别计算聚合参考图像以及聚合目标图像的census特征,并进行立体匹配,计算得到聚合参考图像的census特征与聚合目标图像的census特征的匹配代价值;
区域代价聚合模块500,用于分别计算各参考分块图像与对应的相同分块位置的目标分块图像的区域代价聚合;
匹配模块600,用于比较匹配代价值与各区域代价聚合,若存在匹配代价值大于区域代价聚合,则重新分割区域代价聚合小于匹配代价值的区域代价聚合对应的参考分块图像以及目标分块图像并计算分割后的区域代价聚合,直到匹配代价值均小于各区域代价聚合;
视差图像获取模块700,用于计算匹配代价值均小于各区域代价聚合时各参考分块图像与对应目标分块图像中每个像素的代价聚合,并利用wta方法得到第一视差图像。
基于上述实施例,聚合模块300可以包括:
空图像制作单元,用于制作第一空图像和第二空图像,其中,第一空图像中每个像素点与参考图像的像素点一一对应,第二空图像中每个像素点与目标图像的像素点一一对应;
聚合参考图像单元,用于计算每一个参考分块图像的像素值之和,并赋值给第一空图像中对应的像素点中,得到聚合参考图像;
聚合目标图像单元,用于计算每一个目标分块图像的像素值之和,并赋值给第二空图像中对应的像素点中,得到聚合目标图像。
基于上述实施例,匹配模块600可以包括:
判断单元,用于分别判断代价聚合小于匹配代价值的区域代价聚合对应的各参考分块图像以及各目标分块图像的像素平均值和中间像素值的大小;
重新划分单元,用于当参考分块图像或目标分块图像的像素平均值小于中间像素值,则按照估计视差进行区域扩大,当参考分块图像或目标分块图像的像素平均值大于中间像素值,则按照估计视差进行区域缩小。
基于上述任意实施例,该系统还可以包括:
视差求精模块,用于将参考图像作为新的目标图像,将目标图像作为新的参考图像,并根据新的目标图像以及新的参考图像计算得到第二视差图像;利用第一视差图像和第二视差图像进行视差求精,得到最终视差图像。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的一种立体匹配方法及系统进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。