本申请要求如下美国临时申请的申请日的权益,其通过引用而被整体合并于此:(i)2010年6月11日提交和发明名称为“3D Disparity Maps(三维视差图)”的第61/397,418号;以及(ii)2010年3月31日提交和发明名称为“Dense Disparity Maps(稠密视差图)”的第61/319,566号。
具体实施方式
作为展示在本申请中的一些特征的预览,至少一种实现方式描述了基于比任何标准显示器的最大分辨率大得多的分辨率的视差值的使用。在本申请中,术语“分辨率”一般指水平分辨率,以及用,例如,显示器的像素的数量,显示器的像素的方块的数量,或数字图像的元素的数量来度量。非标准分辨率是易于转换成几种标准显示分辨率之一或多种的整数。在这种特定实现方式中,有效显示分辨率是几种标准显示分辨率的最小公倍数。有效显示分辨率的视差值用整数格式表示。作为基于大非显示分辨率的结果,视差值可能很大。然而,当将视差值向下转换成标准显示分辨率时,整数表示保证了子像素精度。
从上面的预览中退出,图1例示了视频图像中的深度的概念。图1示出了带有传感器107的右摄像机105、和带有传感器112的左摄像机110。两台摄像机105,110捕获物体115的图像。为了例示的目的,物体115是有形十字架,其具有位于十字架的右侧的任意细节116(参见图2)。右摄像机105含有捕获角120,左摄像机110具有捕获角125。两个捕获角120,125在3D立体区130中重叠。
因为物体115处在3D立体区130中,所以物体115可被摄像机105,110两者看见,因此物体115能够被感觉成具有深度。物体115具有实际深度135。实际深度135一般被称为从物体115到摄像机105,110的距离。更具体地说,实际深度135可以称为从物体115到立体摄像机基线140的距离,立体摄像机基线140是通过两台摄像机105,110的入射光瞳面定义的平面。摄像机的入射光瞳面通常在变焦透镜内部,因此通常在物理上是不可接近的。
摄像机105,110还被显示成具有焦距145。焦距145是从出射光瞳面到传感器107,112的距离。为了例示的目的,入射光瞳面和出射光瞳面被显示成重合的,但在大多数情况下,它们分开一点。另外,摄像机105,110被显示成具有基线长度150。基线长度150是摄像机105,110的入射光瞳的中心之间的距离,因此在立体摄像机基线140上测量。
物体115被摄像机105和110的每一台成像成传感器107和112的每一个上的实像。这些实像包括传感器107上的细节116的实像117、和传感器112上的细节116的实像118。如图1所示,如在现有技术中所知,实像是颠倒的。
深度与视差密切相关。图2示出了从摄像机110捕获的左图像205、和从摄像机105捕获的右图像210。两个图像205,210包括具有细节116的物体115的表示。图像210包括细节116的细节图像217,图像205包括细节116的细节图像218。在左图像205中的细节图像218中的像素220中,以及在右图像210中的细节图像217中的像素225中捕获了细节116的最右点。像素220和像素225的地点之间的水平距离是视差230。假设物像217,218是垂直对准的,使得细节116的图像在图像205,210两者中具有相同垂直位置。当左右图像205,210分别被观众的左右眼看到时,视差230提供了物体215具有深度的感觉。
图3示出了视差与感觉深度之间的关系。所示的是三个观察者305,307,309在各自屏幕310,320,330上观看物体的立体图像对。
第一观察者305观看具有正视差的物体的左视图315和物体的右视图317。正视差反映在屏幕310上物体的左视图315在物体的右视图317的左侧的事实。正视差导致出现在屏幕310的平面的后面的感觉或虚拟物体319。
第二观察者307观看具有零视差的物体的左视图325和物体的右视图327。零视差反映在屏幕320上物体的左视图325处在与物体的右视图327相同的位置上的事实。零视差导致出现在与屏幕320相同的深度上的感觉或虚拟物体329。
第三观察者309观看具有负视差的物体的左视图335和物体的右视图337。负视差反映在屏幕330上物体的左视图335在物体的右视图337的右侧的事实。负视差导致出现在屏幕330的平面的前面的感觉或虚拟物体339。
在这一点上值得注意的是,视差和深度在各种实现方式中可以互换使用,除非上下文另有所指或要求。从方程1中我们知道视差与景深成反比:
其中“D”描述深度(图1中的135),“b”是两台立体图像摄像机之间的基线长度(图1中的150),“f”是每台摄像机的焦距(图1中的145),以及“d”是两个相对特征点的视差(图2中的230)。
上面的方程1对于具有相同焦距的平行摄像机是有效的。可以为其他情形定义更复杂的公式,但在大多数情况下,方程1可以用作近似。但是,另外,如本领域的普通技术人员所知,下面的方程2至少对于交向(converging)摄像机的各种安排是有效的:
其中d∞是处在无穷远的物体的视差值。d∞取决于交向角和焦距,用米(例如)来表达而不是用像素的数量来表达。前面参照图1和针对焦距145已经讨论过焦距。交向角如图4所示。
图4包括处在交向配置下而不是图1的平行配置下的摄像机105和摄像机110。角度410示出了摄像机105,110交向的视线,角度410可以称为交向角。
视差图用于提供视频图像的视差信息。视差图一般指具有与相关视频图像中的像素相对应的几何的一组视差值。
稠密视差图一般指具有通常与相关视频图像的分辨率相同的空间和时间分辨率的视差图。时间分辨率指的是,例如,帧速率,以及可以是,例如,50Hz或60Hz。因此,稠密视差图一般每个像素地点具有一个视差样本。稠密视差图的几何通常与相应视频图像的几何相同,例如,具有以像素为单位的如下水平和垂直尺寸的长方形:
(i)1920×1080(或1920×1200);
(ii)1440×1080(或1440×900);
(iii)1280×720(或1280×1024,1280×960,1280×900,1280×800);
(iv)960×640(或960×600,960×576,960×540);
(v)2048×1536(或2048×1152);
(vi)4096×3072(或4096×3112,4096×2304,4096×2400,4096×2160,4096×768);或
(vii)8192×4302(或8192×8192,8192×4096,7680×4320)。
稠密视差图的分辨率可以基本上与相关图像的分辨率相同,但也可以与之不同。在一种实现方式中,图像边界上的视差信息难以获得。因此,在那种实现方式中,边界像素上的视差值未包括在视差图中,该视差图小于相关图像。
下采样视差图一般指分辨率小于本机视频分辨率(例如,除以因数4)的视差图。下采样视差图将,例如,每个像素块具有一个视差值。
稀疏视差图一般指与相应视频图像中被认为可容易跟踪的有限个像素(例如,1000个)相对应的一组视差。所选的有限个像素一般取决于内容本身。在图像中经常超过一二百万个像素(1280×720或1920×1080)。像素子集选择一般通过能够检测特征点的跟踪工具自动或半自动完成的。跟踪工具都是现成的。特征点可以是,例如,可以在其他图像中容易跟踪的画面中的边缘或角落点。一般为像素子集优选代表物体的高对比度边缘的特征。
视差图,或更一般地说,视差信息可以用于多种处理操作。这样的操作包括,例如,调整消费者设备上的3D效果的视图内插(呈现)、提供智能字幕布置、视觉效果以及图形插入。
在一种特定实现方式中,将图形插入图像的背景中。在这种实现方式中,3D呈现包括两者都在前景中的体育比赛解说员和足球运动员之间的立体视频采访。背景包括体育馆的视图。在本例中,视差图用于当相应视差值比预定值小(也就是说,更近)时从立体视频采访中选择像素。相反,如果视差值比预定值大(也就是说,更远)时从图形中选择像素。这使,例如,导演可以将采访参与者显示在图形图像的前面,而不是在实际体育馆背景的前面。在其他变体中,在球员最近得分播放的重放期间用像,例如,球场那样的另一种环境取代该背景。
在一种实现方式中,根据用户偏爱软化(减弱)3D效果。为了减弱3D效果(减小视差的绝对值),使用视差和视频图像内插新视图。例如,将新视图放置在现有左视图和右视图之间的地点上,让新视图取代左视图和右视图之一。因此,新立体图像对具有缩短的基线长度和具有减小的视差,因此具有减弱的3D效果。
在另一种实现方式中,进行外推而不是内插,以便扩大表观深度,从而增强3D效果。在这种实现方式中,与相对于原始左右视图之一具有更长基线长度的虚拟摄像机相对应地外推新视图。
在另一个实施例中,视差图用于在视频图像中智能放置字幕,以便降低或避免观众不适感。例如,字幕一般应具有在字幕遮挡的任何物体前面的感觉深度。但是,感觉深度一般应具有与感兴趣的区域相当,而不是在感兴趣区域中的物体前面太远的深度。
对于许多3D处理操作,稠密视差图优于下采样视差图或稀疏视差图。例如,当视差图用于实现用户可控3D效果时,基于每个像素的视差信息一般是优选的。基于每个像素视差信息一般可能取得更好的结果,因为使用稀疏或下采样视差图可能使合成视图的质量变差。
视差值可以用多种格式表示。有几种实现方式使用如下格式来表示视差值以便于存储或发送:
(i)带符号整数:2的补数
·(a)负视差值指示在屏幕前面的深度
·(b)零用于屏幕面中物体的视差值
(ii)1/8像素为单位
(iii)用16位表示视差值
·(a)典型视差范围在+80个像素到-150个像素之间变化。这对于分辨率为1920或2048的四十英寸显示器一般足够了。
·(b)对于1/8像素精度,该范围在+640到-1200个单位之间,这可以用11个位+1个符号位=12个位来表示。
·(c)为了在8k显示器(具有约等于1920或2048个像素宽的显示器的水平分辨率的四倍的分辨率)上保持相同3D效果,我们通常需要两个附加位来编码视差:12+2=14个位。
·(d)提供2个位以备将来使用。
并且,使用上述格式的各种实现方式也为稠密视差图提供。因此,为了针对这样的实现方式来完成稠密视差图,为相应视频图像中的每个像素地点提供上述16-位格式。
视差以及相关深度变化造成场景的不同视图之间的遮挡。图5示出了在观众的大脑中组合在一起产生3D场景530的左视图510和右视图520。左视图510、右视图520、和3D场景530每一种都包含三个物体,其包括胖圆筒532、椭球体534、和瘦圆筒536。但是,如图5所示,三个物体532,534,536的两个在两个视图510,520和3D场景530的每一个中处在不同的相对地点上。这两个物体是胖圆筒532和瘦圆筒536。椭球体534在视图510,520和3D场景530的每一个中处在相同的相对地点上。
如下面简化讨论所说明,不同的相对地点会产生遮挡。在也揭示了遮挡区545和548的左图像540中示出了左视图510。遮挡区545和548只在左视图510中可看见而在右视图520中看不见。这是因为(i)在右视图520中与遮挡区545相对应的区域被胖圆筒532覆盖,以及(ii)在右视图520中与遮挡区548相对应的区域被瘦圆筒536覆盖。
类似地,在也揭示了两个遮挡区555和558的右图像550中示出了右视图520。遮挡区555,558只在右视图520中可看见而在左视图510中看不见。这是因为(i)在左视图510中与遮挡区555相对应的区域被胖圆筒532覆盖,以及(ii)在左视图510中与遮挡区558相对应的区域被瘦圆筒536覆盖。
鉴于在立体图像对中可能存在遮挡,为立体图像对提供两个视差图是有用的。在一种这样的实现方式中,为左视频图像提供左视差图,为右视频图像提供右视差图。已知算法可以用于将视差值指定给每个图像不能使用标准视差矢量手段确定视差值的像素地点。然后可以通过比较左右视差值确定遮挡区。
作为比较左右视差值的一个例子,考虑左眼图像和相应右眼图像。一个像素L处在第N行上,在左眼图像中具有水平坐标xL。像素L被确定为具有视差值dL。像素R处在相应右眼图像的第N行上,具有与xL+dL最接近的水平坐标。像素R被确定为具有大约“-dL”的视差值dR。然后,可以有较大程度把握地认为,在L或R上没有遮挡,因为视差相互对应。也就是说,一般说来,对于它们确定的视差,像素L和R两者指向对方。
但是,如果dR不与-dL大致相同,则可能存在遮挡。例如,如果两个视差值明显不同,则在考虑到符号之后,一般可以很有把握地认为存在遮挡。在一种实现方式中,明显不同用|dL-dR|>1来指示。另外,如果视差值之一(dR或dL)不可用,则一般可以有较大程度把握地认为存在遮挡。视差值可能不可用是因为,例如,不能确定视差值。遮挡一些涉及两个图像之一。例如,与具有较小幅度的视差相联系的像素所示,或与不可用视差值相对应的像素所示的场景部分一般认为在另一个图像中被遮挡。
表示视差值的一种可能性是使用整数来表示视频图像中的给定像素地点的视差的像素数。视差值代表视频图像的特定水平分辨率的视差的像素数。因此,视差值取决于特定水平分辨率。这样的实现方式是有用的并且可以是有效的。
但是,其他实现方式要求视差值达到子像素精度。这样的实现方式一般使用浮点数来表示视差值,以便在视差值中可以包括分数。这些实现方式的几种提供了给定水平分辨率特有的视差值。这些实现方式也是有用的并且可以是有效的。
一些其他实现方式将视差值表示成百分比值。因此,取代将视差表示成像素数,将视差表示成水平分辨率的百分比。例如,如果给定像素地点的视差是十个像素,和水平分辨率是1920,则百分比视差值是(10/1920)*100。这样的实现方式也可以提供视差的子像素精度。百分比值表示通常是浮点表示,而不是整数表示。例如,水平分辨率为1920的显示器的一个像素视差是1/1920,等于0.0005208或0.05208%。
并且,这样的百分比视差值可以直接应用于其他水平分辨率。例如,假设(i)视频图像具有1920的水平分辨率,(ii)将视频图像发送到用户的家里,以及(iii)用户的显示设备具有1440的水平分辨率。在这种情形下,用户的显示设备(或机顶盒、一些其他处理器或处理设备)通常将视频图像的水平分辨率从1920转换成1440,并且还转换视差值以便视差值对应于1440的水平分辨率。该转换可以,例如,通过将百分比视差值乘以水平分辨率来进行。例如,如果给定像素地点的百分比视差是0.5%,并且水平分辨率是1920,则绝对视差值是1/2*1920/100。这些实现方式的几种与视频图像和视差图的水平分辨率无关地将等于百分比视差值的单个视差值用在视差值的发送和存储中。这样的实现方式也是有用的,并且可以是有效的。
如上所述,发送系统可以使用与视频图像的水平分辨率不同的发送格式的水平分辨率。另外,接收系统可以使用不同水平分辨率来显示视频图像。因此,可能需要从一种水平分辨率转换到另一种水平分辨率。这样的转换不仅改变视频图像的分辨率,而且需要调整视差值。一般说来,这样的转换不仅是绝对视差值所需的,而且是百分比视差值所需的。
如下的例子提供了有关各种实现方式之间的一些折衷的更多细节:
●(i)一种实现方式将视差值格式化成精度为一个像素的1/8的给定视频分辨率的绝对值(像素数)(例如,在具有1920个水平像素的视频内容上一个物体具有10个像素的视差)。
●(ii)这样的系统具有许多优点,包括简单和易于操纵。
●(iii)在一个这样的系统中,使用11个位:8位用于提供上至255个像素视差的整数部分,3位用于小数部分(以便达到1/8准确度或精度)。注意,也可以使用符号位,或系统提供+/-127个像素的视差值。
●(iv)如果在发送期间需要将视频图像重新格式化,则也要将视差图格式化,这可能导致信息丢失。例如,参照图6,一种实现方式使用水平分辨率为1920的本机格式610和下采样成具有1280(或在另一种实现方式中,1440)的水平分辨率的发送格式620。在通常导致深度细节丢失的子采样之前,与视频图像一样地滤波深度或视差图。该滤波发生在滤波和子采样操作630中。将滤波和子采样操作应用于视频图像和视差图像两者。
●(v)而且,新视差值被转换,并通常遭到破坏。例如,在下采样以便降低视差图的分辨率(也就是说,减少视差值的数量)之后,视差值被转换成发送格式的分辨率。当从1920变成1280时,10个像素的视差值变成6.6666。这导致了,例如,将该值舍成6.625,因为小数部分只能是0.125(1/8)的倍数。
●(vi)在发送之后,如果显示器是1920个像素宽,则最终视差值是6.625×1920/1280=9.9375。9.9375的值与10的原始值相比代表某种失真。9.9375的值可以被上,向下舍成最接近整数,或例如,最接近1/8,从而可能造成信息丢失。如果该值被向下舍入,则丢失很严重。
一种解决方案是使用可能是所有水平分辨率共有的百分比视差。上述这样的实现方式既有优点也有缺点。百分比视差值的使用使发送之前的转换操作可以省略。
另一种解决方案是使用不是任何一种常用分辨率特有的整数值(注意,通常假设画面已经经过垂直校正以及接受其他处理。于是,通常针对水平布置来讨论视差就足够了)。这种解决方案建议定义11520个像素的参考分辨率(或虚拟分辨率),在本申请中将其称为几种标准TV分辨率(720,960,1280,1440,1920)的最小公倍数(“SCM”)。注意,SCM在各种参考文献中也被称为“最低公倍数”。
这种SCM解决方案的至少一种实现方式具有包括如下的许多优点(其他实现方式无需具有所有这些优点):
●(i)因为视差值是整数,所以确定和存储视差值简单,并且使视差值易于操纵和处理。
●(ii)视差值不再是严格绝对的,而是具有相对方面,因此与本机视频分辨率无关。
●(iii)不需要小数部分。
●(iv)视差值像百分比,因为它是相对的,并且与本机视频分辨率无关。但是,视差值是整数,因此,无明显需要编码像0.00868%那样的复杂数字来描述最小视差值。最小视差值是一个像素,1/11520是0.00868%。
●(v)在传输期间无明显需要将视差值转码,因为视差值指的是11520。
●(vi)当基于SCM的视差值到达,例如,机顶盒(“STB”)时,STB通过进行像,例如,如下那样的极简单运算计算给定视频分辨率的真正绝对值视差:
o(a)对于1920分辨率,视差/6;
o(b)对于1440分辨率,视差/8;
o(c)对于1280分辨率,视差/9;以及
o(d)对于960分辨率,视差/12。
●(vii)与使用哪些信道无关,只要不转码,在传输期间不关心视差信息。
●(viii)即使对于像2k,4k,8k那样的较新消费者分辨率,其运算实现起来也简单,并且可以容易地在STB处理单元中实现。注意,2k一般指具有2048的水平像素分辨率的图像,4k一般指4096,以及8k一般指8192。其运算是:
o(a)对于2048分辨率,视差×8/45;
o(b)对于4096分辨率,视差×16/45;以及
o(c)对于8192分辨率,视差×32/45。
在实际中,一个或多个SCM实现方式(1)确定相应视频内容的现有水平分辨率的视差值;(2)通过简单相乘和/或相除将那些视差值转换成11520的尺度以生成SCM视差值;(3)不转码地存储和发送SCM视差值;以及(4)使用简单相乘和/或相除将接收的SCM视差值转换成输出显示器的分辨率。因为不用转码,所以这种解决方案一般不会遭受由转码引起的信息丢失(例如,舍入丢失)。注意,上述过程不会改变视差图的分辨率。而是,缩放现有视差值(针对现有分辨率),以便使它们基于,或反映与实际分辨率不同的参考分辨率(或虚拟分辨率)。
各种实现方式通过与上述的那些相反的简单数学运算生成视差值。例如,为了生成SCM视差值,按如下将接收的绝对视差值乘以和/或除以一个或两个整数:
o(i)1920视差*6=SCM视差;
o(ii)1440视差*8=SCM视差;
o(iii)1280视差*9=SCM视差;
o(iv)960视差*12=SCM视差;
o(v)2048视差*45/8=SCM视差;
o(vi)4096视差*45/16=SCM视差;
o(vii)8192视差*45/32=SCM视差;
图7更详细地提供了为各种不同水平分辨率确定最小公倍数的过程。列710列出了不同水平分辨率。列720列出了水平分辨率的最小因子(factor)。例如,960被因子分解成26*3*5,其中26是2的6次方。因此,960=64*3*5。还要注意到,关于1280的水平分辨率,30等于1。
前四个分辨率960,1280,1440和1920的最小公倍数28*32*5,即等于11520。通过乘以2的适当次方,然后除以未出现在2k,4k和8k中的32和5因子,将11520用在2k,4k和8k的分辨率上。注意,在各种实现方式中,使用逐位左移操作,而不是实际相乘运算来进行2的幂次相乘。图7包括提供在11520与显示在列710中的各种分辨率之间转换的转换方程的列730。
列730的转移方程可以用于根据多种常用显示器尺寸(显示器尺寸指的是用,例如,英寸或厘米度量的显示器的物理尺寸)支持的分辨率缩放视差值。在图6的例子中,通过6的因子缩放基于,例如,1920水平分辨率的输入视差值,以便将视差值转换成基于11520的水平分辨率的新视差值。新视差值也基于960,1280,和1440的水平分辨率,因为那些分辨率是被11520的分辨率接纳的,并且用在确定11520的分辨率中。
一种替代实现方式简单地使用11520*25=368640的视差分辨率。在这种替代实现方式中,无需相乘将368640转换回到原始分辨率。
11520的值被用于各种实现方式。但是,在其他实现方式中也可以使用其他值。在一种实现方式中,将11520加倍成23040。在第二种实现方式中,将368640加倍成737280。
可替代地,在各种实现方式中可以使用不同组的水平分辨率。这导致不同的SCM。例如,在另一种实现方式中,只对1920和1440输出分辨率感兴趣,因此该实现方式使用5760的SCM。然后,为了生成SCM视差值,将来自1920分辨率的视差值乘以3的因子,而将来自1440分辨率的视差值乘以4的因子。
应当清楚,各种实现方式不是SCM实现方式。例如,甚至11520值也不是列在列710中的所有七种分辨率的SCM。而是,368640值是SCM。不过,即使视差值不是所有水平分辨率的最小公倍数,描述在本申请中的实现方式一般也称为SCM实现方式。
注意,SCM实现方式提供了子像素精度。例如,对于1920分辨率,视差值使用6的因子转换成11520分辨率/从11520分辨率转换过来,这样就提供了1/6的像素精度。更具体地说,如果基于11520的视差值是83,则基于1920的视差值是135/6。这显然提供了1/6的像素精度。就质量,以及将来使用的边界而言,这提供了各种优点。例如,如果1920分辨率被2k分辨率取代,则基于11520的视差值仍然提供8/45像素精度的子像素精度,这稍低于1/6(7.5/45)像素的精度,但仍然高于1/5(9/45)像素的精度。
使用11520的SCM分辨率的至少一种实现方式以两字节(十六位)格式操作。在1920×1080显示器(分辨率)上典型的视差值往往在+80与-150个像素之间变化。在11520参考分辨率上将那些数字乘以六得出+480到-900的范围。这个1380的范围可以用十一个位(211=2048)来表示。一种替代实现方式使用十个位来表示视差的绝对值(视差最大绝对值是900),以及用一个附加位来表示符号。
又一种实现方式通过将视差的符号变成隐性的保留一个位。例如,与视差的符号一起编码左视图中的像素的视差。但是,假设相应右视图中的相应像素的视差具有相反符号。
另一种实现方式为了能够为每个视图(左视图和右视图两者)提供一个稠密视差图,从而减轻遮挡引起的问题,分配指示稠密视差图对应的视图的位。另一种实现方式提供图像(左图像或右图像)与相应稠密视差图之间的隐性联系,因此无需把位花费在这个信息上。这些实现方式的变体使用一个或多个附加位来介绍其他类型的图或图像。一种这样的实现方式使用两个位来指示该图是(i)左图像视差图,(ii)右图像视差图,(iii)遮挡图,还是(iv)透明图。一种实现方式使用十六位格式,将11位用于指示-900到+480的范围,将2位用于指示图的类型,另外3位待用。
图8提供了例示一种或多种实现方式的操作的框/流程图。图8还例示了不同实现方式之间的一些折衷。
图8包括处理视频的处理链810。视频图像811具有1920的水平分辨率。但是,处理链810的发送格式具有1280的分辨率。于是,在操作812中滤波和下采样视频图像811,以便生成水平分辨率为1280的视频图像813。在处理链810中滤波和下采样是一起进行的。但是,在其他实现方式中分开进行滤波和下采样。该滤波用于,例如,当下采样视频图像811时以防止混叠为目的地低通滤波视频图像811。在发送和/或存储操作814中传送视频图像813。
处理链810的接收侧存取可以与视频图像813相同、相似或不同的接收视频图像815。例如,在一种实现方式中,视频图像815是视频图像813的存储版本。另外,在另一种实现方式中,视频图像815代表源编码和解码操作(未示出)之后视频图像813的重构版本。并且,在又一种实现方式中,视频图像815代表信道编码和解码(包括纠错)操作(未示出)之后视频图像813的纠错版本。在上采样操作816中处理视频图像815以产生具有像在原始视频图像811中那样的1920水平分辨率的视频图像817。
图8还包括处理与在处理链810中处理的视频图像相对应的视差图像的处理链820。视差图像821具有1920的水平分辨率,并且包括基于11520的分辨率的整数值化视差值。注意,视差图像一般指像,例如,稠密视差图、下采样视差图、或稀疏视差图那样的视差信息的任何累积。并且,视差图可以对应于,例如,画面、帧、场、切片、宏块、分区、或视差信息的一些其他集合。
但是,处理链820的发送格式具有1280的水平分辨率。于是,在操作822中滤波和下采样视差图像,以便生成水平分辨率为1280的视差图像823。在处理链820中滤波和下采样是一起进行的。但是,其他实现方式分开进行滤波和下采样。该滤波用于,例如,当下采样视差图像821时以防止混叠为目的地低通滤波视差图像821的视差值。
视差图像821的视差值是整数值。这可以以各种方式来完成。在一种实现方式中,将滤波和下采样操作的结果舍成最接近整数。在另一种实现方式中,简单地放弃任何分数部分。又一种实现方式将浮点表示用于视差图像823的视差值。注意,即使在滤波和下采样产生1280的视差图像823的分辨率之后,视差值也仍然基于11520的分辨率。
在发送和/或存储操作824中传送视差图像823。处理链820的接收侧存取接收的视差图像825。视差图像825可以与视差图像823相同、相似或不同。例如,在一种实现方式中,视差图像825是视差图像823的存储版本。另外,在另一种实现方式中,视差图像825代表源编码和解码操作(未示出)之后视差图像823的重构版本。并且,在又一种实现方式中,视差图像825代表信道编码和解码(包括纠错)操作(未示出)之后视差图像823的纠错版本。但是,如果需要的话,通过使用,例如,舍入使视差图像825中的视差值保持整数。
在上采样操作826中处理视差图像825以产生具有像在原始视差图像821中那样的1920水平分辨率的视差图像827。操作826使用,例如,舍入和截断生成视差图像827的整数值。
在转换操作828中将视差图像827的视差值从基于11520分辨率的值转换成基于1920分辨率的值。如上所述,转换操作827将每个视差值除以6。转换操作828生成视差图像829。将视差图像829的视差值表示成浮点数,以便保持子像素精度。
应当清楚,处理链820至少包括重要优点。首先,视差值在整个处理链820中都是整数,直到提供最终视差图像829。其次,尽管发送格式的水平分辨率不同于本机视差图821的水平分辨率,但不用转码实际视差值。因此,该视差值可应用于多种不同水平分辨率。
然后,接收系统使用视差图像829处理视频图像817。如上所述,该处理可以包括调整3D效果,定位字幕,插入图形,或实现方式视觉效果。
图8还描述了用于比较目的的处理链830。处理链830也处理与在处理链810中处理视频图像相对应的视差图像。处理链830是处理链820的一种替代。应当清楚,如下所述,为了简化图8,未示出整个处理链830。
视差图像831具有1920的水平分辨率,并且包括具有浮点表示的基于百分比视差值。但是,处理链830的发送格式具有1280的水平分辨率。于是,在操作832中滤波和下采样视差图像831,以便生成水平分辨率为1280的视差图像833。操作832可以类似于,例如,滤波和下采样操作812或822。继续用浮点格式表示视差图像833的基于百分比视差值。
处理链830的其余部分(未示出)反映了处理链820的其余部分。在发送和/或存储操作中传送视差图像833。处理链830的接收侧存取接收的视差图像。将接收的视差图像上采样成1920的水平分辨率,然后将视差值从基于百分比的值转换成基于1920分辨率的值。如上所述,该转换操作是百分比乘以1920的乘法。但是,与处理链820相反,处理链830中的视差图像的视差值总是用浮点格式表示。
图8还描述了用于比较目的的处理链840。处理链840也处理与在处理链810中处理视频图像相对应的视差图像。处理链840是处理链820的一种替代。应当清楚,如下所述,为了简化图8,未示出整个处理链840。
视差图像841具有1920的水平分辨率,并且包括基于1920分辨率和具有浮点表示的视差值。但是,处理链840的发送格式具有1280的水平分辨率。于是,在操作842中滤波和下采样视差图像841,以便生成水平分辨率为1280的视差图像843。操作842可以类似于,例如,滤波和下采样操作812、822或823。继续用浮点格式表示视差图像843的视差值。
然后,在转换操作850中转换视差图像843的视差值,以便生成视差图像860。转换操作850将视差值从基于1920水平分辨率的值转换成基于1280水平分辨率的值。继续用浮点格式表示视差图像860的视差值。
处理链840的其余部分(未示出)反映了处理链820的其余部分。在发送和/或存储操作中传送视差图像860。处理链840的接收侧存取接收的视差图像。将接收的视差图像上采样成1920的水平分辨率,然后将视差值从基于1280分辨率的值转换成基于1920分辨率的值。该转换操作牵涉到将视差值乘以1920/1280。与处理链830一样,而与处理链820相反,处理链830中的视差图像的视差值总是用浮点格式表示。
在处理链840的另一种实现方式中,不进行转换操作850。因此,视差图像843的视差值保持与基于1920水平分辨率的视差值一样。但是,视差图像843的水平分辨率保持与1280一样。因此,这种实现方式避免了发送之前的转换,以及可能避免了接收或检索之后的再转换。在至少一些实现方式中避免转换或再转换也避免了舍入误差。这种实现方式与本申请中的所有其他实现方式一样具有优点并且可以是有用的。但是,视差值在整个实现过程中都用浮点数表示。
现在参照图9,示出了可以应用上述特征和原理的视频发送系统或装置900。视频发送系统或装置900可以是,例如,使用像,例如,卫星、有线、电话线、或地面广播那样的多种介质的任何一种发送信号的首端或发送系统。视频发送系统或装置900也可以或可替代地用于,例如,提供加以存储的信号。可以在互联网或一些其他网络上提供发送。视频发送系统或装置900能够生成和输送,例如,视频内容以及像,例如,包括,例如,深度和/或视差值的深度指示那样的其他内容。还应当清楚,除了提供视频发送系统或装置的方块图之外,图9的方块还提供了视频发送过程的流程图。
视频发送系统或装置900接收来自处理器901的输入视频。在一种实现方式中,处理器901简单地将像视差图像821,831,841和/或视频图像811那样的原始分辨率图像提供给视频发送系统或装置900。但是,在另一种实现中,处理器901是配置成,例如,如上面针对操作812,822,832,842所述,进行滤波和下采样,以便生成像视频图像813和/或视差图像823,833,843那样的图像的处理器。在又一种实现方式中,处理器901被配置成进行像,例如,操作850那样的视差转换,以便生成像,例如,视差图像860那样具有转换视差值的视差图像。处理器901也可以把元数据提供给视频发送系统或装置900以指示,例如,输入图像的水平分辨率、视差值基于的水平分辨率、视差值基于百分比还是公倍数、和描述一种或多种输入图像的其他信息。
视频发送系统或装置900包括编码器902和能够发送编码信号的发送器904。编码器902接收来自处理器901的视频信息。该视频信息可以包括,例如,视频图像和/或视差(或深度)图像。编码器902根据视频和/或视差信息生成编码信号。编码器902可以是,例如,AVC编码器。AVC编码器可以应用于视频和视差信息两者。AVC指的是现有国际标准化组织/国际电工委员会(ISO/IEC)运动图像专家组-4(MPEG-4)第10部分高级视频编码(AVC)标准/国际电信联盟,电信部门(ITU-T)H.264建议书(在下文中,“H.264/MPEG-4AVC标准”或像“AVC标准”、“H.264标准、或简单地“AVC”或“H.264”那样它的变体)。
编码器902可以包括子模块,该子模块包括,例如,接收各种信息段并将其组装成结构化格式加以存储或发送的组装单元。各种信息段可以包括,例如,编码或未编码视频、编码或未编码视差(或深度)值、和像,例如,运动矢量、编码格式指示符、和语法元素那样的编码或未编码元素。在一些实现方式中,编码器902包括处理器901,因此进行处理器901的操作。
发送器904接收来自编码器902的编码信号,并在一种或多种输出信号中发送编码信号。发送器904可以,例如,适用于发送含有代表编码画面和/或与之相关的信息的一种或多种位流的节目信号。典型的发送器执行像,例如,提供纠错编码、交织信号中的数据、将信号中的能量随机化、和使用调制器906将信号调制在一种或多种载波上的一种或多种那样的功能。发送器904可以包括天线(未示出),或与天线交接。并且,发送器904的实现方式可以不局限于调制器906。
视频发送系统或装置900还可通信地与存储单元908耦合。在一种实现方式中,存储单元908与编码器902耦合,以及存储单元908存储来自编码器902的编码位流。在另一种实现方式中,存储单元908与发送器904耦合,存储来自发送器904的位流。来自发送器904的位流可以包括,例如,已经经过发送器904进一步处理的一种或多种编码位流。在不同实现方式中,存储单元908是标准DVD、蓝光盘、硬盘驱动器、或一些其他存储设备的一种或多种。
现在参照图10,所示的是可以应用上述特征和原理的视频接收系统或装置1000。视频接收系统或装置1000可以配置成在像,例如,卫星、电线、电话线、或地面广播那样的多种介质上接收信号。可以在互联网或一些其他网络上接收信号。还应当清楚,除了提供视频接收系统或装置的框图之外,图10的框还提供了视频接收过程的流程图。
视频接收系统或装置1000可以是,例如,蜂窝式电话、计算机、机顶盒、电视机、或接收编码视频和提供,例如,解码视频信号加以显示(向,例如,用户显示),加以处理,或加以存储的其他设备。因此,视频接收系统或装置1000可以将它的输出提供给电视机的屏幕、计算机监视器、计算机(加以存储、处理、或显示)、或一些其他存储、处理、或显示设备。
视频接收系统或装置1000能够接收和处理视频信息,该视频信息可以包括,例如,视频图像和/或视差(或深度)图像。视频接收系统或装置1000包括接收像,例如,在本申请的实现方式中所述的信号那样的编码信号的接收器1002。接收器1002可以接收,例如,提供视频图像815和/或视差图像825的信号、或从图9的视频发送系统900输出的信号的一个或多个。
接收器1002可以,例如,适用于接收含有代表编码画面的多种位流的节目信号。典型的接收器执行像,例如,接收调制和编码数据信号、使用解调器从一种或多种载波中解调数据信号、将信号中的能量去随机化、将信号中的数据去交织、和纠错解码信号的一种或多种那样的功能。接收器1002可以包括天线(未示出),或与天线交接。并且,接收器1002的实现方式可以不局限于解调器1004。
视频接收系统或装置1000包括解码器1006。接收器1002将接收信号提供给解码器1006。接收器1002提供给解码器1006的信号可以包括一种或多种编码位流。解码器1006输出像,例如,包括视频信息的解码视频信号那样的解码信号。解码器1006可以是,例如,AVC解码器。
视频接收系统或装置1000还可通信地与存储单元1007耦合。在一种实现方式中,存储单元1007与接收器1002耦合,接收器1002从存储单元1007中存取位流。在另一种实现方式中,存储单元1007与解码器1006耦合,解码器1006从存储单元1007中存取位流。在不同实现方式中,从存储单元1007中存取的位流包括一种或多种编码位流。在不同实现方式中,存储单元1007是标准DVD、蓝光盘、硬盘驱动器、或一些其他存储设备的一种或多种。
在一种实现方式中,将来自解码器1006的输出视频提供给处理器1008。在一种实现方式中,处理器1008是配置成进行像,例如,针对上采样操作816和/或826所述的那种那样的上采样的处理器。在一些实现方式中,解码器1006包括处理器1008,因此执行处理器1008的操作。在其他实现方式中,处理器1008是像,例如,机顶盒或电视机那样的下游设备的一部分。
注意,至少一种实现方式使用额外位来生成2个视差图。第一视差图是针对“左”视图计算的,第二视差图是针对“右”视图计算的。鉴于物体可能被遮挡,拥有两个视差图有助于改进对遮挡的管理。例如,通过比较相应视差值,系统可以确定是否存在遮挡,如果存在,则采取填充造成空洞的步骤。另外的实现方式提供更多的视差图,并分配适当位数来接纳视差图的数量。例如,在像,例如,MVC(指的是带有MVC扩展(附录G)的AVC)那样的多视图背景下,可能希望发送逐个视图地示出计算视差的一组视差图。可替代地,一种实现方式可能只发送与一小组视图有关的视差图。视差可以,例如,以类似于计算运动矢量的方式计算。可替代地,众所周知和如上所述,视差可以从深度值中计算。
各种实现方式还具有使用视差值取代深度值引起的优点。这样的优点可以包括:(1)视差值是有界的,而深度值可能无穷大,因此深度值更难以表示/编码;以及(2)视差值可以直接表示,而表示可能极大深度值往往需要对数刻度。另外,从视差中确定深度一般简单。在各种实现方式中包括元数据来提供像焦距、基线距离(长度)、和会聚面距离那样的信息。会聚面距离是当摄像机交向时摄像机轴相交的距离。像角度410的顶点那样可以从图4中看出摄像机轴相交的点。当摄像机平行时,会聚面距离是无穷大距离。
因此,我们提供了具有特定特征和方面的一种或多种实现方式。尤其,我们提供了与稠密视差图有关的几种实现方式。稠密视差图可以使像,例如,消费者设备上的相对复杂3D效果调整、和制作后期的相对简单字幕布置那样的多种应用成为可能。但是,可以设想出这些实现方式的变体和附加应用,它们都在本公开之内,以及所述实现方式的特征和方面可以适用于其他实现方式。
注意,对于一种或多种特定显示器尺寸,在上述实现方式的至少一种中使用了+80到-150个像素的范围。但是,在其他实现方式中,即使对于那些特定显示器尺寸,也可以使用范围的端值和/或范围本身的大小有变的不同视差范围。在一种实现方式中,主题公园中的表演使用负得多的视差(例如,把对象描绘成比中途更近地从屏幕出来)来达到更具戏剧性的效果。在另一种实现方式中,让专业设备支持比消费者设备更宽的视差范围。
本申请所述的几种实现方式和特征可以用在AVC标准、带有MVC扩展(附录H)的AVC、和/或带有SVC扩展(附录G)的AVC的背景下。另外,这些实现方式和特征可以用在另一种标准(现在或将来)的背景下,或用在不牵涉标准的背景下。
提到本原理的“一个实施例”、“实施例”、“一种实现方式”或“实现方式”以及它们的其他变体意味着结合所述实施例描述的特定特征、结构、特性等包括在本原理的至少一个实施例中。因此,在说明书各处出现的短语“在一个实施例中”、“在实施例中”、“在一种实现方式中”或“在实现方式中”以及任何其他变体的出现不一定都指代相同的实施例。
另外,本申请或其权利要求书可能提到“确定”各种信息段。确定信息可以包括,例如,估计信息、计算信息、预测信息或从存储器中检索信息的一种或多种。
应该明白,给定显示器可能支持多种不同分辨率。因此,给定显示器可能能够显示具有,例如,1280、1440或1920的分辨率的视频内容。不过,给定显示器往往被称为1920显示器,因为最高支持分辨率是1920。当大显示器显示低分辨率图像时,图像的各个元素可能包含多个像素。例如,如果显示器可以支持800和1920的水平分辨率,则显示器通常至少是1920个像素宽。当显示器显示800分辨率图像时,显示器可能至少一部分地将三个或更多个像素分配给图像的元素。
各种实现方式使用视差值的浮点表示。这样实现方式的特定变体使用视差值的定点表示来取代浮点表示。
应当认识到,例如,在“A/B”、“A和/或B”和“A和B的至少一个”的情况中,如下“/”、“和/或”和“至少一个”的任何一种的使用意欲包括只对第一所列选项(A)的选择、只对第二所列选项(B)的选择、或者对两个选项(A和B)的选择。作为另一示例,在“A、B和/或C”、“A、B和C的至少一个”和“A、B或C的至少一个”的情况中,这种措辞意欲包括只对第一所列选项(A)的选择、只对第二所列选项(B)的选择、只对第三所列选项(C)的选择、只对第一和第二所列选项(A和B)的选择、只对第一和第三所列选项(A和C)的选择、只对第二和第三所列选项(B和C)的选择、或者对全部三个选项(A和B和C)的选择。如本领域和相关领域普通技术人员容易认识到,这可以被扩展用于很多列出的项目。
另外,许多实现方式可以在编码器(例如,编码器902)、解码器(例如,解码器1006)、处理来自解码器的输出的后处理器(例如,处理器1008)、或向编码器提供输入的预处理器(例如,处理器901)的一个或多个中实现。并且,通过本公开可以设想出其他实现方式。
本文所述的实现方式可以以,例如,方法或进程、装置、软件程序、数据流、或信号的形式实现。即使只在单种实现形式的背景下讨论(例如,只作为方法来讨论),所讨论的特征的实现方式也可以以其他形式(例如,装置或程序)实现。装置可以以,例如,适当硬件、软件、或固件的形式实现。方法可以在,例如,像例如处理器那样的装置中实现,处理器一般指处理设备,包括,例如,计算机、微处理器、集成电路、或可编程逻辑设备。处理设备还包括像,例如,计算机、蜂窝式电话、便携式/个人数据助理(“PDA”)、和有助于在最终用户之间传送信息的其他设备那样的通信设备。
本文所述的各种进程和特征的实现方式可以在多种不同装备或应用,尤其,例如,与数据编码、数据解码、视图生成、深度或视差处理、和图像和相关深度和/或视差图的其他图像相联系的装备或应用中实施。这样装备的例子包括编码器、解码器、处理来自解码器的输出的后处理器、向编码器提供输入的预处理器、视频编码器、视频解码器、视频编解码器、万维网服务器、机顶盒、膝上型电脑、个人计算机、蜂窝式电话、PDA、和其他通信设备。应当清楚,该装备可以是移动的,甚至可以安装在移动交通工具中。
另外,这些方法可以通过由处理器执行的指令来实现,这样的指令可以存储在像,例如,集成电路、软件载体或像,例如,硬盘、小型盘(“CD”)、光盘(像,例如,往往称为数字多功能盘或数字视频盘的DVD那样)、随机访问存储器(“RAM”)、或只读存储器(“ROM”)那样的处理器可读介质上。这些指令可以在,例如,硬件、固件、软件或它们的组合体中。这些指令可以在,例如,操作系统、单独应用程序、或两者的组合体中找到。因此,可以将处理器表征成,例如,配置成执行进程的设备和包括含有执行进程的指令的处理器可读介质(像存储设备那样)的设备两者。并且,除了指令之外或取代指令,处理器可读介质可以存储一种实现方式产生的数据值。
对于本领域的普通技术人员来说,显而易见,各种实现方式可以产生格式化成传送可以,例如,存储或发送的信息的多种信号。该信息可以包括,例如,执行方法的指令、或所述实现方式之一产生的数据。例如,可以将信号格式化成传送写入或读取所述实施例的语法的规则作为数据,或传送所述实施例写入的实际语法值作为数据。这样的信号可以格式化成,例如,电磁波(例如,使用频谱的射频部分)或基带信号。格式化可以包括,例如,编码数据流和将编码数据流调制在载波上。信号传送的信息可以是,例如,模拟或数字信息。众所周知,可以在多种不同有线或无线链路上发送信号。可以将信号存储在处理器可读介质上。
本文描述了许多实现方式。不过应该明白,可以作出各种修改。例如,可以组合,补充,修改,或除去不同实现方式的一些元素以形成其他实现方式。另外,本领域的普通技术人员应该明白,可以用其他结构和进程取代本文公开的那些,所得实现方式以至少基本相同的方式执行至少基本相同的功能,以获得与本文公开的实现方式至少基本相同的结果。于是,这些和其他实现方式可以通过本申请设想出来。