发明内容
本发明的目的是提供一种平行双目摄像机***下的基于视差估计的中间视合成技术,包括视差估计与视图插值两个方面的应用。
本发明为实现上述目的,采用如下技术方案:
本发明基于改进BP算法的中间视合成方法包括如下步骤:
步骤1),采用基于改进BP的迭代的方法,来获取每个像素的视差矢量信息;
步骤2),检测出遮挡区域,并对遮挡区域的视差进行补偿,然后再进行中间视图的插值计算:首先利用一致性约束条件对图像进行区域的划分,把图像分为遮挡区域、一致区域和模糊区域,与此同时进行遮挡区域的补偿,然后根据各个区域本身的特点采取不同的插值来获取中间视图。
优选地,步骤1)所述的基于改进BP的迭代的方法如下:
第一步,计算第0级时的初始匹配代价,然后对各个级别时的数据项进行初始化;计算各个级别时的节点与其四邻域节点的颜色距离,并对各个级别时的相邻节点之间的颜色距离值进行初始化;
第二步,共有L级,l=0,1,…,L,每一级的迭代次数为t=0,1,…,T,L和T都为大于1的自然数;
第三步,利用式
对迭代次数为0时的消息进行初始化;然后根据式
计算每个节点的消息m
l,t(d
q),并为每个节点选择最小的信息值minimum;
第四步,对计算所得的消息进行如下处理:
for dq from 1 tok-1:
ml,t(dq)←min(ml,t(dq),ml,t(dq-1)+c)
for dq from k-2to 0:
ml,t(dq)←min(ml,t(dq),ml,t(dq+1)+c)
把minimum加上
式的ρ(I),并保存为MIN;
第五步,把消息向量中的值与MIN比较,如果小于MIN,则消息向量中对应位置的值用MIN替代,最后对消息向量进行归一化,得到最后的消息值;
第六步,迭代次数加1,重复第三到第五步,直到迭代次数为T;
第七步,级数减1,重复第三到第六步,知道级数变为0;
第八步,最后根据式
获取每个节点即像素点的最优标签即视差。
优选地,步骤2)所述的利用一致性约束条件对图像进行区域的划分,把图像分为遮挡区域、一致区域和模糊区域是指:首先,对于左视差图dLR利用式dLR(xL,y)-dRL(xL-dLR(xL,y),y)>T检测出右半遮挡区域,然后对于右视差图dRL利用式dRL(xR,y)-dLR(xR+dRL(xR,y),y)>T检测出左半遮挡区域;并分别对左视差图中的右半遮挡区域和右视差图中的左半遮挡区域进行标记;另外,左图像的最左边部分像素和右图像的最右边部分像素点的视差值都赋0;接着,对左视差图中满足式dLR(xL,y)=dRL(xL-dLR(xL,y),y)的像素区域,标记为右一致区域,对于右视差图中满足式dRL(xR,y)=dLR(xR+dRL(xR,y),y)的像素区域,标记为左一致区域;最后,把左视差图中没有被标记的区域,标记为右模糊区域,把右视差图中没有被标记的区域标记为左模糊区域。
优选地,步骤2)所述的插值方法步骤如下:
首先,以左图像为参考,利用式:
生成左过渡中间视(I
LM),其中右半遮挡区域的像素值直接用左图像的对应位置的像素值代替,而右一致性区域和右模糊区域利用插值技术;
接着,以右图像为参考,利用式:
最后,对左右过渡中间视图像利用式:
优选地,得到合成的中间视图像IM中仍然存在没有被映射的区域,采取反向映射的方法,分别在左右图像中寻找其最接近的点,
分别选取满足式
和式
的左右图像中的最佳匹配点,其中两式的自变量的搜索范围分别为式x
M≤x
L≤x
M+(1-a)·d
max和式x
M-a·d
max≤x
R≤x
M;然后利用式a·I
LM(x
L′,y)+(1-a)·I
RM(x
R′,y)对没有被映射的区域进行插值,得到了最终的中间视图像。
本发明的优点和效果在于:
1.改进了BP算法,去除了过度平滑的不良效果,进一步提高了视差计算的准确性。
2.设计了新的插值算法,更好地考虑到了立体图像各个部分的特点,提高了虚拟视图的视觉效果和质量。
本发明的其他优点和效果将在下面继续描述。
具体实施方式
下面结合附图和实施例,对本发明所述的技术方案作进一步的阐述。
本发明基于改进BP算法的中间视合成方法,包括以下步骤:
从视差估计与视图插值两个大的方面对中间视图合成技术进行分析与研究。这里的视差估计目的也是获取稠密可靠的视差图,不过这里我们将采用一种基于改进BP的迭代的方法,来获取每个像素的视差矢量信息,鉴于以前的BP算法利用线性模型计算平滑项时都是单纯的根据相邻像素被赋予的视差标签之间的差值来设置平滑项的截断值,很可能会导致视差图的过度平滑。在这一部分我们提出了一种利用颜色距离来自适应设置平滑项的截断值的方法;在获取了视差图后,我们将进行视图插值,不过,由于遮挡区域的存在,有了稠密的视差图,并不一定能够获得很好的中间视图像,因为,遮挡区域本身根本就不存在匹配像素点。因此,在视图插值之前,需要检测出遮挡区域,并对遮挡区域的视差进行补偿,然后再进行中间视图的插值计算,这里考虑到图像的各区域可能具有不同的特征,我们提出了一种新的插值策略,首先利用一致性约束条件对图像进行区域的划分,把图像分为遮挡区域、一致区域和模糊区域,与此同时进行遮挡区域的补偿,然后根据各个区域本身的特点采取不同的插值来获取中间视图。
在所述的基于改进BP算法的中间视合成技术中,所述的基于改进BP算法的视差计算步骤如下:
第一步,计算第0级时的初始匹配代价,然后对各个级别时的数据项进行初始化;计算各个级别时的节点与其四邻域节点的颜色距离,并对各个级别时的相邻节点之间的颜色距离值进行初始化。
第二步,假设我们共有L级,l=0,1,…,L,每一级的迭代次数为t=0,1,…,T。
第三步,利用式
对迭代次数为0时的消息进行初始化。然后根据式
计算每个节点的消息m
l,t(d
q),并为每个节点选择最小的信息值minimum。
第四步,对计算所得的消息进行如下处理:
for dq from 1 to k-1:
ml,t(dq)←min(ml,t(dq),ml,t(dq-1)+c)
for dq fromk-2to 0:
ml,t(dq)←min(ml,t(dq),ml,t(dq+1)+c)
把minimum加上
式的ρ(I),并保存为MIN。
第五步,把消息向量中的值与MIN比较,如果小于MIN,则消息向量中对应位置的值用MIN替代,最后对消息向量进行归一化,得到最后的消息值。
第六步,迭代次数加1,重复第三到第五步,直到迭代次数为T。
第七步,级数减1,重复第三到第六步,知道级数变为0;
第八步,最后根据式
获取每个节点(像素点)的最优标签(视差)。
在所述的基于改进BP算法的中间视合成技术中,所述的利用一致性约束条件对图像进行区域的划分,把图像分为遮挡区域、一致区域和模糊区域是指首先,对于左视差图dLR利用式dLR(xL,y)-dRL(xL-dLR(xL,y),y)>T检测出右半遮挡区域,然后对于右视差图dRL利用式dRL(xR,y)-dLR(xR+dRL(xR,y),y)>T检测出左半遮挡区域。并分别对左视差图中的右半遮挡区域和右视差图中的左半遮挡区域进行标记。另外,左图像的最左边部分像素和右图像的最右边部分像素由于左右摄像机拍摄范围的限制,在视差估计的时候虽然也得到了视差值,但是,事实上其根本不存在对应的匹配像素点,因此根据遮挡区域的定义,也应当对其进行遮挡标记(为了补偿的方便标记的同时,这些像素点的视差值都赋0)。
接着,对左视差图中满足式dLR(xL,y)=dRL(xL-dLR(xL,y),y)的像素区域,我们标记为右一致区域,对于右视差图中满足式dRL(xR,y)=dLR(xR+dRL(xR,y),y)的像素区域,我们标记为左一致区域。最后,我们把左视差图中没有被标记的区域,标记为右模糊区域,把右视差图中没有被标记的区域标记为左模糊区域。这样左右图像分别被分成了半遮挡区域、一致区域和模糊区域三部分。
在所述的基于改进BP算法的中间视合成技术中,所述的插值策略步骤如下:
视图插值的过程分为三步,首先,我们以左图像为参考,利用式
生成左过渡中间视(I
LM),其中右半遮挡区域的像素值直接用左图像的对应位置的像素值代替,而右一致性区域和右模糊区域利用插值技术。接着,我们以右图像为参考,利用式
来生成右过渡中间视图像(I
RM),在生成右过渡中间视图像的时候,我们只处理了左模糊区域和左半遮挡区域,对左一致区域没有处理,这是因为左一致区域和右一致区域中的像素点是一一对应的,因此由其得到的中间视点图像的横坐标值也是相等的,所以在对右一致区域进行插值后,没有必要再对左一致区域进行插值。这样便得到了左右过渡中间视图像。最后,我们对左右过渡中间视图像利用式
再进行一次插值。这样便得到了中间视图。
经过以上步骤合成的中间视图像IM中仍然存在没有被映射的区域,因此,需要对其进行进一步的处理。为了解决这个问题,采取反向映射的方法,分别在左右图像中寻找其最接近的点,
为此我们分别选取满足式
和式
的左右图像中的最佳匹配点,其中两式的自变量的搜索范围分别为式x
M≤x
L≤x
M+(1-a)·d
max和式x
M-a·d
max≤x
R≤x
M。然后利用式a·I
LM(x
L′,y)+(1-a)·I
RM(x
R′,y)对没有被映射的区域进行插值,得到了最终的中间视图像。
在三维视频显示***中,摄像机的数目是有限的,只能从特定的视角来描述三维场景。如果想获得自由视角的画面,实现“环视”的效果,解决的方法就是中间视图的合成。中间视图的合成就是根据已知的源图像,来合成位于源图像视点之间的虚拟视点的图像,最简单的情况是平行双目的摄像机***,此时,虚拟视合成即根据左右摄像机摄取的同一场景的图像,生成位于左右参考视点所决定的直线上的中间视图,如图1所示,它主要分为两步:首先,对左右两幅参考图像进行立体匹配,获取每个像素的视差矢量;然后根据左右参考图像中的匹配点对进行插值得到中间新视点的图像。
如图2所示,我们用双目平行摄影***获取包含A到F物体的场景,得到IL和IR左右立体图像对。从图中可以看出,右图像IR中只能看到A、B、C和F物体的投影,而左图像IL中只能看到A、C、E和F物体的投影。我们把像B物体投影区域这样的只能够在右图像看到,而在左图像看不到的像素区域称为左半遮挡区域;把像E物体投影区域这样只能在左图像看到而在右图像看不到的像素区域称为右半遮挡区域;而把像D这样在左右图像中均看不到的像素区域定义为全遮挡区域。
在中间视图的合成时,像D这样的全遮挡区域对于基线上的某个虚拟的视点来说,有可能是半遮挡区域,然而考虑到从左右图像对中得不到物体D的任何信息,同时也为了简化遮挡区域的检测与补偿的难度,我们不考虑像D这样的遮挡区域,而假设中间视点处摄像机所获取的图像上的任意物体,都至少能够在左右图像中的任一图像中看的到。
实验选用经典的立体图像对Tsukuba、Venus、Teddy、Cones进行测试。实验在CPU为Pentium43.4GHz的PC机上运行所得,操作***为WindowsXP SP2,编程工具为VC++6.0。在算法的实现时,我们设置了5级的BP算法,每个级别时的迭代次数分别为{10,10,5,5,5}。算法的参数取值如下表所示。
图3比较了平滑项采用线性模型计算,线性模型取不同截断值时所获取的视差图的性能,当平滑项利用式V(x)=min(c|x|,ρ(I))计算时,我们截断值分别取1.0、3.0、5.0、7.0、9.0,得到前五个点。采用本发明算法根据颜色距离自适应的设置截断值计算平滑项得到最后一个点。
从图中可以看到,根据颜色距离自适应的设置线性模型截断值的方法计算平滑项所获得的视差图,无论是整体误匹配率(all),还是在视差不连续区域(disc.)以及非遮挡区域(nocc.)的误匹配率,基本都处于最低的位置,尤其是对Venus、Teddy及Cones图像。由此可以看出,本发明提出的根据颜色距离自适应设置线性模型截断值的算法,可以为平滑代价的最大最小值设置一个动态的范围,不仅可以避免视差图的过度平滑,而且有利于立体匹配正确率的提高。
根据这种自适应设置线性模型截断值的方法计算平滑项所获得的视差图如图4所示。
我们在这里将本发明提出的算法(实验结果中用Proposed表示)和一种当前最新文献的由Changming Jin,Hong Jeong提出的虚拟视图合成算法(实验结果中用Other表示)进行比较。分别从主观观看、残差图及峰值信噪比三个方面来评价算法结果。
实验时,使用Venus、Teddy、Cones图像序列,左右参考图像分别为图像序列中的第二和第六帧图像,由于获取每帧图像的视点之间的距离相等,这里我们令a分别为0.25、0.5、0.75来合成第三、第四、第五帧图像。
我们首先采用改进BP算法视差估计方法来获取立体图像对的左右视差图。如图5所示,我们列出了Venus图像序列在a分别取值0.25、0.5、0.75时采用发明提出算法和文献中算法合成的虚拟视点的图像。
先简单的所获得虚拟合成视图来看,本发明所述的中间视合成算法可以得到具有照片感的虚拟视点图像,比文献中的算法更为接近于真实图像。
为了更清楚地看出不同算法性能的区别,图6列出了相对应的残差图像。残差图中的白色点线就是虚拟合成图像与真实图像的差异点。可以看出,文献中算法得出的结果白色点线更为清晰,也就是说错误率更高。另外,错误点大部分发生在物体的边缘区域,所以边缘的处理还是将来要进一步优化的一个问题。
本发明算法在非遮挡,不连续和全部区域的错误率三个方面的错误率都低于文献中的算法。对于背景较复杂的图像如Venus,错误率可以减到文献算法的30%;对于背景较复杂的图像如Teddy和Cones,错误率可以减到文献算法的80%。
最后,我们比较了不同虚拟视合成算法的峰值信噪比,我们可以得出,对于背景比较简单的图像(Venus),本发明算法比文献中算法提高了0.1到0.3dB,而对于比较复杂的图像(Teddy和Cones),本发明算法比文献中算法提高了0.4到1dB。