具体实施方式
应该理解的是:附图中示出的各元件可以以硬件、软件和其组合的各种形式实现。优选地,这些元件以硬件和在可以包括处理器、存储器和输入/输出接口的一个或多个适当地编程的通用设备上的软件的组合实现。
本描述说明本公开的原理。因此,将认识到:本领域技术人员将能够设计出实施本公开的原理并被包括在本原理的精神和范围内的各种布置,尽管在这里没有明确地描述或示出所述布置。
在此叙述的所有示例和条件性语言意欲用于教学的目的以便帮助读者理解本公开的原理以及由本发明人贡献以促进现有技术的构思,并且应该被解释为不限制于这种具体叙述的示例和条件。
另外,在这里叙述本公开的原理、方面和实施例及其特定示例的所有陈述意欲包括其结构和功能等效物。另外,意图是:这样的等效物包括当前已知的等效物以及将来开发的等效物二者,即所开发的执行相同功能的任何元件,而不论其结构如何。
因此,例如,本领域技术人员将认识到:在此呈现的框图表示实施本原理的说明性电路的概念性视图。类似地,将认识到:任何流程图示(flow chart)、流程图(flow diagram)、状态转换图、伪代码等表示实质上可以表示在计算机可读介质中并因此由计算机或处理器执行的各种处理,而不管是否明确地示出这样的计算机或处理器。
可以通过使用专用硬件以及与适当的软件相关联的能够执行软件的硬件来提供图中示出的各种元件的功能。当利用处理器来提供所述功能时,可以利用单个专用处理器、利用单个共享处理器、或者利用其中一些可被共享的多个独立处理器来提供所述功能。另外,术语“处理器”或“控制器”的明确使用不应该被解释为排他性地指代能够执行软件的硬件,而是可以隐含地无限制地包括数字信号处理器(“DSP”)硬件、用于存储软件的只读存储器(“ROM”)、随机存取存储器(“RAM”)、和非易失性存储器。
还可以包括其它传统的和/或定制的硬件。类似地,图中示出的任何开关只是概念性的。它们的功能可以通过程序逻辑的运行、通过专用逻辑、通过程序控制和专用逻辑的交互、或者甚至手动地来执行,如从上下文更具体地理解的那样,可以由实施者选择具体技术。
在其权利要求中,被表示为用于执行指定功能的部件的任何元件意欲包含执行那个功能的任何方式,例如包括:a)执行那个功能的电路元件的组合或者b)与适当电路相组合的任何形式的软件,所述软件因此包括固件或微代码等,所述适当电路用于执行该软件以执行所述功能。由这种权利要求限定的本公开在于如下事实,即,以权利要求所要求的方式将由各种所叙述的部件提供的功能组合和集合到一起。因此认为可以提供那些功能的任何部件与在此示出的那些部件等效。
通常,立体运动画面由左眼和右眼画面序列组成。对于电影院应用,观众通常不得不佩戴3D眼镜(例如,偏振或快门眼镜)观看3D呈现。对于不用眼镜的显示器,尽管3D显示的机制不同,但是3D感知的原理是相同的。也就是说,3D系统将使左眼观看左眼图像,而右眼仅观看右眼图像。人脑能够将这两个图像组合到一起,以便正确感知3D场景。然而,该系统可能潜在地导致眼睛肌肉的疲劳和眼睛疲劳,因为以下两个原因:
1.眼睛的会聚点和焦点是不同的。当我们观看真实3D场景时,我们眼睛的焦点与会聚点大致相同。然而,当我们观看3D影片时,我们眼睛的焦点10不得不总是在屏幕12上,而我们眼睛的会聚点14不得不在屏幕12的前面或后面,以便感知正确的3D场景,如图1所示。该差异是促进眼睛肌肉的疲劳因此导致眼睛疲劳的主要因素。
2.3D运动画面中对象的深度改变。当对象的深度改变时,我们的眼睛不得不调整会聚点以感知正确的3D效果,同时保持焦点在屏幕上。如果深度改变是频繁和突然的,则我们的眼睛不得不频繁改变会聚点,导致眼睛肌肉的疲惫。
所以,简而言之,眼睛疲劳主要由两个原因导致:1)眼睛的会聚点和焦点之间的距离(即,如图1所示的会聚距离16);以及2)会聚点14的改变。因此,测量眼睛疲劳需要考虑上面两个因素。
本公开提供了一种用于测量在观看3D呈现(例如,立体运动画面)时由观众感受到的潜在眼睛疲劳的系统和方法。本公开的眼睛疲劳测量系统和方法基于视差(或深度)和视差转换的测量。本解决方案对于导演和剪辑师有效地制作好的和舒适的3D电影是有用的。
本公开的系统和方法考虑:观看者的眼睛的会聚点和焦点之间的距离与3D呈现中所聚焦的对象的深度紧密相关,3D呈现中所聚焦的对象的深度也与对象的像素的视差有关。图2示出了观看3D呈现中涉及的变量的关系。可以看到:给定会聚距离(Cd)16、所感知的深度(Dp)18、观众距离(Ad)20、会聚角度(Ca)22、眼睛距离(Ed)24和视差(Ds)26,存在以下关系。
1.Cd、Dp和Ad的关系:Ad=Cd+Dp
2.Cd、Ds、Ad和Ed的关系:Cd(1/Ds+1/Ed)=Ad/Ed
3.Ca、Ed、Ad和Cd的关系:Cd=2atan(Ed/(2(Ad-Cd)))
当会聚点如图3所示在屏幕后面时,这些关系保持正确,只要允许负视差和负会聚距离即可。对于特定观众,眼睛距离(Ed)24和观众距离(Ad)20在呈现期间是恒定的,而会聚距离(Cd)16、所感知的深度(Dp)18、会聚角度(Ca)22和视差(Ds)26在运动画面期间变化。基于这些关系,会聚点的计算可以简化为深度或视差的估计。这导致更简单的估计算法。因为存在许多视差估计算法,所以传统的视差测量可以用于眼睛疲劳估计。
现在参照图4,示出了根据本公开的实施例的示例性系统组件。可以提供扫描设备103,用于将影片印件(film print)104(例如,相机原始底片(film negative))扫描为数字格式(例如Cineon格式或SMPTE DPX文件)。扫描设备103可以包括例如将从影片生成视频输出的电视电影或任何设备(诸如,例如具有视频输出的Arri LocProTM)。可替代地,可以直接使用来自后期制作过程或数字电影的文件106(例如,已经处于计算机可读形式的文件)。计算机可读文件的潜在来源是AVIDTM剪辑器、DPX文件、D5磁带。
所扫描的影片印件被输入到后期处理设备102(例如,计算机)。在具有以下硬件的各种已知计算机平台的任何计算机平台上实现该计算机,所述硬件诸如一个或多个中央处理单元(CPU)、诸如随机存取存储器(RAM)和/或只读存储器(ROM)的存储器110、以及诸如键盘和指针控制设备(例如,鼠标或操纵杆)和显示设备的(多个)输入/输出(I/O)用户接口112。计算机平台还包括操作系统和微指令代码。在此描述的各种处理和功能可以是经由操作系统执行的微指令代码的一部分或软件应用程序的一部分(或其组合)。在一个实施例中,软件应用程序确实地体现在程序存储设备上,其可以上载到任何合适的机器(诸如后期处理设备102)并且被执行。此外,各种其它外围设备可以通过各种接口和总线结构(诸如并行端口、串行端口或通用串行总线(USB))连接到计算机平台。其它外围设备可以包括额外的存储设备124和印片机(printer)128。印片机128可以用于冲印影片的修改版本126(例如,影片的立体版本),其中作为下面描述的技术的结果,可能已经使用3D建模的对象变更或替代场景或多个场景。
可替代地,已经处于计算机可读形式(例如,可以存储在外部硬盘驱动器124上的数字电影)文件/影片印件106可以直接输入到计算机102中。注意到,在此使用的术语“影片(film)”可以指影片印件或数字电影。
软件程序包括在存储器110中存储的眼睛疲劳测量和降低模块114,用于测量在观看3D呈现时由观众或观看者感受到的潜在眼睛疲劳。
眼睛疲劳测量和降低模块114包括视差估计器116,被配置用于估计第一图像中的至少一个点与第二图像中的至少一个对应点的视差(第一和第二图像产生立体图像对),并且用于对于第一图像中的至少一个点与第二图像中的至少一个对应点的每一个从所估计的视差生成视差图。视差估计器116包括被配置为匹配第一和第二图像中的像素的像素匹配成本函数132,以及用于将平滑约束应用到视差估计的平滑成本函数134。视差估计器116还包括用于最小化所估计的视差的置信传播算法或函数136、以及动态程序设计算法或函数138,该动态程序设计算法或函数138利用应用于第一和第二图像的确定匹配函数的结果来初始化置信传播函数136以便加速置信传播函数136。要理解的是,置信传播和动态程序设计仅是用于确定视差的两个示例性方法,并且可以由视差估计器116采用其它视差估计方法和算法。
提供视差转换估计器118,用于确定立体图像的视差的转换或改变。提供眼睛疲劳估计器120,用于基于来自视差估计器116的视差图和来自视差转换估计器118的相关联图像的视差转换,估计潜在眼睛疲劳。
眼睛疲劳测量和降低模块114还包括视差校正器122,用于调整第一和第二图像之间的视差以降低潜在眼睛疲劳。还提供深度图生成器123,用于通过反转(invert)视差图的视差值而将视差图转换为深度图。在一个实施例中,深度图生成器123与用于降低潜在眼睛疲劳的视差校正器122协同工作,如下面将描述的。
图5是根据本公开的一个方面的示例性方法的流程图,该示例性方法用于测量至少两个二维(2D)图像的潜在眼睛疲劳。最初,后期处理设备102获取至少两个二维(2D)图像,例如具有左眼和右眼视图的立体图像对(步骤202)。后期处理设备102可以通过获得处于计算机可读格式的数字标准图像文件(digital master image file)来获取至少两个2D图像。可以通过用数字相机捕获运动图像的时间序列来获取数字视频文件。可替代地,可以通过传统的胶片型相机捕获视频序列。在该方案中,经由扫描设备103扫描影片。
要理解的是,不管是扫描影片还是影片已经处于数字格式,影片的数字文件将包括关于各帧的位置的指示或信息,例如,帧号、从影片开始起的时间等。数字图像文件的每个帧将包括一个图像,例如,I1、I2、…In。
可以通过具有相同设置的两个相机拍摄立体图像。相机的任一个被标定为具有相同的焦距、焦点高度和平行焦平面;或者必须基于已知的相机参数来偏转(warp)图像,好像它们由具有平行焦平面的相机拍摄。该偏转过程包括相机标定(camera calibration)和相机调校(camera rectification)。标定和调校过程调整立体图像的外极线,使得外极线精确地为图像的水平扫描线。因为对应点发现沿着外极线发生,所以调校过程将对应搜索简化为仅沿着扫描线搜索,这大大降低了计算成本。对应点是对应于图像中相同场景点的像素。
接下来,在步骤204,经由视差估计器116对于场景(例如,帧)中的每个点估计视差图。用于每个场景点的视差被计算为左眼和右眼图像中的匹配点的相对距离,即,发现左和右图像中的对应于相同场景点的像素。例如,如果左眼图像中一个点的水平坐标是x,并且右眼图像中其对应点的水平坐标是x’,则视差d=x’-x。
在估计视差的一个实施例中,最初,获取立体图像对。计算视差成本函数,包括计算像素匹配成本函数132和计算平滑成本函数134。执行低成本立体匹配优化(例如,动态程序设计函数138),以便得到立体匹配两个图像的初始确定结果。然后低成本优化的结果用于初始化置信传播函数136,以便加速置信传播函数以最小化视差成本函数。要理解的是,在本领域中已知用于视差估计的其它方法,并且可以由本公开的系统和方法采用所述其它方法。
在步骤206,确定视差转换。基本存在两个类型的视差转换:影片片段(例如,场景、镜头等)之间的可能是突然的视差转换,以及影片片段(例如,场景、镜头等)内的通常连续的视差转换。如下所讨论的,片段意味着包含相同内容的帧的序列。
片段之间的视差转换通常是不连续和突然的。所以为了测量视差转换,首先估计之前片段的最后帧和当前片段的开始帧的视差图。换句话说,假设在第i片段的末尾处的视差图是Di,并且在第(i+1)片段的开始处的视差图是Di+1,那么视差差是
δD=Di+1-Di (1)
为了测量深度改变的幅度,使用绝对视差差
|δD|=|Di+1-Di| (2)
为了得到总体视差改变,使用最大视差转换,其是
或者使用平均视差转换,其是
其中W和H是视差图的宽度和高度。
对于片段中的画面,视差转换通常是连续的,但是少量时间中的大视差转换也将促进观众的眼睛疲劳。类似于片段之间的视差改变,可以将视差差用作测量,即,δD=Di+1-Di。然而,将在每个帧而不仅仅在片段的边界执行该测量。这里,确定一帧内部的像素上的平均视差值而不是跨越各帧的像素上的平均视差值,然后计算每个连续帧之间的差。
由大视差和/或视差改变导致眼睛疲劳。因此,在步骤208,基于视差图和视差转换估计眼睛疲劳。本公开的系统和方法利用非常粗略的眼睛疲劳模型。该系统和方法假设存在将眼睛疲劳与在每帧处的视差和视差改变相关的函数,并且眼睛疲劳感跨越各帧得到累积,但是随着时间指数衰减。
首先,假设存在“即时眼睛疲劳函数”
其将由视差导致的眼睛疲劳与平均视差
和视差转换
相关。然后,如果在第i帧之后视差保持为零,则眼睛疲劳测量可以表示为衰减模型,如下
其中
是建模视差对眼睛疲劳的即时影响的函数。λ是衰减系数。该模型假设如果在屏幕上不再存在视差(即,会聚点变为焦点),则眼睛疲劳将快速渐弱。注意到:因为在各片段之间可能存在视差的突然改变,因此函数
对于片段内的帧和各片段之间的帧可能是不同的,这是它们在上面被不同地处理的原因。函数
的简单示例可以是
和
之间的线性组合,如下:
其中a和b是权重系数,其对于片段内的视差转换和片段之间的视差转换应该是不同的。a和b的值可以根据经验确定。
当视差保持跨越各帧改变时,那么,眼睛疲劳感应该随着时间得到累积。然而,眼睛疲劳不能永远上升,所以可以采用函数来建模眼睛疲劳感随着时间的渐弱效果。S函数用于对眼睛疲劳感的饱和建模,如下:
S(ES)=1/(1+exp(-ES)) (7)
在图6中示出该函数的形状。
给定这些要素,在帧i处总体眼睛疲劳测量可以递归地定义,如下:
其中ESi(ti)是在第i帧的眼睛疲劳测量,并且ti是第i帧的时间,并且λ是用于控制衰减速度的常数。该测量的计算可以通过随着时间的模拟而实现。
图7是随着时间的眼睛疲劳测量方程式的图示。确定在第(i-t)帧的眼睛疲劳,并且将exp(-λt)的衰减因子应用到眼睛疲劳测量。结果然后与第i帧的即时眼睛疲劳函数组合。将S形函数应用于组合结果以确定在第i帧的眼睛疲劳。
参照图8,图示了即时眼睛疲劳函数和总体眼睛疲劳测量。在每个帧(例如,帧1、2等)上的曲线是该帧的即时眼睛疲劳函数,并且在测量点上的曲线是即时眼睛疲劳函数的累积。再次参照图5,在步骤210,确定由观看者经历的总体眼睛疲劳是否可接受。在一个实施例中,将总体眼睛疲劳测量对操作者(例如,导演和剪辑师)形象化为曲线图,以便根据曲线图确定眼睛疲劳是否太高。在另一实施例中,可以将总体眼睛疲劳测量与预定阈值比较,以便确定是否需要校正。例如,生成表示总体眼睛疲劳测量的曲线,然后将曲线上的每个点的值与预定阈值比较。在该实施例中,对于不同类型的场景和电影,预定阈值将是不同的。
如果确定眼睛疲劳太高,则在步骤212将对立体图像执行视差校正或调和(grading)以降低眼睛疲劳。调和是平滑跨越各帧的视差值的过程。通过平滑跨越各帧的视差,可以减少视差的突然改变,并且因此可以降低眼睛疲劳。用于减少视差的一个示例性方法被称为会聚调整,其通过向左或向右偏移右眼图像以调整会聚点来实现。通过向左或向右偏移右眼图像,可以人工减少或增加像素的视差,分别导致更小或更大的总体深度。
图像偏移的问题在于所有像素的深度增加相同量,这与3D场景几何形状无关。然而,如果精确的深度图是可用的,则可能合成具有新的虚拟相机位置的场景的新视图,以便减少视差。在该实施例中,使用以下公式z=Bf/d(其中B是两个相机之间的距离,也称为基线,并且f是相机的焦距),通过深度图生成器123将上面确定的每个场景点的视差值d转换为深度值z,(即从场景点到相机的距离)。至少一个图像(例如,左眼视图图像)的每个的深度值存储在深度图中。深度图的深度值相应改变,以便合成新的视图同时减小图像的视差。例如,为了创建新的视图,首先改变深度值,然后重新绘制新的左或右(或两者)图像。重新绘制过程采用左(或右)图像和深度图,并且创建新的右(或左)图像。深度值是像素的3D信息,因此,可以使用诸如光线跟踪的技术,以便将3D点绘制为新的视图中的2D像素。新的视图将具有更小的视差或更小的视差转换,并且因此对于观看者或观众将导致降低的眼睛疲劳。
现在参照图4,例如在存储设备124中存储对应图像和相关联的深度图,并且可以被检索用于3D回放。此外,运动画面或视频剪辑的所有校正图像可以与相关联的深度图存储在表示运动画面或剪辑的立体版本的单个数字文件130中。数字文件130可以存储在存储设备124中用于之后检索,例如,用于冲印原始影片的立体版本。
尽管在此已经详细示出和描述了并入本公开的教导的实施例,但是本领域技术人员可以容易地设计仍并入这些教导的任何其它变化的实施例。已经描述了用于测量在观看3D呈现时感受到的潜在眼睛疲劳的系统和方法的优选实施例(其旨在是说明性的而不是限制性的),注意到根据上面的教导本领域技术人员可以进行修改和变化。因此,要理解的是在所公开的本公开的特定实施例中可以进行、在如由所附权利要求概述的本公开的范围内的改变。