支持自动立体显示器上的实时3d图像渲染的多核心处理器的制作方法

文档序号:7548151阅读:205来源:国知局
专利名称:支持自动立体显示器上的实时3d 图像渲染的多核心处理器的制作方法
支持自动立体显示器上的实时3D图像渲染的多核心处理器
背景技术
三维(3D)显示技术的快速发展以及观看者对于拥有高质量3D电视(3D-TV)与日俱增的兴趣已经使得开发出了无眼镜的自动立体3D显示设备。自动立体3D显示设备正越来越多地用在广告、娱乐以及其他此类行业中。自动立体3D显示设备同时支持多个视像,并且这多个不同视图形成人视觉系统中的立体视觉。结果,观看这种显示器的人能够无须使用3D眼镜或帽子,并且观看者能够裸眼观看3D图像。一般而言,两种格式被广泛用于表示立体视频1)多视像(B卩,左视图+右视图),以及2) 2D图像+深度信息(其也称为2. 5D格式)。用2. 5D格式表示立体视频提供了多种益处,例如对于存储和传输带宽的要求更低、与3D显示模型的设备独立性、与传统2D显示器的向后兼容等等。在接收到输入信号(即,2D输入和深度图像输入)之后产生用于3D图像的多个虚拟视像对于自动立体3D显示器而言可能是计算密集的。为了克服这种 计算密集的限制,3D显示设备可以使用单独的现场可编程门阵列(FPGA)芯片或高端图形处理单元(GPU)来执行这种计算密集的任务。


