具体实施方式
应理解:可以以各种形式的硬件、软件或其组合来实施附图中所示的元件。优选地,在一个或多个被适当编程的通用设备上以硬件和软件的组合来实施这些元件,所述通用设备可以包括处理器、存储器以及输入/输出接口。
本描述例示了本公开的原理。因此本领域技术人员应理解将能够设计出虽然未在此被明确描述或示出、但是体现本公开的原理并且被包括在本公开的精神和范围内的各种布置。
在此所叙述的所有示例和条件性语言意在教导性的目的,以帮助读者理解本公开的原理和由发明人为促进本领域技术而贡献的构思,并且要被解释为不限于这种具体叙述的示例和条件。
另外,在此叙述的本公开的原理、方面、以及实施例的所有陈述、以及本公开的具体示例,意在包含本公开的结构的和功能的两者的等效物。此外,这种等效物意在包括当前已知的等效物以及将来开发的等效物这两者,即,所开发的无论结构如何、执行相同功能的任何元件。
因此,例如,本领域技术人员应理解:在此呈现的框图表示体现本公开的原理的例示性的电路的概念性视图。类似地,应理解:任何流程图示、流程图、状态转换图、伪代码等等表示实质上可以在计算机可读介质中表示的、并因此通过计算机或处理器执行的各种处理,无论这种计算机或处理器是否被明确示出。
可以使用专用硬件以及通过与适合的软件相关联而能够执行软件的硬件来提供附图中所示的各种元件的功能。当由处理器提供时,可以由单个专用处理器、单个共享处理器、或其中一些可以被共享的多个独立处理器提供所述功能。另外,术语“处理器”或“控制器”的明确使用不应被解释为排他性地指代能够执行软件的硬件,其可以隐含地包括、而不限于数字信号处理器(“DSP”)硬件、用于存储软件的只读存储器(“ROM”)、随机存取存储器(“RAM”)、以及非易失性存储装置。
还可以包括其它的常规的和/或定制的硬件。类似地,附图中所示的任何开关只是概念性的。可以通过程序逻辑的操作、通过专用逻辑、通过程序控制和专用逻辑的交互作用、或甚至手动地执行它们的功能,如从上下文中具体理解的,具体技术可由实施者选择。
在其权利要求中,被表达为用于执行所指定的功能的部件的任何元件意在包含执行该功能的任何方式,所述任何方式例如包括:a)执行该功能的电路元件的组合或b)与用于执行软件的适当的电路组合以执行该功能的任何形式的软件(因此包括固件、微代码等)。由这样的权利要求所限定的本公开在于以下事实:以权利要求所请求保护的方式将所叙述的各种部件所提供的功能组合并放在一起。因此,可以提供这些功能的任何部件被认为等效于与在此所示出的那些部件。
立体匹配是用于从立体图像(例如,左眼视图图像和右眼视图图像)推断深度图的标准方法。在常规的自动立体显示器上进行的3D回放已经表明深度图的平滑度显著影响作为结果的3D回放的外观。不平滑的深度图经常导致3D回放中的之字形边缘,这在视觉上比具有不太准确的深度值的平滑的深度图的回放更糟糕。因此,对于3D显示和回放应用而言,深度图的平滑度比深度准确度更重要。此外,基于全局优化的方法对于3D显示应用中的深度估计而言是必须的。本公开提出了一种结合时间信息以提高深度图的平滑度的深度提取技术。众多立体技术优化了以下成本函数(cost function),该成本函数用于强制空间相干性以及与数据的一致性。针对图像序列,时间分量对于提高所提取的深度图的准确度是重要的。
提供了一种利用正向和反向深度预测进行图像的时空深度提取的系统和方法。本公开的系统和方法提供了一种结合时间信息以提高深度图的平滑度的深度提取技术。本公开的技术结合正向和反向通道(pass),其中使用图像序列的当前帧的前一帧的深度图来初始化当前帧处的深度提取,这使得计算更快并且更准确。然后可以利用深度图或视差图与立体图像对一起进行3D回放。本公开的技术在解决由深度图的不稳定造成的、2D+深度显示中3D回放的时间性抖动伪像的问题时是有效的。
现在参照附图,图1示出了根据本公开的实施例的示例性系统组件。可以提供扫描设备103用于将胶片印片(film print)104(例如相机原始的胶片底片)扫描为数字格式(例如,Cineon-格式或者运动画面和电视工程师协会(“SMPTE”)数字画面交换(“DPX”)文件)。扫描设备103可以包括例如电视电影装置(telecine)或者将根据胶片生成视频输出的任何设备(诸如例如具有视频输出的Arri LocProTM)。可替换地,可以直接使用来自后期制作处理或者数字电影的文件106(例如,已经是计算机可读形式的文件)。计算机可读文件的潜在来源是AVIDTM编辑器、DPX文件、D5磁带等。
所扫描的胶片印片被输入给后期处理设备102(例如,计算机)。该计算机在各种已知的计算机平台中的任一种上实现,所述计算机平台具有诸如以下硬件:一个或多个中央处理单元(CPU)、诸如随机存取存储器(RAM)和/或只读存储器(ROM)之类的存储器110,以及诸如键盘、光标控制设备(例如,鼠标或操纵杆)和显示设备之类的(多个)输入/输出(I/O)用户接口。该计算机平台还包括操作系统和微指令代码。在此描述的各种处理和功能可以是经由操作系统执行的微指令代码的一部分或者软件应用程序的一部分(或者是其组合)。在一个实施例中,软件应用程序有形地体现在程序存储设备中,其可以被上载到诸如后期处理设备102之类的任何合适的机器并且由该机器执行。另外,可以通过诸如并行端口、串行端口或者通用串行总线(USB)之类的各种接口和总线结构将各种其他外围设备连接到该计算机平台。其他外围设备可以包括附加的存储设备124和印片机(printer)128。可以采用印片机128来印制胶片的修改版本126,例如胶片的立体版本,其中可以使用作为以下描述的技术的结果的3D建模的对象来更改或者取代一个场景或多个场景。
可替换的,可以将已经是计算机可读形式的文件/胶片印片106(例如数字电影,其例如可以存储在外部硬盘驱动器124中)直接输入到计算机102中。注意,在此使用的用语“胶片”可以指胶片印片或者数字电影。
软件程序包括在存储器110中存储的立体匹配模块114,其用于将第一图像中的至少一个点与第二图像中的至少一个对应点进行匹配。该立体匹配模块114还包括图像偏转器(image warper)116,其被配置为调整立体图像对的核线使得核线精确地成为图像的水平扫描线。
该立体匹配模块114还包括视差(disparity)估计器118,其被配置为估计第一图像中的至少一个点与第二图像中的至少一个对应点的视差,并且根据所估计的视差对于第一图像中的至少一个点中的每一个点与第二图像中的至少一个对应点来生成视差图。该视差估计器118包括:像素匹配成本函数132,被配置为对第一图像和第二图像中的像素进行匹配;平滑度成本函数134,向视差估计应用平滑度约束;以及时间成本函数136,被配置为使所生成的视差图的序列在时间上对齐。视差估计器118还包括:置信传播算法或置信传播函数138,用于使所估算的视差最小化;以及动态编程算法或动态编程函数140,利用被应用到第一图像和第二图像的确定性匹配函数的结果来初始化置信传播函数138以加速置信传播函数138。
立体匹配模块114还包括深度图生成器120,用于通过对视差图的视差值进行反转(invert)而将视差图转换为深度图。
图2是根据本公开的一方面的对至少两个二维(2D)图像进行立体匹配的示例性方法的流程图。初始地,后期处理设备102获取至少两个二维(2D)图像,例如,具有左眼视图和右眼视图的立体图像对(步骤202)。后期处理设备102可以通过获得计算机可读格式的数字母版图像(master image)文件而获取至少两个2D图像。可以通过利用数字相机来捕捉移动图像的时间序列而获取数字视频文件。可替换的,可以通过常规的胶片类型的相机来摄制视频序列。在该情境下,经由扫描设备103扫描该胶片。
应理解,无论胶片是被扫描还是已经是数字格式,胶片的数字文件都将包括关于各个帧的位置的指示或信息(例如帧号、自胶片的起始起的时间等)。
可以通过具有相同设置的两个相机来摄制立体图像。对相机进行标定以使其具有相同焦距、焦点高度和平行焦平面;或者,必须基于已知的相机参数对图像进行偏转使得仿佛它们是被具有平行焦平面的相机所拍摄的(步骤204)。该偏转处理包括相机标定(calibration)(步骤206)和相机调校(rectification)(步骤208)。标定和调校处理调整立体图像的核线使得核线精确地成为图像的水平扫描线。参照图3,OL和OR表示两个相机的焦点,P表示两个相机感兴趣的点,而pL和pR表示点P被投影到成像平面的何处。每个焦平面上的交叉点被称作核点(epipole)(由EL和ER表示)。右核线(例如,ER-PR)是连接聚焦中心和左侧图像上的点的射线(ray)在右侧图像上的投影,因此左侧图像上的像素在右侧图像上的对应点应位于右侧图像上的核线上,同样的情况适用于左侧核线,例如EL-pL。由于对应点发现沿着核线进行,调校处理将对应搜索简化为仅仅沿扫描线搜索,这极大地减少了计算成本。对应点是图像中与同一场景点对应的像素。
接着,在步骤210,对场景中的每个点估计视差图。一旦发现对应点,则计算每个场景点的视差作为左眼图像和右眼图像中匹配点的相对距离。例如,参照图4,如果左眼图像402中的点的水平坐标为x,而其在右眼图像404中的对应点的水平坐标为x’,则视差d=x’-x。然后,在步骤212,使用以下公式z=Bf/d将场景点406的视差值d转换为深度值z(从场景点406(也被称为收敛点)到相机408、410的距离),其中B是两个相机408、410之间的距离(也被称作基线),而f是相机的焦距,在图4中示出对此的证明。
参照图5,提供了根据本公开的如上面步骤210所标识的用于估计视差图的方法。初始地,获取立体图像对(步骤502)。计算视差成本函数,包括:计算像素成本函数(步骤504)、计算平滑度成本函数(步骤506)和计算时间成本函数(步骤508)。执行低成本的立体匹配优化(例如,动态编程)来得到立体匹配两个图像的初始的确定性的结果(步骤510)。然后将该低成本优化的结果用于初始化置信传播函数以加速用于使序列的第一帧的视差成本函数最小化的置信传播函数(512)。然后将使用预测深度图来初始化用于该序列的后一帧的置信传播函数。
现在将详细地描述图5中所示的视差估计及其公式表示。视差估计是上述的工作流程中重要的步骤。该问题包括使得左眼图像和右眼图像中的像素进行匹配,即发现右侧图像和左侧图像中对应于同一场景点的像素。通过考虑视差图是平滑的,可以如下对立体匹配的问题在数学上进行公式表示:
C(d(.))=Cp(d(.))+λCs(d(.)) (1)
其中d(.)是视差域(disparity field),d(x,y)给出左眼图像中具有坐标(x,y)的点的视差值,C是总的成本函数,Cp是像素匹配成本函数,而Cs是平滑度成本函数。平滑度成本函数是用于强制视差图的平滑度的函数。在优化处理期间,对所有的视差域使得上述成本函数最小化。对于局部优化,丢弃平滑度项Cs;因此,在该优化处理期间不考虑平滑度。除此之外,可以将Cp建模为像素亮度(intensity)的均方差:
取决于是否强制了垂直平滑度,可以不同地写入平滑度约束。如果强制了水平和垂直平滑度两者,则可以按以下的均方误差函数来对平滑度成本函数进行建模:
接着,如图6所图示的,在成本函数中考虑时间约束。第(i-1)帧处的前一深度图用于预测第i帧处的当前深度图,使得可以通过前一深度图来约束当前深度图的估计。在步骤602,假定根据第(i-1)左侧图像604和第(i-1)右侧图像606所估计的第(i-1)帧处的深度图被表示为di-1(.)。预测深度图d+(.)被用于预测第i帧处的深度图。在步骤608,通过向第i帧插入第(i-1)帧处的深度图来计算预测深度图d+(.)。在一个实施例中,在不考虑运动信息的情况下,使用简单的插入处理,其中预测深度图等于第(i-1)帧处的深度图,即,d+(.)=di-1(.)。考虑预测深度图,可以如下构建总的深度成本函数中的时间预测项:
在步骤610,根据两个输入图像(即,第i左侧图像612和第i右侧图像614)来计算当前帧的成本函数。在步骤616,将使得该成本函数最小化以得到最终深度图结果。在步骤618,使用预测深度图(在步骤608确定的)来初始化该最小化处理(最小化块616)以便加速计算(如方程4所示)。
因此,总的成本函数变为
C(d(.))=Cp(d(.))+λCs(d(.))+μCi(d(.)) (5)
其中μ是总的成本函数中对时间预测成本函数进行加权的加权因子。可以根据经验来确定μ。
上述方法的缺点在于当在序列的第一帧中存在误差时,该误差将传播到剩余的帧直到序列的结束为止。此外,在实验中已经观察到在序列中的最后帧处的深度图比在序列中的第一深度图要平滑得多。这是因为在利用时间约束进行优化期间平滑效果沿着帧进行了累积。
为解决上述问题,如图7所图示,提供了一种多通道正向和反向处理。正向和反向处理首先在具有正向的第一通道702(即从序列中的第一帧到最后帧(即,第N帧))中执行时间预测。在下一通道704中,从最后帧开始时间预测,并且反向行进直到第一帧,例如,第(N-1)帧、第(N-2)帧、第(N-3)帧...第一帧。可以重复相同的例程以具有多通道正向和反向预测。
在正向和反向处理中,对正向通道,按d+(.)=di-1(.)设置预测深度图,而对反向通道,按d+(.)=di+1(.)设置预测深度图。剩余的例程和方程与前述的那些相同。
使用不同的方法可以使方程5中所示的总的成本函数最小化以得到估计的深度图。在一个实施例中,使用置信传播函数来最小化方程5的成本函数。置信传播是在计算机视觉和机器学习中使用的高质量的优化算法。为了加速置信传播函数或置信传播算法,使用低成本的优化算法(例如,动态编程函数)以首先得到低质量的深度图。然后,使用该低质量的深度图来初始化置信传播函数或置信传播算法。
在另一实施例中,取代使用低质量的深度图来初始化置信传播函数,可以采用预测深度图d+(.)来初始化置信传播函数。在该实施例中,对于图像序列,低质量的深度初始化仅仅用于序列中的第一帧。对于序列中剩余的帧,使用预测深度图来初始化置信传播函数或置信传播算法。
回过来参照图2,在步骤212,使用以下公式z=Bf/d将每个场景点的视差值d转换为深度值z(从场景点到相机的距离),其中B是两个相机之间的距离(也被称作基线),而f是相机的焦距。在深度图中存储至少一个图像(例如,左眼视图图像)中的每一个图像的深度值。例如在存储设备124中存储对应的图像和相关联的深度图,并且可以为了3D回放而取回所述对应的图像和相关联的深度图(步骤214)。此外,可以在表示运动画面或者视频剪辑的立体版本的单个数字文件130中将该运动画面或者剪辑的所有图像与相关联的深度图一起存储。可以在存储设备124中存储数字文件130用于随后的取回,以便例如印制原始胶片的立体版本。
现在参照图8,示出根据本公开的一方面的用于生成深度图的示例性方法。初始地,在步骤802,获取多个帧。所获取的多个帧可以表示电影(film)的场景、镜头或者某个其他片段。每个帧包括右眼图像和左眼图像(例如,立体图像对)、基准图像和补充图像、具有不同视点的多个图像等等。接着,在步骤804,选择要对其生成深度图的帧(例如,当前帧)。此后,在步骤806,并且根据在图6和7中讨论的处理,为所选择的帧生成第一深度图。第一深度图生成包括通过在第一方向上(例如,从最早的帧行进到最后的帧的正向)处理所获取的多个帧、基于前一深度图或者之前的多个深度图来估计第一深度图。接着,在步骤808,并且根据在图6和7中讨论的处理,为所选择的帧生成第二深度图。第二深度图生成包括通过在第二方向上(例如,从最后的帧行进到最早的帧的反向)处理所获取的多个帧、基于后一深度图或者之后的多个深度图来估计第二深度图。最后,在步骤810,处理第一和第二深度图使得:可以通过使用在另一方向上处理帧所生成的(例如反向并且存在于第二深度图中、或者正向并且存在于第一深度图中)校正值,来最小化或者减少在一个方向上通过帧传播的(例如,正向并且存在于第一深度图中的、或者反向并且存在于第二深度图中的)任何误差。
尽管在此已经详细地示出和描述了结合了本公开的教导的实施例,但本领域技术人员可以容易地设计出仍然结合这些教导的众多其他改变的实施例。已经描述了利用正向和反向深度预测进行图像的时空深度提取的系统和方法的优选的实施例(其旨在是例示性的而不是限制性的),应注意,本领域技术人员根据上述教导可以作出修改和变形。因此,应理解,可以在所公开的内容的具体实施例中进行改变,这些都在权利要求所概括的本公开的范围内。