实时的多视图合成器的制造方法

文档序号:7804128阅读:170来源:国知局
实时的多视图合成器的制造方法
【专利摘要】一种实时的多视图合成器,其能减少闪烁。通过立体匹配从立体图像产生第一深度图。当立体匹配比较差或帧到帧的变化太大时,视差备选就选择从单视点图像产生的不经过立体匹配的第二深度图,这有效防止立体匹配误差而产生可见的失真和闪烁。平坦的或无纹理区域可以使用第二深度图,而具有较好立体匹配的区域就使用第一深度图。深度图被延迟一帧并被缓冲。当选中的最低代价像素位置在前后两帧间的位移在阈值范围内时,低代价像素时间一致性调整机制将前一步所计算的代价值进一步降低。一致性混合视图合成对于较少视图使用前向映射,对于较多视图,从前向映射结果中进一步使用后向映射。旋转掩模是后向映射实时产生的。
【专利说明】实时的多视图合成器
【【技术领域】】
[0001]本发明涉及三维图像处理系统,特别是涉及由单一或立体图像合成多视点图像。【【背景技术】】
[0002]将深度或三维(3D)效果加入到电影里,已经有几十年了。观众要戴上特制的3D眼镜,一只眼睛是红色滤镜,另一只眼睛是蓝色滤镜。电影是由两个摄像机同时拍摄的,或者被改为有两个独立的图像。处理先使用滤色镜为每个眼睛制造不同的图像,再将两个图像合并成单个图像。不需要特殊的显示设备,但每只眼睛都会感觉到图像有色彩损失。
[0003]最近,有人对两个图像使用不同的极化,而不是对两个图像使用不同颜色。戴上的是偏光眼镜,而不是红色/蓝色眼镜。
[0004]有一种特殊的液晶显示(IXD)眼镜,其交替地遮住两只眼睛,可以用于特殊的3D电视或显示器。液晶眼镜和显示器同步,在两个视图之间交替。左右格式和上下格式可以采用主动快门或偏振。
[0005]自动立体技术不使用特殊的3D眼镜。相反,显示装置被改变成投射不同的图像到用户的左眼和右眼。在不同位置的观众可能有不同的视觉感知。
[0006]多视点系统可以显示超过两个视图,如每帧8个或16个视点。例如,一组16个照相机可同时拍摄16个视频流,用于在一个16视图的多视点系统上显示。
[0007]由较早前的立体相机拍摄的视频每帧只有两个视图图像。多视点显示可能有更多的视图,如8、16、或28。这就期望能从两个视图的立体视频,或从具有深度图的单个视图图像中,生成或合成出多视点图像。
[0008]较早的视频并没有深度信息或立体视图。也期望能从这些单一视图的遗留视频中合成出多视图。
[0009]图1显示了从两个视图的立体视图帧中合成出八个视图的多视图帧。每帧有两个图像的一个立体视图是输入源或输入。从该立体视图可以创建一个深度图。深度图将图像的较近部分显示为白色,如人手,背景物体显示为黑色,如人头后面的过道。希望能从生成的深度图和输入的立体图像,创建出八个视图的多视点图像。
[0010]视频流中帧与帧之间的差异会引起多视点图像不稳定,从而导致可察觉的闪烁。这种闪烁很扰人并令人讨厌。
[0011]多台摄像机之间的相机不匹配也会在视频压缩或其他图像处理时产生不好的匹配结果。在视频摄像前的相机校准可能是不准确的。图像内的纹理或缺乏纹理,可能会导致更多的错配。这些问题都会导致观众可见的杂散块或失真。这样的像差是不希望有的。
[0012]有些应用要求多视点图像是实时合成的,或只有一帧的延迟。内存需求还要减少,尤其是小型便携设备上观看。因此,仅存储一帧或两帧是理想的。
[0013]一些较新的多视图显示会使用掩模(mask),以确定多个视图中的每个视图。这些掩模可旋转。对于实时应用来说旋转掩模可能需要太多的处理能力和内存。
[0014] 期望有一个多视图合成器,仅使用一帧的延迟就能创建多视图图像。也期望有一个视图生成器,其在低纹理区域有较少的视觉失真,并有较少的闪烁。也期望有一个能处理掩模旋转的系统。期望能淘汰不好的匹配结果,以减少失真和闪烁。

【发明内容】

本发明所要解决的技术问题是:为了弥补现有技术的不足,提供一种实时的多视图合成器,以解决上述问题。
本发明公开一种实时的多视图合成器,包括:第一深度生成器,其通过立体匹配第一立体视图和第二立体视图而生成第一深度图;一致性检测器,其产生一个立体匹配率,所述立体匹配率表示所述第一深度图的质量,一致性检测器通过比较以所述第一立体视图为起始匹配得到的像素位置和以所述第二立体视图为起始匹配得到的像素位置,产生所述立体匹配率;第二深度生成器,其从不超过一个的单视点图像中产生第二深度图;视差备用选择器,当所述立体匹配率小于一个匹配阈值时,所述视差备用选择器选择所述第二深度图而不是所述第一深度图作为一个选中的深度图;前向映射器,其将源图像中的子像素移动一个偏移量,以产生一个目标图像,所述偏移量是从所述选中的深度图中读取或产生的,对于作为目标图像的多视图中的各个视图,其所述偏移量被缩放到不同的值;后向映射器,其读取多个视图掩模,以找到一个选中的视图掩模,所述选中的视图掩模在所述目标图像中产生一个子像素位置,所述后向映射器对所述选中视图掩模使用一个视图偏移量,在所述源图像中找到一个源子像素 ,所述后向映射器通过拷贝所述源子像素到所述目标图像的所述子像素位置上,生成所述目标图像。
优选的,还包括:混合映射器,其触发所述前向映射器生成目标图像作为中间图像,并且触发所述后向映射器使用所述中间图像作为源图像,以生成所述目标图像作为一个输出图像。
优选的,还包括:掩模旋转器,其将所述视图掩模旋转一个角度,以产生一个旋转的视图掩模给所述后向映射器使用;其中视图掩模被存储在一个存储器中,而产生的所述旋转的视图掩模并不存储在所述存储器中。
优选的,其中所述掩模旋转器还包括:子像素计算器,其计算红色、蓝色、绿色子像素的位置;反向旋转器,其旋转所述红色、蓝色、绿色子像素的位置,产生小数形式的子像素位置;地址生成器,其对所述小数形式的子像素位置产生基础子像素地址在一个基础掩模上;加法器,其将在所述基础子像素地址上读取的小数形式的基础掩模加总,生成所述旋转的视图掩模。
优选的,还包括:帧延迟缓冲器,其存储来自所述视差备用选择器的所述选中的深度图,所述选中的深度图是从先前帧产生的;其中,深度图是从先前帧产生的,并被所述帧延迟缓冲器延迟,然后被所述前向映射器和所述后向映射器在当前帧内使用。
优选的,还包括:低代价像素时间一致性性调节器,当当前帧内一个匹配像素位置离先前帧内匹配像素位置的距离小于一个距离阈值时,用以降低所述第一深度图所需的代价值。
优选的,还包括:帧到帧视差备用选择器,当当前帧的立体匹配率和先前帧的立体匹配率之间的差值大于一个变化阈值时,其选择所述第二深度图作为所述选中的深度图。
优选的,还包括:下采样器,其对一个高分辨率输入图像进行下采样,生成所述第一立体视图和所述第二立体视图,所述第一立体视图和所述第二立体视图的分辨率都小于所述高分辨率输入图像;其中,输入到所述第二深度生成器的一个单视点图像是所述第一立体视图。
优选的,还包括:代价产生器,其比较所述第一立体视图的一个参考像素和与第二立体视图的参考像素对应的参考位置周围的一组像素,以产生多个代价值;优化器,其选择一个像素位置作为所述第二立体视图中的匹配像素位置,其对应的代价值是上述多个代价值中最低的。
优选的,其中所述选中的深度图包括深度值、视差值、或图像内像素的偏移量。
【【专利附图】