通过附图以示例而非限制的方式来说明本文所描述的发明。为了说明的简便和清楚,附图中示出的部件并不一定按比例绘制。例如,为了清楚,一些部件的大小可以相对于其他部件被放大。此外,在认为合适之处,标号在附图中被重复,以指示对应或类似的部件。图I示出了根据一个实施例的框图100,其描绘了使用多核心处理器来为自动立体显示器产生多视像。图2示出了根据一个实施例的图像渲染设备(IRD)200的框图,其可以使用多核心处理器来为自动立体显示器产生3D图像。图3是根据一个实施例的流程图300,其说明了图像渲染设备IRD 200在使用多核心处理器为自动立体显示器产生3D图像时的操作。图4示出了根据一个实施例的图像400,可以根据该图像400使用多核心处理器来为自动立体显示器产生3D图像。图5是根据一个实施例的图像400的像素图,其可以被用来执行基于深度图像的渲染(DIBR)技术中的深度平滑,以使用多核心处理器来为自动立体显示器产生3D图像。图6示出了根据一个实施例的深度平滑技术,其可以在使用多核心处理器来为自动立体显示器产生3D图像时缩短计算时间并提高视觉效果。图7示出了根据一个实施例的低强度高斯滤波器的结构,该低强度高斯滤波器用于在使用多核心处理器来为自动立体显示器产生3D图像时缩短计算时间并提高视觉效果O图8B示出了根据一个实施例的使用SMD技术对图8A中示出的DIBR中的行像素的3D图像包裹(wrapping)进行向量化,以在使用多核心处理器来为自动立体显示器产生3D图像时利用数据级并行性的代码。图8C示出了根据一个实施例的用于对图8A中示出的DIBR中的行像素的3D图像包裹进行并行化,以在使用多核心处理器来为自动立体显示器产生3D图像时利用线程级并行性的代码。图9示出了根据一个实施例的可以使用多核心处理器来为自动立体显示器产生3D图像的计算机系统。
具体实施例方式以下说明书描述了可以支持自动立体显示器上的实时3D图像渲染的多核心处理器。在以下说明中,为了更透彻的理解本发明,阐述了许多具体细节,例如,逻辑实现、资源划分或共享、或拷贝实现(duplication implementation)、系统组件的类型及相互关系,以及逻辑划分或集成选择。然而,本领域技术人员将意识到,可以在没有这些具体细节的情况下实践本发明。在其它实例中,未详细示出控制结构、门级电路和全部软件指令序列,以免模糊本发明。本领域技术人员利用所包括的说明,无需非常规的试验(undue
在说明书中引用的“ 一个实施例”、“实施例”或“示例性实施例”指示所描述的实施例可以包括特定特征、结构或特性,但是,并非每个实施例都一定包括所述特定特征、结构或特性。此外,这些短语并不一定指同一实施例。此外,当结合一实施例来描述特定特征、结构或特性时,认为无论是否明确描述,本领域技术人员在其知识范围内都可以结合其他实施例来实现这种特征、结构或特性。本发明的实施例可以用硬件、固件、软件或它们的任意组合来实现。本发明的实施例还可以实现为存储在机器可读介质上的指令,其可以由一个或多个处理器来读取和执行。机器可读存储介质可以包括用于存储或传输机器(例如计算设备)可读形式的信息的任何机构。例如,机器可读存储介质可以包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪速存储设备;电、光形式的信号。此外,固件、软件、例程和指令在本文中可以描述为执行特定动作。然而,应当意识到,这些描述仅仅是为了方便,这些动作实际上是由执行所述固件、软件、例程和指令的计算设备、处理器、控制器和其他设备来产生的。在一个实施例中,在自动立体显示器上的3D图像渲染可以在多核心处理器上得到支持,而无需使用诸如FPGA芯片或图形处理单元(GPU)这样的额外芯片。在一个实施例中,3D包裹阶段可以包括根据2维(2D)基准图像和深度图来合成多个虚拟视图的处理。在一个实施例中,一个或多个虚拟视图可以由通过如下处理而进行的3D图像包裹来产生将基准图像中的像素后投影到3D空间,然后将该像素重新投影到目标视点上,以创建虚拟视图。在将像素从一个空间向后投影和重新投影(称为视点移动)到另一空间时,封闭(occluded)区域可能被露出。在一个实施例中,深度图可以被预处理(或平滑)以减轻封闭区域(或孔)的影响。在一个实施例中,3D图像渲染可以包括一个或多个阶段,例如对深度图的预处理、3D包裹,以及孔填充或填充露出的孔的后置处理阶段。在一个实施例中,对深度图的预处理阶段可以包括深度图平滑技术之前的前景处理。在一个实施例中,前景深度图像平滑技术可以包括深度梯度检测任务和平滑任务。在一个实施例中,深度梯度检测任务可以包括检测具有大深度梯度的区域,并将该大深度梯度变换为线性变化的形状。在一个实施例中,当执行平滑任务时,线性变化的形状可以使用低强度和低通滤波技术来被预处理或平滑。在一个实施例中,低强度、低通高斯滤波器可以用来平滑线性变化的形状。作为使用(与原本可能使用的具有较大窗口大小的高强度低通滤波器相比)具有较小窗口大小的低强度、低通高斯滤波器的结果,可以显著降低计算密集性。在一个实施例中,在使用深度图像平滑技术之前的前景处理对深度图进行预处理之后,可以使用3D包裹技术,所述3D包裹技术可以利用数据级并行性(DLP)和线程级并行性(TLP)。在一个实施例中,3D包裹操作可以包括使用高效的单指令多数据(SMD)技术对用于进行行像素的3D图像包裹的代码进行向量化,这可以使得利用数据级并行性。在对视像进行向量化之后,可以支持诸如OpenMP这样的多平台共享存储器多处理编程的应用程序编程接口(API)可以用于并行化3D图像包裹过程,以利用线程级并行性。在一个实施例中,可以对3D图像的每一行和多个视像的每个图像执行使用OpenMP的3D图像包裹。作为向量化和并行化以分别利用数据级并行性(DLP)和线程级并行性(TLP)的结果,可 以节省大量的计算时间。在图I中示出了用于使用多核心处理器来在自动立体显示器上渲染3D图像的渲染方法100的实施例。在一个实施例中,渲染方法100可以包括对深度图进行预处理阶段110、3D图像包裹阶段140和孔填充阶段180。在一个实施例中,预处理阶段110可以使用基于深度图像的渲染(DIBR)技术之前的前景处理来识别和减小深度梯度,以最小化去除遮蔽(disocclusion)的影响。在一个实施例中,在预处理阶段110中,可以识别在所捕获的图像的深度图中具有大深度梯度的区域。在一个实施例中,深度图的相当大的部分(第一部分)会是平区域,并且在这些平区域中出现孔的可能性会是最小的或者为零。在一个实施例中,深度图的小部分(第二部分)可能包括更大的深度梯度,并且可以在这些第二部分中执行预处理(即,图像平滑操作)。在一个实施例中,第二部分可以变换为线性变化的形状,与使用高强度低通高斯滤波器对深度图执行卷积运算相比,这在计算上可以是成本更低的。在一个实施例中,可以通过改变第二部分的至少一些部分的深度梯度以减小深度的锐度来将第二部分变换为线性变化的形状。在将深度梯度锐利的区域变换为线性变化的形状之后,(与高强度、低通高斯滤波器的窗口大小相比)具有更小窗口大小的低强度、低通高斯滤波器可以用于平滑所述线性变化的形状。在一个实施例中,低强度、低通高斯滤波器的窗口大小可以是高强度、低通高斯滤波器窗口大小的1/3。在一个实施例中,与使用卷积技术相比,DIBR技术之前的前景处理可以节省大量的执行时间。此外,在一个实施例中,与针对图像平滑的卷积方法相比,DIBR技术之前的前景处理可以产生更好的视觉效果。在一个实施例中,可以通过DIBR方法之前的前景处理来维持前景的深度,以在新虚拟图像上产生更好的视觉效果。与背景相比,用户可能受到新虚拟图像的前景的吸引,并且维持前景的深度可以使得用户体验更好的视觉效果。在一个实施例中,DIBR技术之前的前景处理可以减小诸如由于失真而带来的面部拉伸这样的影响,这可以提高观看者的视觉效果。
在一个实施例中,在进行了预处理阶段110之后,可以在3D包裹阶段140进一步处理图像。在一个实施例中,3D包裹阶段140可以包括两个子阶段向量化子阶段和并行化子阶段。在一个实施例中,在向量化子阶段期间,单指令多数据(SIMD)技术可以用于对一行像素的3D图像包裹中涉及的任务进行向量化。在一个实施例中,图8A的伪码(在相邻像素之间具有紧密的数据依赖性)可以被分解成多个循环结构(在图8B中描绘),以减小相邻像素之间的数据依赖性。在一个实施例中,使用SIMD来对伪码进行向量化可以利用数据级并行性(DLP)。在对图像进行向量化之后,可以在包括UNIX和Microsoi'[S_. Windows*平台的
架构上支持多平台共享存储器多处理编程的应用程序编程接口(API),可以用于对3D图像包裹过程进行并行化以利用线程级并行性。在一个实施例中,诸如OpenMP (开放多处理)这样的API可以用于对3D图像包裹技术进行并行化以利用线程级并行性。在一个实施例中,OpenMP可以用于对3D图像的每一行以及多个视像的每个图像执行3D图像包裹。作为向量化和并行化以分别利用数据级并行性(DLP)和线程级并行性(TLP)的结果,可以节省大量的计算时间。 在图2中示出了可以执行3D图像渲染的图像渲染设备200的实施例。在一个实施例中,图像渲染设备(IRD)200可以包括接口 215、基准图像产生器220、深度图产生器230、预处理逻辑240、图像包裹逻辑260以及后置处理逻辑280.在一个实施例中,图像渲染设备200可以耦合到用于捕获视频(或图像)和相关联的每像素的深度信息(称为“深度图”)的图像捕获设备210 (例如摄像机)。在一个实施例中,所捕获的图像和深度图前往接口 215。在一个实施例中,接口 215可以接收所捕获的图像和深度图,并且可以通过内部总线来提供该深度图和所捕获的图像。在一个实施例中,接口 215可以在图像捕获设备210和图像渲染设备200之间提供物理的、电的以及协议接口。在一个实施例中,基准图像产生器220可以响应于在内部总线上接收到数据而产生诸如图4中描绘的图像这样的基准图像。在一个实施例中,基准图像产生器220可以捕获图像中每个像素的像素值,并且产生基准图像。在一个实施例中,基准图像可以被提供到图像包裹逻辑260。在一个实施例中,深度图产生器230可以响应于在内部总线上接收到数据而产生诸如在图5中所描绘的深度图这样的深度图。在一个实施例中,深度图产生器230可以从数据中提取每像素的深度信息,以产生深度图。在一个实施例中,深度图产生器230可以将深度图提供给预处理块240。 在一个实施例中,预处理块240可以检测深度图中具有大深度梯度的区域(第二部分),并通过将大深度梯度变换为线性变化的形状来减小该大深度梯度的锐度。在一个实施例中,可以进一步平滑该线性变化的形状。在一个实施例中,预处理块240可以包括深度梯度逻辑250和平滑器255。在一个实施例中,深度梯度逻辑250可以检测或识别深度图中可以具有大或锐利的深度梯度的第二部分。在一个实施例中,深度梯度逻辑250可以将每个像素的梯度级别与上限值(gmax)进行比较,以确定该深度梯度是否是锐利的或大的。在一个实施例中,深度梯度逻辑250可以选择第一像素和第二像素,其中第二像素可以与第一像素相邻。在一个实施例中,深度梯度逻辑250可以确定第一像素的第一深度值(d0 ),和第二像素的第二深度值(dl),其中第二像素可以处于第一像素的相邻位置。在一个实施例中,深度梯度逻辑250可以确定深度梯度的差(S卩,(dl-dO)),并将深度梯度的差与深度的最大阈值(gmax)进行比较,以确定该深度是否是锐利的或大的。在一个实施例中,深度梯度逻辑250可以通过比较相邻像素的深度梯度值来识别可能具有大深度梯度的区域。在一个实施例中,深度梯度逻辑250可以识别可能具有大深度梯度的由相邻像素(524和525)与(566和576)形成的第二区域。在一个实施例中,如果相邻像素的深度梯度之差大于上限(gmax),则深度梯度逻辑250可以确定该相邻像素的深度梯度是大的。此外,如下文所描述的,深度梯度逻辑250可以将具有大深度梯度的区域变换为线性变化的形状。在一个实施例中,深度梯度逻辑250可以确定像素(第一像素)524和566的分别的深度值d01和d04,以及相邻像素(第二像素)525和576的分别的深度值dll和dl4。在一个实施例中,深度梯度逻辑250可以使用像素(524和525 )与(566和576 )的深度值来分别确定差值diffl (=dll-d01)和diff4 (=dl4-d04)。在一个实施例中,深度梯度逻辑250可以将像素(524和525)与(566和576)的深度值的差值diffl和diff4与上限gmax进行比较,以确定区域是否具有锐利的或者大深度梯度。 在一个实施例中,如果(dl-dO)大于gmax,则深度梯度逻辑250可以将第一像素的深度值(d0)设置为新深度值d0 (新)= (dl-gmax)。结果,大深度梯度可以变换为图6D中所描绘的线性变化的形状。在一个实施例中,在上述示例中,深度梯度逻辑250可以使用相邻像素(524和525)与(566和576)的差值diffl和diff4的值以及上限gmax来将像素524和566的大或锐利的深度梯度变换为线性变化的形状。在一个实施例中,深度梯度逻辑250可以将像素524的深度值(d01)设置为新深度值(d01)新=(dll-gmax)。类似地,深度梯度逻辑250可以将像素566的深度值(d04)设置为新深度值(d04)新=(dl4-gmax)。在一个实施例中,在图6A中描绘了使用图4的基准图像(2D图像)所产生的原始视点(V0)。基准图像(2D图像)和深度图可以用来产生虚拟视图,并且在图6B中描绘了一个这种虚拟视图的一个虚拟视点(Vt)。如图6B中所描绘的,视点(VO)可能移动到新位置Vt,并且这种移动可能导致去除遮蔽,这可能是由于深度图的一些区域(第二区域)中锐利的深度梯度所导致的。在一个实施例中,平滑器255可以接收线性变化的形状并且使用低强度、低通高斯滤波器来执行低通滤波。在一个实施例中,低强度、低通高斯滤波器可以包括小窗口大小来执行图像平滑。在一个实施例中,低强度、低通高斯滤波器的窗口大小可以等于高强度低通高斯滤波器窗口大小的1/3。使用深度图的卷积来平滑图像的现有方法可以使用高强度低通高斯滤波器。在图6C中描绘了使用深度图的卷积来执行的平滑。卷积运算可能消耗大量(38. 7%)的DIBR执行时间,并且高强度低通高斯滤波器的计算密集性和窗口大小也可能很高。在一个实施例中,通过使用低强度低通高斯滤波器,可以很大地节省计算需求。然而,通过将锐利的深度梯度变换为线性变化的形状,低强度低通高斯滤波器可以用于平滑锐利的深度梯度(图6D的681和682),并且深度平滑可以如图6E中的经平滑的线691和692所描绘的那样。在一个实施例中,平滑器255可以产生经平滑的深度图,其可以被提供到3D图像包裹块260。此外,在一个实施例中,可以维持前景深度(如图6E中680所示),与卷积平滑方法相比,这可以提高视觉效果。与背景相比,用户可能被新虚拟图像的前景所吸引,并且维持前景的深度可以使得用户体验更好的视觉效果。在一个实施例中,DIBR技术之前的前景处理可以降低诸如由于失真而导致的面部拉伸这样的影响,这可以提高观看者的视觉效果。在一个实施例中,在图7中描绘了低强度低通高斯滤波器的结构。在一个实施例中,低强度低通高斯滤波器可以使用二元加权技术来实现。在一个实施例中,图7的高斯滤波器描绘了高斯钟型函数(Gauss bell function)的近似,并且那些值表示权重因子。在一个实施例中,在接收到经平滑的深度图和(例如图4的)基准图像后,3D图像包裹块260可以产生多个虚拟图像。在一个实施例中,3D图像包裹块260可以包括向量化逻辑265和并行化逻辑269。在一个实施例中,向量化逻辑265可以使用单指令多数据(SMD)技术来对一行像素的3D图像包裹中涉及的任务进行向量化。例如,在图8A中描绘了执行3D图像包裹的伪码,并且孔填充模块通常被合并到DIBR实现中的3D图像包裹模块中。由于相邻像素数据之间紧密的数据依赖性,可能无法使用SMD技术来向量化3D图像包裹中涉及的任务。在一个实施例中,向量化逻辑265可以识别其中当前像素数据可能依赖于当前像 素的之前位置的串行任务。在一个实施例中,向量化逻辑265可以将图8A的第802行中的“for”循环分解成在图8B的第841、844、847和850行描绘的4个单独的“for”循环。在一个实施例中,将第802行的“for”循环分解成第841、844、847和850行的4个单独的“for”循环,可以使得3D图像包裹逻辑260使用SMD技术来被编程。作为使用SMD技术来进行编程的结果,向量化逻辑265可以利用数据级并行性(DLP)。在一个实施例中,向量化逻辑265可以将图8A第809行的新像素计算任务分解成两个子任务,例如图SB第848行描绘的“不同区检查”,和图8B第851行描绘的“针对像素内插的权重计算”。在一个实施例中,图SB第847行的“for”循环的结果可以提供为第850行的“for”循环的输入。在一个实施例中,向量化逻辑265可以支持SMD技术的使用以利用DLP,并且与图8A相比,节省了大量的计算时间。在一个实施例中,并行化逻辑269可以对3D图像包裹过程进行并行化,以利用线程级并行性。在一个实施例中,并行化逻辑269可以支持应用程序编程接口(API),其可以支持包括UNIX和Micmsor處Windows⑩平台的架构上的多平台共享存储器多处理编程。在一个实施例中,并行化逻辑269可以使用所述API对3D图像包裹过程进行并行化,以利用线程级并行性。在一个实施例中,并行化逻辑269可以使用诸如OpenMP (开放多处理)这样的API来对3D图像包裹技术进行并行化。在一个实施例中,OpenMP可以用于对3D图像的每一行以及多个视像的每个图像执行3D图像包裹。在一个实施例中,并行化逻辑269可以通过执行对视像中的每一个的像素进行包裹的基本任务,来对图像内的所有行以及多个视像并行化3D图像包裹过程。在一个实施例中,在图SC中描绘了用于对3D图像包裹进行并行化的伪码。作为进行向量化和并行化以分别利用数据级并行性(DLP)和线程级并行性(TLP)的结果,可以节省大量计算时间。在一个实施例中,后置逻辑280可以填充露出的孔。在图3的流程图中描绘了图像渲染设备200的操作的实施例。在框310,图像渲染设备200可以使用基准图像产生器220产生图4中描绘的基准图像400,并使用深度图产生器230产生图5中描绘的深度图500。在框320中,图像渲染设备200可以使用深度梯度逻辑250来确定深度图500中可能具有大深度梯度的第二区域,并将该大深度梯度变换为线性变化的形状。在一个实施例中,图像渲染设备200可以确定相邻像素的深度梯度(d0和dl),并然后将相邻像素的深度梯度之差(dl-dO)与上限(gmax)进行比较,以确定具有大深度梯度的第二区域。在一个实施例中,深度梯度逻辑250可以确定(dl-dO)是否大于gmax,并且如果(dl_d0)大于gmax,则深度梯度逻辑250可以设置d0=(dl-gmax)。结果,大深度梯度可以变换为如图6D中所描绘的线性变化的形状。在框350中,图像渲染设备200可以使用平滑器255来平滑图6D的线性变化的形状。在一个实施例中,平滑器255可以包括低强度、低通高斯滤波器。在一个实施例中,平滑器255可以产生如图6E的线691和692所描绘的深度经平滑的曲线。在框360中,图像渲染设备200可以使用向量化逻辑265来使用SMD技术对DIBR中的行像素的3D图像包裹进行向量化,以利用DLP。在一个实施例中,如上文参照图SB描述了使用SMD技术的向量化过程。在框380中,图像渲染设备200可以如上文参照图SC所描述那样使用并行化逻辑 269对图像内的行像素以及多个视像的3D图像包裹进行并行化,以利用TLP。在图9中示出了包括可以支持自动立体显示器上的3D图像渲染的多核心处理器的计算机系统900的实施例。参照图9,计算机系统900可以包括包含单指令多数据(SIMD)处理器的通用多核心处理器(或CPU) 910。在一个实施例中,CPU 910可以包括诸如核心911-A至911-N的多个核心,用于支持图像渲染设备200执行的任务,以在显示器990上渲染3D图像,显示器990可以包括自动立体显示器。在一个实施例中,CPU 910除了执行各种其他任务之外还可以在自动立体显示器上执行3D图像的渲染,或者在机器可读存储介质925中存储用于在自动立体显示器上渲染3D图像的指令序列。然而,所述指令序列也可以存储在存储器950中,或者存储在任何其他合适的存储介质中。操作计算机系统900的处理器或CPU 910可以耦合到逻辑930。逻辑930可以耦合到诸如图像捕获设备210的一个或多个I/O设备960,其可以提供与计算机系统900的接口。例如,在一个实施例中,逻辑930可以是芯片组逻辑。逻辑930可以耦合到存储器950或机器可读存储设备925,其可以是任何类型的存储设备,包括光、磁或半导体存储设备。在一个实施例中,CPU 910的核心911可以执行3D图像渲染任务,所述3D图像渲染任务可以包括诸如深度图的预处理、3D包裹、以及用于填充露出的孔的孔填充或后置处理阶段。在一个实施例中,一个或多个核心可以一同或单独地支持DIBR技术之前的前景处理。例如,在一个实施例中,核心911-A可以支持深度梯度逻辑250执行的深度梯度检测任务。在一个实施例中,核心911-B可以支持平滑器255执行的平滑操作。在其他实施例中,诸如核心911-A的同一核心可以执行逻辑250和255执行的任务二者。在另外的其他实施例中,逻辑250和255执行的任务可以由多于一个的核心911共享。在一个实施例中,被分配预处理任务的核心可以执行如上所述的深度检测任务和深度平滑任务。在一个实施例中,在使用深度图像平滑技术之前的前景处理对深度图进行预处理之后,核心911可以执行3D包裹技术,所述3D包裹技术可以利用数据级并行性(DLP)和线程级并行性(TLP)。在一个实施例中,至少一个核心911可以执行3D包裹操作,所述3D包裹操作可以包括使用高效的单指令多数据(SMD)技术对用于行像素的3D图像包裹的代码进行向量化。在对视像进行向量化之后,同一核心911或者另一核心可以支持应用程序编程接口(API),所述应用程序编程接口可以支持诸如OpenMP的多平台共享存储器多处理编程。在一个实施例中,核心911可以用于对3D图像包裹过程进行并行化,以利用线程级并行性。在一个实施例中,可以对3D图像的每一行以及对多个视像的每个图像执行使用OpenMP进行的3D图像包裹。作为进行向量化和并行化以分别利用数据级并行性(DLP)和线程级并行性(TLP)的结果,可以节省大量计算时间。本文描述的图形处理技术可以在各种硬件架构中实现。例如,图形功能可以集成在芯片组内。作为另一实施例,图形功能可以通过包括多核心处理器的通用处理器来实现, 或者被实现为存储在机器可读介质中的一组软件指令。
权利要求
1.一种在多核心处理器中进行的方法,包括识别图像的具有大深度梯度的第二部分,所述大深度梯度大于最大阈值,其中,与具有小于所述最大阈值的小深 度梯度的第一部分相比,所述第二部分小得多,将所述第二部分的所述大深度梯度变换为线性变化的形状,使用低強度、低通滤波技术来平滑所述线性变化的形状,使用单指令多数据技术对所述图像的行像素进行向量化,以及对在所述图像的行像素以及多个视像的行像素上的三维图像包裹操作进行并行化,所述图像和所述多个视像一起形成要在自动立体显示器上渲染的三维图像。
2.如权利要求I所述的方法,其中,识别所述第二部分包括选择第一像素和第二像素,确定根据所述第一像素的第一深度值和所述第二像素的第二深度值之差而产生的差值,以及将所述差值与所述最大阈值进行比较。
3.如权利要求2所述的方法,其中,所述第二像素是与所述第一像素相邻的像素。
4.如权利要求2所述的方法,其中,变换所述大深度梯度包括如果所述第二深度值与所述第一像素的所述第一深度值之差大于所述最大阈值,则将所述第一深度值设置为新深度值。
5.如权利要求4所述的方法,其中,所述新深度值是基于所述第二深度值与所述最大阈值之差来确定的。
6.如权利要求I所述的方法,还包括在将所述大深度梯度变换为所述线性变化的形状时,維持前景深度信息。
7.如权利要求I所述的方法,其中,对所述图像的行像素进行向量化包括将任务分解成子任务,以降低所述任务之间的数据依赖性。
8.如权利要求7所述的方法,其中,对所述图像的行像素进行向量化用于提供数据级并行性。
9.如权利要求I所述的方法,包括支持应用程序编程接ロ,所述应用程序编程接ロ用于支持对所述多个图像的行像素的所述三维图像包裹进行并行化。
10.如权利要求9所述的方法,其中,对所述多个图像的行像素的所述三维图像包裹进行并行化用于提供线程级并行性。
11.ー种图像渲染设备,包括深度梯度逻辑,其中,所述深度梯度逻辑用于识别图像的具有大深度梯度的第二部分,所述大深度梯度大于最大阈值,其中,与具有小于所述最大阈值的小深度梯度的第一部分相比,所述第二部分小得多,以及将所述第二部分的所述大深度梯度变换为线性变化的形状,平滑器,其耦合到所述深度梯度逻辑,其中,所述平滑器用于使用低強度、低通滤波器来执行所述线性变化的形状的深度平滑,向量化逻辑,其耦合到所述平滑器,其中,所述向量化逻辑用于使用单指令多数据技术对所述图像的行像素进行向量化,以及并行化逻辑,其耦合到所述向量化逻辑,其中,所述并行化逻辑用于对在所述图像的行像素以及多个视像的行像素上的三维图像包裹操作进行并行化,所述图像和所述多个视像一起形成要在自动立体显示器上渲染的三维图像。
12.如权利要求11所述的图像渲染设备,其中,所述深度梯度逻辑用于从所述图像选择第一像素和第二像素,确定根据所述第一像素的第一深度值和所述第二像素的第二深度值之差而产生的差值,以及将所述差值与所述最大阈值进行比较。
13.如权利要求12所述的图像渲染设备,其中,所述第二像素是与所述第一像素相邻的像素。
14.如权利要求12所述的图像渲染设备,其中,所述深度梯度逻辑用于如果所述第二深度值与所述第一像素的所述第一深度值之差大于所述上限值,则将所述第一深度值设置为新深度值。
15.如权利要求14所述的图像渲染设备,其中,所述深度梯度逻辑用于基于所述第二深度值与所述最大阈值之差来产生所述新深度值。
16.如权利要求11所述的图像渲染设备,其中,所述平滑器用于在执行所述线性变化的形状的深度平滑时,維持前景深度信息。
17.如权利要求11所述的图像渲染设备,其中,所述向量化逻辑用于通过将任务分解成子任务以降低所述任务之间的数据依赖性,来对所述图像的行像素进行向量化。
18.如权利要求17所述的图像渲染设备,其中,对所述图像的行像素进行向量化用于提供数据级并行性。
19.如权利要求11所述的图像渲染设备,其中,所述并行化逻辑用于支持应用程序编程接ロ,所述应用程序编程接ロ用于支持对所述多个图像的行像素的所述三维图像包裹进行并行化。
20.如权利要求19所述的图像渲染设备,其中,对所述多个图像的行像素的所述三维图像包裹进行并行化用于提供线程级并行性。
21.一种用于渲染三维图像的计算机系统,包括多核心处理器,其中,所述多核心处理器用于识别图像的具有大深度梯度的第二部分并将所述第二部分的所述大深度梯度变换为线性变化的部分,所述大深度梯度大于最大阈值,其中,与具有小于所述最大阈值的小深度梯度的第一部分相比,所述第二部分小得多,将所述第一深度梯度变换为线性变化的形状,使用低強度、低通滤波技术来平滑所述线性变化的形状,使用单指令多数据技术对所述图像的行像素进行向量化,以及对在所述图像的行像素以及多个视像的行像素上的三维图像包裹进行并行化,所述图像和所述多个视像形成三维图像,耦合到所述多核心处理器的逻辑,其中,所述逻辑用于支持来自所述多核心处理器的所述多个视像的传送,以及耦合到所述逻辑的显示器,其中,所述显示器用于支持将所述多核心处理器处理的所述多个视像渲染成三维图像。
22.如权利要求I所述的计算机系统,其中,所述多核心处理器包括第一核心,所述第一核心用于选择第一像素和与所述第一像素相邻的第二像素,确定根据所述第一像素的第一深度值和所述第二像素的第二深度值之差而产生的差值,以及将所述差值与上限值进行比较。
23.如权利要求22所述的计算机系统,其中,所述第一核心用于将所述第一像素和所述第二像素识别为具有至少所述第一深度梯度的多个区域中的第一区域。
24.如权利要求22所述的计算机系统,其中,所述第一核心用于如果所述第二深度值 与所述第一像素的所述第一深度值之差大于所述上限值,则将所述第一深度值设置为新深度值。
25.如权利要求24所述的计算机系统,其中,所述第一核心用于在用所述新值设置所述第一像素的所述第一深度值之前,将所述第二深度值与所述上限值之差分配为所述新值。
26.如权利要求21所述的计算机系统,其中,所述第一核心用于在将所述第一深度梯度变换为所述线性变化的形状时,維持前景深度信息。
27.如权利要求21所述的计算机系统,其中,所述多核心处理器还包括第二核心,其中,所述第二核心用于通过将任务分解成子任务以降低所述任务之间的数据依赖性,来对所述图像的行像素进行向量化,以利用数据级并行性。
28.如权利要求21所述的计算机系统,其中,所述第二核心用于支持应用程序编程接ロ,所述应用程序编程接ロ用于支持对所述多个图像的行像素的所述三维图像包裹进行并行化。
29.如权利要求28所述的计算机系统,其中,对所述多个图像的行像素的所述三维图像包裹进行并行化用于提供线程级并行性。
30.如权利要求21所述的计算机系统,还包括第三核心,所述第三核心用于将所述多个视像传送给所述显示器,所述显示器包括自动立体显示器。
全文摘要
一种多核心处理器系统可以支持在自动立体显示器上的3D图像渲染。所述3D图像渲染包括深度图的预处理和3D图像包裹任务。所述深度图的预处理可以包括深度图像平滑技术之前的前景处理,其可以执行深度梯度检测和平滑任务。深度梯度检测任务可以检测具有大深度梯度的区域,并且平滑任务可以使用低强度、低通滤波技术将大深度梯度变换为线性变化的形状。3D图像包裹可以包括使用高效的单指令多数据(SIMD)技术对用于行像素的3D图像包裹的代码进行向量化。在向量化之后,诸如OpenMP这样的API可以用于对3D图像包裹过程进行并行化。可以对3D图像的行以及对多个视像的图像执行使用OpenMP的3D图像包裹。
文档编号H04N13/04GK102835119SQ201080065984
公开日2012年12月19日 申请日期2010年4月1日 优先权日2010年4月1日
发明者C·李, Y·杜, Q·李, Y·张 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1