一种基于背景差异抠图和稀疏光流法的深度的生成方法 【技术领域】
本发明涉及图像分割和深度生成技术,尤其是一种基于背景差异抠图和稀疏光流法的深度的生成方法。
背景技术
三维图像和显示是未来信息系统的一种重要表现形式,三维图像和显示层次分明色彩鲜艳,具有很强的视觉冲击力,让观看的人驻景时间更长,留下深刻的印象;另外三维图像和现实给人以真实、栩栩如生,人物呼之欲出,身临其境的感觉,有很高的艺术欣赏价值。但是目前立体显示市场存在着这样的矛盾:立体显示设备的飞速普及和立体显示片源的严重匮乏。目前,由平面媒体资源转换成立体的媒体内容包含两种情况,一是通过重新设计的平面摄像机进行拍摄,如用一对立体对摄像机进行拍摄,再通过后期的制作获取三维的媒体内容;另一种是将已经拍摄好的平面媒体资源转换成具有三维信息的内容,本发明主要针对后一种转换方法。目前普遍采用的方法是通过运动信息、颜色信息等相关信息得到每一帧图片的深度图,然后采用基于深度的描述算法(Depth-based rendering)得到三维图。在此过程中,最重要的一个步骤就是如何获取每个像素点的深度值。
很多研究利用运动信息,主要是光流法来近似估计深度,这种方法对于只有摄像机作平移运动的背景图能产生比较好的效果,但是很多情况下,视频中都会有运动物体,比如本专利便可应用于特定场景的监视。针对摄像机固定即背景不动,但有运动物体的场景,采用光流法会产生不可自身无法解决的遮挡问题,主要是前景运动物体与背景之间的遮挡。既然遮挡主要产生于前景与背景之间,那么如果将背景抠出掉,只求前景物体的每个像素点的光流值,然后由此运动信息得到每个像素点的深度值,这样便能回避或者说解决遮挡问题,而且由于只计算部分点的光流,可以大大提高深度生成的速度。
【发明内容】
本发明的目的是克服现有技术中存在的不足,提供一种基于背景差异抠图和稀疏光流法的深度的生成方法,可以有效地解决遮挡问题、提高深度图生成的速度以及实现全自动深度图的生成。
按照本发明提供的技术方案,所述基于背景差异抠图和稀疏光流法的深度的生成方法包括以下步骤:
1)选择颜色空间和建立相应的颜色模型;
2)建立背景模型,从而对背景有一个准确的描述:所述背景模型用于表示场景背景的属性;
3)图像中所有像素点的分类:当确定了颜色空间和颜色模型之后,采用差异估计函数来计算当前帧和参考帧在同一像素处的颜色特征值差异,并根据预先计算出的色度和亮度的阈值,按照分类函数将像素划分为前景或背景类,由此划分出前景运动物体;
4)优化像素分类结果:去除噪点,同时平滑运动物体的边缘;
5)由稀疏光流法对得到的前景运动物体的特征点求光流值;
6)由稀疏光流点的光流值估算前景运动物体上其它点的光流值:采用差值的方法,对于物体上的一点,以该点到各特征点的距离的倒数作为各特征点对该点光流影响地权值,然后将各特征点的光流值与权值的乘积的和作为该点的光流值;
7)由光流值得到深度值:对于某个像素点,其光流值越大,代表该像素点离相机的距离越近,则其深度值越大;另外,考虑人的视觉感知信息,认为:当光流值大于或者小于给定的阈值时,人无法明显感知深度的变化,将光流值与深度值之间的关系用反正切函数关系来表示。
步骤1所述选择颜色空间和建立颜色模型是将当前帧和参考帧的比较在一定的颜色空间内进行,确定颜色空间后,根据实验场景特征建立颜色模型,用于当前帧和参考帧的逐像素比较。
步骤2所述建立背景模型的方法为:对于一段有N帧静止背景序列的视频,首先计算前N帧背景序列的各像素的色度和亮度,并分别求出色度和亮度的概率密度分布,即针对所述概率密度分布,指定检测概率,求出用于区分背景和前景的色度和亮度的阈值(τCD、τα1、τα2),其中,τCD为在指定检测概率下,色度的概率分布的阈值上限,τα1和τα2为指定检测概率下,亮度的概率分布的阈值下限和上限;最后,由阈值(τCD、τα1、τα2)将各像素点划分为前景、背景、阴影点以及高亮点。
步骤4所述优化像素分类结果的方法为采用中值滤波以去除零星的噪声点和不连续的点。
步骤5所述前景运动物体的特征点包括:角点、亮度梯度变化大的点、边缘点。
步骤6所述求物体上任一点的光流值的计算公式如下:
F=Σi=1N(1||x-yi||×fi)]]>
式中,yi代表图象中特征点的位置坐标,fi代表特征点yi的光流值,N代表特征点的数目,x代表图象中任一点的位置坐标,F为任一点x的光流值。
步骤7所述由光流值得到深度值的转换关系由下式给出
DepthValue=(255/π)[arctan(FlowValue-(MaxFlowValue-MinFlowValue)/2)+π/2]
式中,FlowValue为像素点的光流值,MaxFlowValue为所有像素点中光流的最大值,MinFlowValue为所有像素点种光流的最小值,DepthValue为像素点的深度值。
本发明的优点是:由于只求前景物体的每个像素点的光流值,然后由此运动信息得到每个像素点的深度值,这样便能回避或者说解决遮挡问题,而且由于只计算部分点的光流,可以大大提高深度生成的速度。
【附图说明】
图1是RGB颜色空间模型图。
图2(a)是归一化亮度分布直方图。
图2(b)是归一化色度分布直方图。
图3是本发明流程图。
【具体实施方式】
下面结合附图和实施例对本发明作进一步说明。
如图3所示,本发明包括以下步骤:
1)选择适当的颜色空间或建立颜色模型:针对本研究,选择RGB颜色空间,在RGB空间中,要考虑到选取适当的颜色特征将色度和亮度分离,这样有助于检测阴影及高光区域。在该空间中,比较两个颜色的差异即为比较两个向量在空间中的欧式距离,如图1所示。图中,Di为差异向量,根据人类视觉特征,该差异向量可分解为亮度Ei-αiEi和色度CDi分量,由此建立颜色模型。
2)当确定了一定的颜色空间后,就要选择适当的颜色特征或建立颜色模型进行差异比较。适当的颜色特征可以有效的帮助核心算法正确划分背景、前景,消除不正确的划分。快速有效的建立背景模型,从而对背景有一个准确的描述——背景建模:当确定颜色空间和选定适当的颜色模型后,就可以针对一段时间内采集到的背景照片进行训练,从而建立背景统计模型。在建立背景统计模型之前,先定义一下几个量,以便于研究:针对RGB空间中的一个像素i,Ei=[ER(i),EG(i),EB(i)]代表在参考帧(背景图片)中该像素对应的期望RGB颜色,Ii=[IR(i),IG(i),IB(i)]代表像素在当前帧(当前图片)的RGB颜色值。我们的目标是衡量出Ii和Ei的扭转,即当前帧该像素处的颜色值与参考帧的期望值之间的差异。于是,接着将定义亮度扭转分量α和色度扭转分量CD,其中α是一个标量,尽量使得观察颜色接近期待颜色线,该分量是由最小化下式得到的:φ(αi)=(I-αiEi)2;CD定义为观察颜色和期望颜色线的垂直距离,以此来衡量观察颜色和期望颜色在色度上的差异,如下式所示:CDi=||Ii-αiEi||。
通过背景建模可以得到每个像素点的一个4元向量<Ei,si,ai,bi>,Ei为颜色期望值,μk(i)(k=R,G,B)为颜色值的均值,si是颜色值的标准方差,ai,bi分别表示第i个像素的亮度扭转分量和色度扭转分量的平均变化,N为视频的背景帧数。计算过程如下:
i.首先计算出亮度扭转分量αi和色度扭转分量CDi:
Ai=([μR(i)σR(i)]2+μG(i)σG(i)]2+μB(i)σB(i)]2)]]>
Bi=μR(i)AiσR2(i)]]>
Ci=μG(i)AiσG2(i)]]>
Di=μB(i)AiσB2(i)]]>
αi=BiIR(i)+CiIG(i)+DiIB(i)
CDi=(IR(i)-αiμR(i)σR(i))2+(IG(i)-αiμG(i)σG(i))2+(IB(i)-αiμB(i)σB(i))2]]>
ii.计算ai和bi:
ai=Σi=0N(αi-1)2N]]>
bi=Σi=0N(CDi)2N]]>
iii.为了确定阈值,将ai和bi进行量化,如下:
α^i=|αi-1ai|]]>
CD^i=CDibi]]>
至此,背景模型已经建立。
3)各像素的分类:针对N张背景图片,一共有N×X×Y个像素点,其中X和Y分别为图像的行数和列数。首先将等分成M等分(本实验中取M=10000),然后统计落在这些等分区间中的像素点的个数,从而可以得到的概率密度分布,同理可以得到的概率密度分布,如图2所示。针对该概率密度分布图,给定检测概率r(本实验中取为99.9%)后,便能确定亮度的两个阈值:阈值下限τα1对应于检测概率r,阈值上限τα2对应于检测概率1-r;同时可以确定色度的阈值上限τCD。像素分类函数如下式所示:
ταlo的解释:若当前帧中存在一些属于运动物体的像素,这些像素本身的RGB值非常低,若不加该约束,这些相对较暗的像素将总是被错误地划分为阴影。观察发现,在RGB空间中这些像素的颜色向量非常接近原点。而所有的颜色线都相交在原点,因此这些较暗的颜色向量都被认为与任何颜色线都很近或很相似,为了避免这个问题,引入这个最低阈值来表示归一化的亮度扭转分量下界。F:前景;B:背景;S:阴影区域;H:高亮区域。
4)优化像素分类结果:采用中值滤波以去除零星的噪声点和不连续的点。
5)稀疏光流法求光流:对得到的前景运动物体,首先找到前景运动物体的特征点,然后由Lucas-Kanada稀疏光流法求得各特征点(即稀疏光流点)的光流值;所述特征点包括:角点、亮度梯度变化大的点、边缘点等。再由稀疏光流点的光流值估算前景运动物体上其它点的光流值:采用差值的方法,对于物体上的一点,以该点到各特征点的距离的倒数作为各特征点对该点光流影响的权值,然后将各特征点的光流值与其权值的乘积的和作为该点的光流值;
6)由光流值得到深度值:对于某个像素点,其光流值越大,则其深度值越大,另外,将人的视觉感知信息考虑进来,认为,当光流值大于或者小于预先给定或计算好的阈值时,人对深度的变化感知不明显(深度值在0~255之间变化,0代表黑色,255代表白色,深度值越大,表示物体离相机的距离越近)。则我们有理由认为光流值和深度值之间满足反正切关系,公式如下所示:
DepthValue=(255/π)[arctan(FlowValue-(MaxFlowValue-MinFlowValue)/2)+π/2]
式中,FlowValue为像素点的光流值,MaxFlowValue为所有像素点中光流的最大值,MinFlowValue为所有像素点种光流的最小值,DepthValue为像素点的深度值。