【附图说明】】
[0015]图1显示从两个视图的立体图像合成出八个视图的多视点图像。
[0016]图2是多视点合成器的简化方框图。
[0017]图3显示更详细的深度图产生过程。
[0018]图4显示更详细的视图合成器。
[0019]图5是视差备选的流程图。
[0020]图6A-B突出显示使用视差备选后的视觉效果。 [0021]图7是低代价像素时间一致性的调整流程图。
[0022]图8A-B显示由于立体匹配误差和帧到帧变化而引起的可见失真。
[0023]图SC显示使用低代价像素时间一致性调整后可见失真的减少。
[0024]图9A-C突出显示前向、后向、混合映射以产生多视点图像。
[0025]图10是混合多视点合成的流程图。
[0026]图11是前向映射过程产生多视点图像的流程图。
[0027]图12是后向映射过程产生多视点图像的流程图。
[0028]图13显示使用前向、后向、混合映射合成的视图比较。
[0029]图14A-D显示掩模旋转。
[0030]图15显示存储旋转掩模的视图合成。
[0031]图16显示动态生成反转掩模的视图合成。
【【具体实施方式】】
[0032]本发明涉及改进的三维图像和多视点生成。以下描述使本领域技术人员能够依照特定应用及其要求制作和使用在此提供的本发明。所属领域的技术人员将明了对优选实施例的各种修改,且本文所界定的一般原理可应用于其它实施例。因此,本发明不希望限于所展示和描述的特定实施例,而是应被赋予与本文所介绍的原理和新颖特征一致的最广范围。
[0033]图2是一个多视图合成器的简化框图。如立体相机拍摄的立体图像10每帧有两个视图。从该立体图像,深度生成器20产生每个像素位置的深度。深度生成器20可以使用各种技术来生成深度图12。深度图12是从立体图像10生成的。
[0034]深度图具有图像中所有像素的深度或Z值。视差是立体或多视点图像之间,如左视图和右视图之间的物体的移动。当图像的拍摄角度被合适地纠正后,该移动就是沿着行或水平线(X方向)的。物体沿着该水平线从左视图到右视图的移动或移位(△?就被称为视差。
[0035]视差可以以沿该水平线的像素数目来度量,该水平线即物体看上去是在左视图到右视图之间移动的那条线。视差与深度成反比。更靠近相机的物体看上去比背景物体要移动更大距离。一旦从立体图像产生了视差,使用两个相机之间的距离或基线,以及焦距,通过三角测量就可从视差X计算出深度Z。
[0036]在实践中,输入左、右立体视图图像,用于深度生成器20内的立体匹配。一个立体匹配程序通过在左图像像素位置周围几个像素的范围内沿水平线在右图像内搜索,试图找出左右视图里相同的像素。在水平线的该范围内的最匹配左像素的右像素被选择为匹配像素。左像素位置和右像素位置之间的距离是左像素的视差。
[0037]为左图像中的所有像素产生的所有视差形成视差图。视差是左和右视图之间的明显的移动或位移的像素的数目。视差与深度成反比。如果视差立体图像已知的,深度可以依据三角测量原理使用两个摄像头间的距离(或称之为基线)以及摄像头的焦距来计算。一旦产生视差图,就可以生成深度图。
[0038]深度图12被帧缓冲管理器18内的帧延迟缓冲器16延迟了一个帧时间周期。视图合成器40从帧缓冲管理器18接收延迟的深度图12和立体图像10的当前帧。从立体图像10的当前帧生成一个单视点图像。如果没有场景变化,帧到帧通常都没有显著的变化,当前帧的单视点图像和先前帧的深度图的配对,对于视频来说人眼是察觉不出的,除非有场景变化。理想情况下,如果存储器存储不是一个问题,那么前一帧的单视点图像可以被存储并匹配,得到前一帧的深度图。
[0039]视图合成器40通过选择或合并当前帧的像素和先前帧的深度信息,生成多视点图像14。当立体匹配比较好时,使用从两个立体图像生成的深度图,但是当立体匹配比较差时,使用从单个视图图像生成的作为备用(fallback)的深度图,以减少由立体匹配较差而造成的可见误差。
[0040]图3显示更详细的深度图生成。深度生成器20接收立体图像10的先前帧,并产生深度图12,深度图12被帧延迟缓冲器16延迟,在视图合成器40中和当前帧一起使用(更详细地显示于图4中)。
[0041]两个深度图被产生出来。第一深度图是只由一个视图构建的,而第二深度图是由两个立体图像构建的。只从一个视图构建的第一深度图不容易有立体匹配误差,因为没有使用立体图像,所以,当发生立体匹配错误以及第二深度图不可靠时,第一深度图可以作为备用。第一深度图是由二维转三维转换器24从单个视图生成的。第二深度图是由代价产生器26 (cost generator)和其它块从两个立体图像生成的。
[0042] 虽然视差图或深度图可为每个单独的像素而构建,如果视差搜索是针对像素块而不是针对每个像素进行,那么会减少计算量。或者,原始图像被下采样到一个较低的分辨率,其中每个低分辨率像素是几个较高分辨率像素的一个平均。立体图像10被下采样器22下采样,以产生较低分辨率的立体图像。使用下采样图像也有助于过滤掉杂散像素(straypixel)。
[0043]选取左立体图像为二维转三维转换器24的输入。二维转三维转换器24不接收立体输入,但仅接收单视图的输入。二维转三维转换器24使用非立体技术来估计深度并产生深度图。这些非立体技术可以使用各种技巧,例如对较远处物体增加模糊度、雾化背景物体、阴影处理、线性透视(linear perspective)和灭点透视(vanishing perspective)、使用二阶高斯导数的离焦(defocus)等。
[0044]由二维转三维转换器24产生的深度图对立体匹配问题并不敏感,因为它不是从立体图像产生的。深度图是从一个单一图像而生成的。因此由二维转三维转换器24生成的该深度图可以作为一个备选,当立体匹配较差或不稳定时,由视差备选30来选择。
[0045]来自下采样器22的两个下采样立体图像被传送到代价产生器26。代价产生器26为图像中的每个像素产生一个视差范围代价。当视差很大并且两个立体像素彼此非常不同时,就产生高代价。当像素匹配很好时,说明像素点很可能来源于同一物理位置,就产生低代价。代价函数可以是基于像素颜色的绝对值或是单个右像素和单个左像素的亮度差,或者可以通过一个像素和其相邻像素之间的海明距离(Hammingdistance)而计算出。
[0046]聚合器28将多个像素的代价加总,如3 X 3窗口内的像素,或基于相似特征如亮度的不规则小块内的像素。通过考虑多个像素为单位进行优化,以抵消杂散像素的干扰。聚合器有助于产生更平滑的深度图。这通常是一个合理的步骤,因为大部分物体都大于一个像素。优化器32选择视差范围内代价最低的右视图像 素。视差是作为像素范围中心的左像素位置,和代价最低的右像素位置的差异。通过直接查找三角测量函数,可以由视差而产生一个深度图。
[0047]一致性检测器34比较立体匹配过程的结果。代价产生器26和聚合器28产生原始代价和加总代价,它们既用于左像素作为参考点的左-到-右(LR)立体匹配过程,也用于右像素作为参考点的右-到-左(RL)立体匹配过程。优化器32产生一个LR视差和一个RL视差。理想情况下,该LR视差和RL视差应该相等。
[0048]一致性检测器34比较LR视差和RL视差。当其差值超过一个一致性阈值时,如超过相当于3个深度级别的视差值时,那么这个像素不是一致的。一致性检测器34将视差差值小于一致性阈值的像素累计起来,产生一个百分比,即在一帧或一个区域内的像素符合一致性的百分比。这个百分比被称为立体匹配率。立体匹配率表示符合一致性的像素的百分比,如图像或区域中65 %的像素是符合一致性的。
[0049]当立体匹配率小于一个立体匹配率阈值时,比如70%,那么一致性检测器34就发信号给视差备选30,丢弃由代价产生器26、集合器28、和优化器32从立体图像产生的深度图。视差备选30会选择由二维转三维转换器24从单一视图图像生成的深度图。
[0050]细化器36 (Refiner)通过使用滤波器如中值或模滤波器(mode filter),去除深度图的伪影(artifact)。细化器36可有效去除由立体匹配过程造成的单像素错误。
[0051]一致性检测器34比较先前帧的立体匹配率和正在由深度生成器20处理的当前帧的立体匹配率。当从一帧到下一帧的立体匹配率变化超过一个立体匹配率变化阈值时,则立体匹配率是不稳定的。一致性检测器34发信号到视差备选30,回去使用由二维转三维转换器24从单一视图图像产生的更稳定的深度图。
[0052]当从帧到帧的立体匹配良好且稳定时,视差备选30就使用由代价产生器26、集合器28、和优化器32通过使用两个立体图像的立体匹配而产生的视差来生成一个深度图。立体匹配往往会比二维转三维转换器24产生更精确的深度计算,因为输入的是两个立体视图图像,而不是一个单一视图图像。但是,当立体匹配不稳定时,如在纹理较少或平坦区域里,视差备选30可以回到由二维转三维转换器24产生的没那么准确但更稳定的深度图。
[0053]理想情况下,例如当在帧内存在预定义区域或窗口时,或通过边缘检测或各种分割技术,图像可以定义几个区域。然后一致性检测器34就可以计算图像中当前区域的立体匹配率,而不是计算整个图像。该区域的立体匹配率与立体匹配率阈值进行比较,进一步地,当前帧和先前帧内的当前区域的立体匹配率差值与立体匹配率变化阈值进行比较。然后根据当前区域的阈值比较,一致性检测器34让视差备选30从二维转三维转换器24(当超过阈值时),或从优化器32,为该区域而不是为整个帧选择深度或视差值。那些超过阈值的区域会选择来自二维转三维转换器24的深度图,例如平坦的或较少纹理的立体匹配不佳的区域,而其它区域将使用来自优化器32的更准确的立体匹配深度图。
[0054]当立体匹配良好时,视差备选30选择从立体图像产生的深度图,但当立体匹配较差时则退回使用由二维转三维转换器24从单一视图图像生成的深度图。深度图12包含当立体匹配率超过率阈值且变化低于变化阈值时从两个立体视图图像生成的深度图,或者当一个帧内的立体匹配低于阈值时,或者当立体匹配率变化超过一个可接受阈值时从一个单一视图图像产生的深度图。
[0055]可以首先产生视差图,视差图即显示两个立体图像之间的物体的位移。具有最低代价函数的像素位置的视差,可以分配给该区域所有像素。然后依据三角测量原理利用焦距和基线得到深度或Z值,从视差图生成一个深度图。可以使用查找表来实现预设的三角测量函数,将视差转换成深度。
[0056]帧之间的一致性性是通过低代价像素时间一致性调整器38提供的。低代价像素时间一致性检测器38接收由帧延迟缓冲器16延迟的深度图12。深度数据表示先前帧的最低代价像素的位置,可以用于同步先前帧的图像数据和其相关联的深度图。
[0057]视频序列中从一帧到下一帧的小小差异就会产生立体匹配的大变化。这样的立体匹配突然变化,在输出的多视点图像中会产生闪烁。当满足条件时,低代价像素时间一致性检测器38通过使聚合器28将由代价产生器26产生的代价减少一个偏差因子(biasfactor),从而减少闪烁。条件就是最低代价像素位置没有移位太大。因此,当由优化器32选择的像素位置在先前帧和当前帧中几乎是相同位置时,代价又降低一个偏差因子。当很少有帧到帧的运动时,这个有条件的代价降低会产生稳定性。
[0058]对于一个像素,导致代价减少的条件是当从先前帧到当前帧的一个范围内的最低代价像素位置的移动小于一个距离阈值时。当第一帧中的位置离第二帧中的位置小于距离阈值时,满足条件且代价函数降低。例如,距离阈值可以是4个像素,偏差因子可以是0.5,这样,当最低代价像素的位置离较早帧中位置小于4个象素时,其代价降低了一半。因此,当一个帧中代价最小的位置靠近其他帧中代价最小的位置时,代价降低。
[0059]图4显示更加详细的视图合成器。深度图12由帧延迟缓冲器16存储并且延迟了一帧。先前帧的延迟深度图与当前帧的两个立体图像10中的一个在深度同步器19中相结合,形成一个具有当前帧图像的中间图像,但是是先前帧的深度图。深度同步器19同步当前帧图像的开始位置和先前帧的深度图的开始位置。使用先前帧的深度图,可以有更多的时间来产生深度图,因为深度产生是在先前帧上进行的。对于视图合成,不需要先前帧的图像,只需要先前帧的深度图。
[0060]帧缓冲管理器18将先前帧的深度图和当前帧的立体图像10中的一个立体图像作为2D+深度信息15,提供给视图合成器40。
[0061]视图合成器40从深度图和单个或立体图像生成多视点视图。从先前帧的单一视图反向映射到当前帧的立体视图,是在后向映射器42上进行。从当前帧的立体视图前向映射到先前帧的单一视图,是在前向映射器44上进行。
[0062]当每帧的多视图的数目较小时,例如9或更小,则仅使用前向映射。混合视图合成选择器46只从前向映射器44选择前向映射结果。
[0063]当每帧的多视图的数目较大时,例如多于9,则使用前向映射和后向映射。混合视图合成选择器46从前向映射器44选择前向映射结果,也从后向映射器42选择后向映射结
果O
[0064]可以使用掩模从由混合视图合成选择器46中合成的视图生成多个视图。前向映射器44使用立体图像10,并将每个像素移动一个偏移量,该偏移量是从帧延迟缓冲器16的深度图产生的。偏移量可以通过缩放视差来产生。对于要生成的多个视图中的每个视图,偏移量乘以一个比例因子,如对视图O乘以-4,对视图1乘以-3,对视图2乘以-2,对视图3乘以1,对视图4乘以0,对视图5乘以+1,对视图6乘以+2,对视图7乘以+3。然后每个视图的子像素都移动一个 缩放的偏移量。移动子像素可能会留下空洞,或某些位置上没有子像素,因此对每个视图图像都要进行填洞程序。其结果是几个视图图像,如8个视图图像。
[0065]在每个视图图像上应用不同的掩模来生成多个掩模视图图像。最后,将这多个掩模视图图像加在一起,产生一个多视点图像。
[0066]后向映射器42从最终图像位置重建每一个子像素。对每个输出像素位置,应用掩模,以确定该位置由哪个多视图生成输出的子像素。因此,一个单一视图被选中。对多视图中的每个视图,偏移量是不同的。使用由掩模选择的视图偏移量,来查找在立体图像10中或者在一个单一输入图像中的子像素的原始位置。然后,立体图像10中的子像素被复制到输出像素位置。然后对于输出图像中的所有行,对于行上的所有像素,此过程重复进行。
[0067]掩模器48提供掩模给多视图中的每个视图。在一些实施例中掩模可以旋转,然后应用到后向映射器42。生成的多视图图像作为多视点图像14输出。
[0068]图5是视差备选(fallback)程序的流程图。该程序可以通过在硬件逻辑门、图形处理器、通用处理器或其它引擎上实施来执行视差备选30。图像内有很少或没有纹理的区域是由纹理检测器102来检测。然后每个区域都通过下面的步骤104-112针对该区域分别进行处理。像素之间只有非常小变化的平坦区域(Flatregion)可以从步骤104跳到步骤112。在步骤112,这些平坦区域可以被分配使用由二维转三维转换器24从单一视图生成的深度图。
[0069]对每个像素或像素块,评估立体匹配(步骤104)。在LR过程中,将左立体图像的一个像素,同右立体图像中沿一条水平线上在同一位置附近的多个像素进行比较,以找到一个最佳匹配。最佳匹配可以是最低SAD(绝对差和)、SSD(平方差和)或其他函数。对每个像素或块,可从立体图像产生视差,从焦点和基线通过三角测量产生深度。对于右立体图像的一个像素,与左立体图像的一系列像素进行比较(RL过程),重复该过程。当LR过程和RL过程的结果都在一致性阈值之内时,该像素的立体匹配是一致的。帧或区域内的所有像素的结果被合并,得到一个一致性结果的百分比,或一个立体匹配率。
[0070]当立体匹配率小于匹配阈值时(步骤106),可以判断在该区域内的立体匹配结果不好。在步骤112,由二维转三维转换器24从单视点图像生成的作为备用的深度图用于该区域中。
[0071]在该区域的立体匹配率大于匹配阈值时(步骤106),但是当前帧和先前帧之间的立体匹配率变化超过一个变化阈值时(步骤108),那么由二维转三维转换器24从单视点图像生成的作为备用的深度图被用于该区域中(步骤112)。这能防止由于立体匹配误差带来的闪烁,因为深度图是从单视图产生的,而不是从立体视图产生的。
[0072]当该区域的立体匹配率大于匹配阈值时(步骤106),而且当前帧和先前帧之间的立体匹配率变化小于所述变化阈值时(步骤108),则判断该区域内的立体匹配结果较好。在步骤110,由代价产生器26、集合器28和其他模块从立体图图像生成的深度图被用于该区域中。
[0073]例如,匹配阈值可以是65%,变化阈值可以是10 %。然后,当该区域内至少有65%的像素是匹配的,那么立体匹配被认为是良好的,可以用于生成多视点图像。当立体匹配低于65%,则2D备选用于该区域。当先前帧的这个区域有70%的匹配率,当前帧中有82%的匹配率,那么匹配变化过大,也是2D备选,而不是立体匹配的结果,用于此区域。
[0074]图6A-图6B突出显示使用视差备选的视觉效果。在图6A,输入为“左图像”,它是输入到深度生成器20的左立体图像,也是输入到二维转三维转换器24的。
[0075]二维转三维转换器24产生图6A最右边的“单一视图输出”深度图。因为这个深度图是从一个单一图像生成的,而不是从立体图像生成的,所以它对立体匹配误差不敏感。
[0076]代价产生器26、聚合器28、优化器32和一致性检测器34从两个立体图像产生“立体匹配输出”图像。暗区域比亮区域具有更小的深度。因此立体匹配能正确地识别背景床单,因为具有小的深度,而芦荟植物及其盆具有更高的深度(更靠近观看者)。在植物的中心处直接指向观看者的芦荟植物的叶茎具有最大的深度,显示出明亮的白色。
[0077]“匹配率”图像是由一致性检测器34对图像中小区域产生的立体匹配率。暗区域具有较差的立体匹配率,如芦荟植物的边缘。亮区域具有良好的立体匹配,如背景床单。床单上的图案作为纹理,以帮助立体匹配程序准确地匹配左、右视图像素。
[0078]整体立体匹配率是81%,这高于匹配阈值65%,因此,视差备选30选择由立体匹配生成的深度图。
[0079]在图6B,“匹配率”图像比图6A中的具有更多暗区域。整体立体匹配率更低,45%。因为45%低于匹配阈值65%,那么丢弃立体匹配深度图。视差备选30选择由二维转三维转换器24产生的作为备用的深度图。由二维转三维转换器24产生的深度图没有使用立体图像或立体技术,所以对立体误差不敏感。
[0080]“立体匹配输出”图像显示了几个立体匹配误差。有桌子表面靠近咖啡杯和软盘处有几个暗黑色区域。这些深色区域代表大深度,但它们并真不是背景,因为它们在桌子上,更靠近前景。此外,左下角还有较暗的区域,这里应该是较亮(前景)区域。因此,立体匹配结果不佳。
[0081]桌面是平的,或者说是无纹理区域,缺乏纹理会阻碍立体匹配。与此相反,在图6A的床单的图案就是纹理,有助于立体匹配。
[0082]图7是一个低代价像素时间一致性调整程序的流程图。当此程序在由处理器或硬件门电路执行时,就是低代价像素时间一致性调整器38。深度生成器20内的聚合器28、优化器32和一致性检测器34可以使用调整的代价,以产生一个更好的深度图,该深度图可被视差备选30选择。
[0083]在步骤172,最后一帧的视差是从帧延迟缓冲器16中获得的。视差是从二维转三维转换器24,或从代价产生器26和聚合器28中产生的,这取决于视差备选30为图像的每个区域选择哪种视图源。当前像素位置上获胜的(最低代价)的视差被选中。或者,前几帧的深度的运行平均值可以取代优化。
[0084]在步骤174,代价产生器26产生的代价被有条件地调整。当正在与左视图当前像素位置测试匹配的右视图像素位置在前一帧(右视图像素位置)的视差的距离阈值内时,那么代价乘以一个偏差因子。当偏差因子小于I时,代价降低,此时被测试的像素位置靠近前一视差的像素位置。因此,当当前帧视差接近前一帧的视差,代价降低。代价降低会提高帧之间的一致性度量值,因为与较大变化的视差相比,小变化的视差会得到代价降低。那些导致较大视差变化的像素位置,被分配以较高的代价,因此不太可能被选择为最小代价像素位置来确定当前视差。
[0085]在步骤176,那些范围内的具有最低代价的右视图像素位置被选择为最小代价像素位置。从左视图像素到右视图像素位置的距离就是左视图像素的视差。
[0086]在步骤177,当在左视点图像内还有更多像素时,那么在步骤178选择左视点图像的下一个像素,为此新像素位置,该过程从步骤172开始重复进行。
[0087]当最佳匹配是一个小距离时,偏差因子可以小于1,使代价降低。因此,当从帧到帧的视差有很小变化时,通过该偏差因子将代价降到更低值,代价被调整了。代价较低的像素位置更容易被选择为视差,因此视差的大变化是不会被选择的,提供了更稳定的和无差错的图像合成。
[0088]图8A-图SB显示了由于立体匹配错误和帧到帧的变化引起的可见伪影。在图8A,前景中实验室墙有许多暗黑色和白色点和块。实验室墙上纹理的缺乏使得很难将左立体图像像素匹配到右立体图像上的同一像素。实验室墙上的所有像素看起来很相像。
[0089]图8A显示第一帧中的立体匹配错误。既不使用视差备选30也不使用低代价像素时间一致性检测器38。图8B、8C显示第二帧。在图SB,不使用低代价像素时间一致性检测器38。在图8C,使用低代价像素时间一致性检测器38。如图8B所示,实验室墙上仍然有可见伪影。从帧到帧的立体匹配结果还是不稳定。然而,当低代价像素时间一致性检测器38也被启用时,图8C显示平坦的实验室墙壁上可见的斑点和块大大减少了。
[0090]图9A-图9C突出显示前向、后向以及混合映射以生成多视点图像。有先前帧的深度图存储在帧延迟缓冲器16中。在帧缓冲器管理器18中有当前帧的立体视图。其中一个立体图像10被选择作为源图像。目标图像是多视点图像14,其是输出。
[0091]图9A显示前向映射。源图像的子像素被移动一个缩放视差(偏移量)来生成多个视图。将掩模应用于这些多视图上,以产生输出的多视点图像,其是目标图像。
[0092] 图9A-图9C中,每个图像的前3个子像素位置被显示为1、2和3。在图9A中,在源单视点图像的位置I上的源子像素被移动一个偏移量+1,移动到中间单视点图像的位置
2。在该视图上应用掩模,创建目标多视点图像。其它子像素以相同的方式被移位和掩模,构建目标多视点图像。不同的视图有不同的偏移量,这就有了 3D效果。可以有多个中间图像,每个视图都有一个中间图像。[0093]图9B显示后向映射。在后向映射中,输出或目标图像中的每个子像素位置首先被滤波器或掩模扫描,以确定哪个掩模适用于该子像素位置。找到正确的掩模,也就确定了多视图中的一个视图,该确定的多视图的缩放视差(偏移量)就被用于从输出目标图像中的子像素位置移动到源输入图像的一个子像素位置。该子像素从源输入图像中读取并且放置在输出子像素位置上。因此,后向映射是从目标图像回看到源图像。
[0094]举例来说,需要产生目标或输出多视点图像的子像素位置3上的子像素。覆盖子像素位置3的掩模有一个偏移量+2。掩模的偏移量被反转并用于查找源单视点图像中的子像素(位置3-2=位置I)。在 源单视点图像的位置I上的源子像素被复制到目标多视点图像的位置3。以相同的方式来得到其它像素,构建目标多视点图像。
[0095]图9C显不混合映射。混合映射用于更多数量的视图,例如多于9。使用了一个两阶段的过程。在第一阶段,前向映射生成9个中间视图。在第二阶段,使用后向映射生成剩下的视图。利用中间视图作为源图像进行后向映射。使用后向映射从这些中间视图中选择子像素并移动,产生输出视图。后向映射视图与前向映射视图相结合,生成最终的多视点图像。
[0096]举例来说,需要产生目标或输出多视点图像的子像素位置3上的子像素。通过移位和掩模前向映射产生一些中间图像,如图9A所示。
[0097]从中间图像到最终目标图像使用后向映射,覆盖子像素位置3的掩模有一个偏移量+1。掩模的偏移量被反转并用于查找由前向映射产生的中间图像中的子像素(位置3-1=位置2)。在中间图像的位置2的源子像素被复制到目标多视点图像的位置3。以相同的方式来得到其它像素,构建目标多视点图像。
[0098]图10是混合多视图合成的流程图。当图10的程序在硬件或处理器上实施时,就是视图合成器40。在步骤150,确定多视图的视图数量N。对于立体视图,N =2。在步骤152,当N是9或更小,则在步骤154仅使用前向映射生成多视图。
[0099]在步骤152,如果N大于9,那么在步骤156使用前向映射生成每第N个视图中。在步骤158,使用后向映射生成其他视图1至N-1及其倍数。在步骤160,前向映射结果被延迟一帧,用于与后向映射结果同步。
[0100]图11是前向映射过程产生多视点图像的流程图。在步骤180,从帧缓冲管理器18读取单视点图像和深度图。单视点图像可以是立体图像中的一个视图(例如左视图)的当前帧。在步骤182,深度图中的深度值(Z)可以转换为偏移量(X),例如使用基于三角测量原理预先计算的查找表进行转换。每个视图都可以有一个不同的偏移量。因此,为每个子像素位置,都计算几个偏移量,每个视图一个偏移量。在步骤184,单视点图像的源子像素被移位一个偏移量,并被复制到多视点图像中。
[0101]移位子像素会产生空洞,或者说子像素位置上没有任何子像素值。在步骤186,使用一个空洞填充程序来填充这些空洞。例如,相邻子像素进行平均,以产生一个子像素值来填充各个空洞。滤波器188被应用到每个多视图图像,改善图像和去除伪影。在步骤190,将视图掩模应用到多视图中的每个视图。视图掩模滤掉或去除不应该出现在该视图中的颜色子像素。例如,视图#3可能只有红色(R)子像素,因此视图掩模#3会删除所有绿色(G)、蓝色⑶子像素。
[0102]然后在步骤192,加总或合并多个视图,以产生一个单一的多视点图像。这个合并图像被输出为多视点图像194。输出的输出多视点图像194的不同颜色来自不同的视图,可以通过视图掩模来识别。
[0103]图12是一个后向映射过程产生多视点图像的流程图。在步骤280,从帧缓冲器管理器18读取单视点图像和深度图。或者,图11的前向映射过程产生中间图像,而不是输出多视点图像194。
[0104]在步骤282,深度图中的深度值(Z)可以转换为偏移量(X),例如使用基于三角测量原理预先计算的查找表进行转换。每个视图都可以有一个不同的偏移量。因此,为每个子像素位置,都计算几个偏移量,每个视图一个偏移量。
[0105]在最后的输出多视点图像294中的每个子像素位置都被连续地选择作为当前输出子像素位置,用于后向映射处理。在步骤284,确定哪几个视图掩模应该为当前输出子像素位置生成像素。例如,如果当前像素的红色分量有一个来自视图1的红色掩模,那么只使用视图1的R值来生成该像素。其他视图的全部R分量都被屏蔽掉。
[0106]在步骤282中为当前输出子像素位置生成的偏移量,乘以一个在步骤284中确定的该视图掩模的比例因子。在步骤286,此乘法产生视图调整的偏移量。
[0107]在步骤288,将视图调整的偏移量加入到当前输出子像素位置,得到源子像素地址。源子像素地址是在步骤280读取的在单视图或中间图像中的子像素位置。在步骤290,在单视图或中间图像的源地址位置上的子像素被复制到输出子像素位置。
[0108]在步骤292,对于输出图像中的其它子像素,重复该过程,直到输出多视点图像294的所有子像素都已生成。
[0109]图13比较使用前向、后向和混合映射合成的视图。一个芦荟植物对着床单背景的图片。如图所示圆圈区域,在后向映射图像中,芦荟植物的顶端有两个端部和两个中心叶茎。后向映射使图像有错觉,产生了前向映射里不存在的错误。但是,前向映射的计算代价高昂。混合映射使用了前向和后向映射,但没有显示存在于向后映射图像中的可见错误。
[0110]一些多视图显示可以使用旋转掩模。制造商声称,旋转掩模提供更好的3D效果,更少有来自微透镜片(a lenticular sheet)的云纹图案扭曲(Moir6pattern distortion)。但是,当存储旋转掩模时,因为旋转掩模不是规则的和重复性的,存储需求可能要很大。当存储旋转掩模时,后向映射可以是特别困难。
[0111]图14A-图14D显示掩模旋转。图14A显示了一个没有旋转的原始掩模。显示的是八列标记为X0,XL..X7和三行标记Y0,Yl, Y2,但实际的掩模要大得多。每个单元格可以控制被掩住图像中一个子像素的遮掩。单元格上的数字表示该单元格子像素是对应于8个视图中哪个视图的。例如,创建多视图#3的掩模选择所有在有“3”的单元格位置上的子像素,而所有其他单元格位置上的子像素都被阻止。
[0112] 每一列可以对应于单一颜色的子像素。例如,列X0,X3,X6可以是红色子像素,列XI,X4,X7可以是绿色子像素,且X2,X5可以是蓝色子像素。
[0113]图14B显示旋转后的掩模。图14C显示旋转后的掩模叠置在原始掩模上。
[0114]图14D显示了原始掩模每个单元格有旋转掩模四个单元格的部分。单元格200是在X3、Yl处,是在图14A原始掩模中用于多视图掩模#3的。当应用掩模时,在这个位置上的原始或源图像的子像素通过多视图#3,但对于其他7个多视图,被阻止。
[0115]原始单元格200和四个旋转后的单元格部分202、204、206、208重叠。旋转单元格202是用于掩模#3的。旋转单元格204是用于掩模#4的。旋转单元格206是用于掩模#3的。旋转单元格208是用于掩模#5的。原始单元格200将包含旋转多视图#3、4、5的部分。
[0116]对于目标子像素(X = 3,y = I),使用反转来确定预旋转视图掩模位置(x = 3.2,y = 0.8)。根据预旋转视图掩模位置,计算每个视图的子像素视图掩模。在这种情况下,视图3、视图4和视图5都是非零项。由于不同的视差,多视图中的每个视图都有不同的子像素偏移量。视图3有一个子像素偏移量2* (偏移量),视图4的子像素偏移量为1*(偏移量),视图5的子像素偏移量为_1*(偏移量)。假设偏移量为3,则视图3的偏移量为6,视图4的偏移量为3,视图5的偏移量为-3。它们是基于一个子像素视图掩模而成比例的。成比例的子像素偏移量都应用到源像素上,加总以获得目标像素。
[0117]图15显示存储有旋转掩模的视图合成。原始源图像120具有从深度图计算而来的像素数据和视差。在步骤122,根据深度,为多视图中的每个视图计算子像素位置,如前面对图11描述。在步骤124,读取从原始或基础掩模产生并存储的旋转掩模。然后在步骤126,使用旋转掩模掩住源图像中的子像素,以形成目标或输出多视点图像。
[0118]—个典型的基础掩模是一个重复的8X8掩模,8行内覆盖24个RGB分量。三个RGB子像素构成每个像素。为了在内存中存储这个掩模,表示哪个视图去到哪个RGB分量的576位数值(64个像素x3子像素/像素x3位视图数值)被存储下来。由于该8X8的掩模是重复的,只有64个数值需要存储,而不需要存储大很多的全图像像素。
[0119]但是,当掩模旋转时,多个视图会落入单个子像素位置,并且重复单元不再是一个8X8的掩模。为了存储整个旋转的掩模,将需要更多的内存。为了解决这个旋转掩模的存储问题,本发明实时产生旋转掩模。 [0120]当使用旋转掩模时,避免使用前向映射,因为前向映射涉及到存储多行的中间视图。多行的存储要求很高,所以后向映射可以使用旋转掩模。
[0121]图16显示动态产生反向旋转掩模的视图合成。旋转掩模无需被存储。原始源图像132具有从深度图计算得来的像素数据和视差。
[0122]在步骤140,对多视图中的每个视图,都产生一个基础掩模,在一些实施例中,只产生一个单一掩膜,该单个掩模被多次存取,用于所有视图。类似于后向映射,计算输出图像的子像素位置,该过程将像素改变成RGB分量(子像素),因为每个子像素都来自视图的不同组合。
[0123]在步骤136,反向旋转在子像素位置上进行,以找到源图像中的源子像素位置。反向旋转使用几何缩放(geometric scaling),如三角函数,在给定一个掩模旋转角度时,根据输出的子字像素位置计算原始的子像素位置。在步骤138,产生基础掩模内的地址。
[0124]如果基础掩模是8列X8行,子像素基础掩模将是24列X8行。在步骤138,产生反向旋转子像素地址的模块,以获得基础掩模地址。这个基础掩模地址通常是小数。在步骤142,使用基部掩模地址,为目标子像素地址产生旋转掩模144。
[0125]在步骤142,掩模的线性组合是基于基础掩模地址的小数。例如,如果基础掩模地址为 X = 3.5 时,Y = 4.5,那么旋转掩模是 0.25* (X = 3, y = 4)+0.25 (x = 3, y =5)+0.25* (X = 4, y = 4)+0.25(x = 4, y = 5)。为旋转掩模144产生的每个视图的同样的小数都使用在步骤136,生成多视图图像。
[0126]然后在步骤146,源图像的子像素可以被旋转掩模掩住,以形成目标或输出多视点图像。
[0127]旋转掩模需要使用小数,表示每个子像素中出现了哪些视图,如0.3给视图1,0.5给视图2,0.2给视图3,0给其他剩下视图。与图15的步骤124读取存储的旋转掩模不同,旋转掩模是动态生成的,只有基础掩模使用存储。
【其他实施例】
[0128]本发明还有一些其他实施例。例如,不是搜索所有像素进行匹配,只搜索一个窗口。该窗口可以是矩形或是其它形状,如一小块。也可以定义图像的较大区域,例如纹理较少的区域,将不同 的程序或参数应用在这些区域。立体匹配和其它程序可以使用各种算法和技术,各种变化也是可能的。虽然为混合视图合成已经描述了 N = 9的视图的阈值,但是N可能是另一个阈值,如N= 12或N= 14。N可以与硬件上有的正向处理单元的数目匹配。
[0129]备用选择未必一定是从2D图像或单一视图生成的深度图,也可以来自另一种比传统立体匹配还更稳定的深度生成方法。还有既使用2D又使用3D图像,既使用左图像又使用右图像的其他备用方案,这取决于稳定性。
[0130]例程、程序、流程、块、和其它组件可以以硬件逻辑门来实施,程序可以在图形处理器上、通用处理器上执行,或通过使用其他引擎执行。
[0131]因为视差和深度互相成反比,所以可以在程序和硬件的任何位置上使用视差图,而不是深度图。因此,视差图可以替代深度图,深度图也可以替代视差图。因此,视差图和深度图是等同的,因为它们都承载相同的数据,只不过以不同的方式表示。视差可被表示为一个X值,其中每个像素位于一个X,y坐标,多个像素,如5个像素的块,可以被缩放。同样,深度也可以被缩放。深度图或视差图都可以用于图5的步骤110、112。
[0132]偏移量和视差是类似的术语。视差是指在两个物体之间的距离、或在右视图和左视图内像素之间的距离,而偏移量是指从一个物体(像素)到一个参考中心物体(位置)之间的距离。一个为立体声(双)图像定义的单个视差值,可以乘以或缩放不同数量,为超过两个的多视图产生超过两个的偏移量。
[0133]立体图像可以校正以考虑拍摄角度,将图像转换成标准格式。一旦校正,立体图像之间的一个物体的视差应该沿着一行图像出现。因此,对于匹配像素,无需搜索多行矩形区域,只需搜索单行,从而减少了计算量。可以使用在照相机校准过程中获得的信息来提高校正。其它预处理可能包括滤波如双边滤波或拉普拉斯或高斯滤波、平均化邻近像素等等。通过使用绝对差和(SAD)、平方差和(SSD)、截断绝对差和(STAD)等,可以在一个区域上平均化代价。代价函数可以是一个能量函数。区域的窗口大小可以变化,可以是非矩形或甚至是适应性形状。离群值可以丢弃或滤掉。
[0134]立体匹配率可以以其他方式定义、表达、或计算,如通过加总一个区域内所有像素的视差,而不是比较每个像素的视差跟一致性阈值。然后,可以将加总与该区域的一个总体一致性阈值进行比较。许多其它的变化也是可能的。虽然已经描述了立体匹配率阈值是65%和变化阈值是10%,但是也可以使用其它值,而且这些值可以调整。类似地,距离阈值和其它值也可被调节。图像中的每个区域或每个区域子集都可以有不同的阈值。
[0135]其他输入如另一个帧,可以用于检测深度如运动对象(近处的物体看上去移动得更快)、遮挡/去除遮挡(前景物体盖住背景物体)等。先前帧可以是当前帧之前的帧,或帧可以被跳过,先前帧可以是当前帧之前的两个或多个帧。下采样会导致每个像素被处理以代表原始图像中的四个或更多个像素。
[0136]可以使用各种值的阈值。中间值可以被缓冲、倒置、调整、或其他修改以满足各种用途。可以不再是当两帧之间的最低代价像素位置在距离阈值内时降低代价,而是当两帧之间的最低代价像素位置大于距离阈值时提高代价,因为它们是等同的。代价可以通过一个更复杂的函数来降低或提高,而不是通过一个偏差因子。所述偏差因子与阈值也可以被调整用于不同种类的视频、图像的不同区域,如少纹理区域等。
[0137]本发明【背景技术】部分可含有关于本发明的问题或环境的背景信息而非描述其它现有技术。因此,在【背景技术】部分中包括材料并不是 申请人:承认现有技术。
[0138]本文中所描述的任何方法或工艺为机器实施或计算机实施的,且既定由机器、计算机或其它装置执行且不希望在没有此类机器辅助的情况下单独由人类执行。所产生的有形结果可包括在例如计算机监视器、投影装置、音频产生装置和相关媒体装置等显示装置上的报告或其它机器产生的显示,且可包括也为机器产生的硬拷贝打印输出。对其它机器的计算机控制为另一有形结果。
[0139] 已出于说明和描述的目的呈现了对本发明实施例的先前描述。其不希望为详尽的或将本发明限于所揭示的精确形式。鉴于以上教示,许多修改和变型是可能的。希望本发明的范围不受此详细描述限制,而是由所附权利要求书限制。
【权利要求】
1.一种实时的多视图合成器,包括: 第一深度生成器,其通过立体匹配第一立体视图和第二立体视图而生成第一深度图; 一致性检测器,其产生一个立体匹配率,所述立体匹配率表示所述第一深度图的质量,一致性检测器通过比较以所述第一立体视图为起始匹配得到的像素位置和以所述第二立体视图为起始匹配得到的像素位置,产生所述立体匹配率; 第二深度生成器,其从不超过一个的单视点图像中产生第二深度图; 视差备用选择器,当所述立体匹配率小于一个匹配阈值时,所述视差备用选择器选择所述第二深度图而不是所述第一深度图作为一个选中的深度图; 前向映射器,其将源图像中的子像素移动一个偏移量,以产生一个目标图像,所述偏移量是从所述选中的深度图中读取或产生的,对于作为目标图像的多视图中的各个视图,其所述偏移量被缩放到不同的值; 后向映射器,其读取多个视图掩模,以找到一个选中的视图掩模,所述选中的视图掩模在所述目标图像中产生一个子像素位置,所述后向映射器对所述选中视图掩模使用一个视图偏移量,在所述源图像中找到一个源子像素,所述后向映射器通过拷贝所述源子像素到所述目标图像的所述子像素位置上,生成所述目标图像。
2.如权利要求1所述的多视图合成器,还包括: 混合映射器,其触发所述前向映射器生成目标图像作为中间图像,并且触发所述后向映射器使用所述中间图像作为源图像,以生成所述目标图像作为一个输出图像。
3.如权利要求1所述的多视图合成器,还包括: 掩模旋转器,其将所述视图掩模旋转一个角度,以产生一个旋转的视图掩模给所述后向映射器使用; 其中视图掩模被存储在一个存储器中,而产生的所述旋转的视图掩模并不存储在所述存储器中。
4.如权利要求3所述的多视图合成器,其中所述掩模旋转器还包括:子像素计算器,其计算红色、蓝色、绿色子像素的位置;反向旋转器,其旋转所述红色、蓝色、绿色子像素的位置,产生小数形式的子像素位置;地址生成器,其对所述小数形式的子像素位置产生基础子像素地址在一个基础掩模上; 加法器,其将在所述基础子像素地址上读取的小数形式的基础掩模加总,生成所述旋转的视图掩模。
5.如权利要求1所述的多视图合成器,还包括: 帧延迟缓冲器,其存储来自所述视差备用选择器的所述选中的深度图,所述选中的深度图是从先前帧产生的; 其中,深度图是从先前帧产生的,并被所述帧延迟缓冲器延迟,然后被所述前向映射器和所述后向映射器在当前帧内使用。
6.如权利要求1所述的多视图合成器,还包括: 低代价像素时间一致性性调节器,当当前帧内一个匹配像素位置离先前帧内匹配像素位置的距离小于一个距离阈值时,用以降低所述第一深度图所需的代价值。
7.如权利要求1所述的多视图合成器,还包括: 帧到帧视差备用选择器,当当前帧的立体匹配率和先前帧的立体匹配率之间的差值大于一个变化阈值时,其选择所述第二深度图作为所述选中的深度图。
8.如权利要求1所述的多视图合成器,还包括: 下采样器,其对一个高分辨率输入图像进行下采样,生成所述第一立体视图和所述第二立体视图,所述第一立体视图和所述第二立体视图的分辨率都小于所述高分辨率输入图像; 其中,输入到所述第二深度生成器的一个单视点图像是所述第一立体视图。
9.如权利要求1所述的多视图合成器,还包括: 代价产生器,其比较所述第一立体视图的一个参考像素和与第二立体视图的参考像素对应的参考位置周围的一组像素,以产生多个代价值; 优化器,其选择一个像素位置作为所述第二立体视图中的匹配像素位置,其对应的代价值是上述多个代价值中最低的。
10.如权利要求1所述的多视图合成器,其中所述选中的深度图包括深度值、视差值、或图像内像素的偏移量。
11.一种从第一视点图像和第二视点图像产生一个输出深度图的方法,包括步骤: 从所述第一和第二视点图像中产生第一深度图,其中所述第一深度图中的深度值是根据所述第一视点图像 中像素和所述第二视点图像中像素的匹配产生的视差而产生的,视差表示所述第一视点图像内和所述第二视点图像内匹配像素位置的一个偏移量; 确定一个立体匹配率,当产生所述第一深度图时,所述立体匹配率表示:在生成所述第一深度图期间,当所述第一视点图像中像素和所述第二视点图像中像素互换为输入时,结果的一致性程度。 从所述第一视点图像生成第二深度图,其中所述第二深度图的深度值是根据所述第一视点图像内的视觉线索而产生的,没有所述第二视点图像的任何输入; 当所述立体匹配率大于一个匹配阈值时,选择所述第一深度图作为所述输出深度图; 当所述立体匹配率不大于所述匹配阈值时,选择所述第二深度图作为所述输出深度图。
12.如权利要求11所述的方法,还包括: 其中所述第一视点图像和所述第二视点图像是针对一个视频序列帧中的当前帧,其中所述立体匹配率是针对所述当前中贞; 存储所述视频序列帧中的先前帧的所述立体匹配率; 比较先前帧的立体匹配率和当前帧的立体匹配率,产生当前帧和先前帧之间的一个匹配率变化; 当所述匹配率变化超过一个变化阈值时,选择所述第二深度图作为所述输出深度图;因此,较大的帧到帧的立体匹配率变化,会导致选择不通过立体匹配而生成的所述第二深度图。
13.如权利要求11所述的方法,还包括: 将一个当前帧分成多个区域; 对于所述多个区域中的一个目标区域,当所述目标区域的立体匹配率不大于所述匹配阈值时,为所述目标区域内的像素选择所述第二深度图,包含入所述输出深度图中;其中所述输出深度图包含多个区域,一些区域有部分所述第一深度图,其它区域有部分所述第二深度图。
14.如权利要求13所述的方法,还包括: 调整所述匹配阈值,使得所述多个区域中的不同区域有不同的阈值;因此,不同匹配阈值用于不同区域。
15.如权利要求13所述的方法,还包括: 确定所述多个区域中的一个区域是否是无纹理区域,无纹理区域即所述区域内像素变化很小; 为所述多个区域中无纹理区域内像素,选择所述第二深度图,包含入所述输出深度图中。
16.如权利要求11所述的方法,还包括前向映射步骤: 从存储在所述输出深度图内的值,产生偏移量,其中一个子像素位 置的一个偏移量被多个比例因子进行缩放,以产生多个视图偏移量给每个子像素位置; 将一个源图像内子像素移动所述多个视图偏移量,以产生多个视图图像; 对所述多个视图图像中没有子像素的子像素位置,进行填洞处理; 遮掩住视图图像中没有的颜色,以从所述多个视图图像中产生多个经过掩模的视图图像; 加总所述多个视图图像,产生一个多视点图像,输出到一个三维显示器; 进一步,还包括后向映射步骤: 从存储在所述输出深度图内的值,产生偏移量,其中一个子像素位置的一个偏移量被多个比例因子进行缩放,以产生多个视图偏移量给每个子像素位置; 对于一个输出图像内的每个输出子像素位置: 在多个视图掩模中确定一个产生该子像素的视图掩模,其产生一个输出子像素在所述输出子像素位置上; 为所述产生的视图掩模,获得一个比例因子; 读取所述输出深度图,以为所述输出子像素位置获得一个目标偏移量; 将所述目标偏移量乘以所述的比例因子,以产生一个视图调整偏移量; 将所述视图调整偏移量加入到输出像素位置,以产生一个源子像素地址; 从所述源图像读取一个目标源子像素,拷贝所述目标源子像素到所述输出图像的输出子像素位置上; 对所述输出图像的其他子像素位置,重复以上步骤直到创建了所述输出图像。
17.如权利要求16所述的方法,还包括: 使用前向映射生成第一组多个视图; 当视图总数量超过一个视图阈值时,使用后向映射生成第二组多个视图,其中所述视图阈值是至少两个视图。
18.—种多视点系统,包括: 第一图生成器,其接收第一视点图像和第二视点图像,所述第一视点图像和第二视点图像是同一拍摄图像的不同视角,所述第一图生成器生成含有像素视差或深度值的第一图,所述视差值表示所述第一视点图像和第二视点图像像素位置之间的偏移,其中所述视差值和所述深度值成反比; 第二图生成器,其接收所述第一视点图像但不接收所述第二视点图像,所述第二图生成器使用非立体技术产生深度值或视差值,包含入第二图; 其中所述第一图是使用立体图技术而产生的,而所述第二图是使用非立体技术而产生的; 立体匹配率产生器,当所述第一图生成器产生所述视差或深度值时,其产生一个立体匹配率; 视差备用选择器,当所述立体匹配率小于一个阈值时,其从所述第二图中选择数值,包含入一个输出图中,当所述立体匹配率大于一个阈值时,其从所述第一图中选择数值,包含入所述输出图中; 代价产生器,其为与所述第二视点图像内像素匹配的所述第一视点图像内像素产生匹配代价; 优化器,其选择具有最低匹配代价的一个获胜像素位置; 低代价像素时间一致性调节器,当当前帧的获胜像素位置在先前帧的获胜像素位置的一个距离阈值之内,其调整所述匹配代价。
19.如权利要求18所述的多视点系统,其中当所述当前帧的立体匹配率和所述先前帧的立体匹配率之间的 变化大于一个变化阈值时,所述视差备用选择器还从所述第二图中选择数值,包含入所述输出图中;因此,较大的帧到帧的立体匹配率变化,会导致选择所述第二图。
20.如权利要求18所述的多视点系统,还包括: 前向映射器,其将所述第一视点图像内一个子像素移动一个缩放的视图偏移量,所述缩放的视图偏移量是从所述输出图中的数值产生的,以产生一个输出图像; 后向映射器,其识别一个确定的视图掩模,所述确定的视图掩模产生一个子像素位置在所述输出图像中,所述后向映射器还产生一个视图调整偏移量,所述视图调整偏移量是基于所述确定的视图掩模和所述输出图中的数值的,所述后向映射器使用所述视图调整偏移量找到所述第一视点图像中的一个源子像素,并拷贝到所述输出图像中; 混合映射器,当视图的数量超过一个视图阈值时,其触发所述前向映射器产生第一组多个视图,也触发所述后向映射器产生第二组多个视图,其中所述视图阈值是至少两个视图。
【文档编号】H04N13/00GK104023220SQ201410211480
【公开日】2014年9月3日 申请日期:2014年5月19日 优先权日:2014年3月24日
【发明者】林子源, 张伟伦 申请人:香港应用科技研究院有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1