挤压模型穿过二维场景的系统、方法和计算机程序产品的制作方法
【专利摘要】提供用于挤压对象穿过二维场景的系统、方法和计算机程序产品。在使用中,在二维场景内标识二维对象。此外,确定与二维对象相对应的三维模型。进一步地,挤压三维模型穿过二维场景以创建三维对象。
【专利说明】挤压模型穿过二维场景的系统、方法和计算机程序产品
【技术领域】
[0001]本发明涉及图像处理,并且,更具体地,涉及图像改变。
【背景技术】
[0002]二维图形内容在现代社会中非常流行。例如,二维图形内容可以包括在诸如电影、视频游戏、图像等的介质中。然而,当前用于改变这类二维图形内容的技术一直与各种限制相关联。
[0003]例如,当前用于将二维图形内容转换为三维内容的技术是复杂并且费时的。此外,这类技术的结果一般是粗糙和不准确的。因此需要解决与现有技术相关联的这些和/或其他问题。
【发明内容】
[0004]系统、方法和计算机程序产品被提供用于挤压对象穿过二维场景。在使用中,在二维场景内标识二维对象。此外,确定与二维对象相对应的三维模型。进一步地,挤压三维模型穿过二维场景以创建三维对象。
【专利附图】
【附图说明】
[0005]图1示出了根据一个实施例的、用于从二维场景挤压对象的方法。
[0006]图2示出了根据另一个实施例的、用于将二维对象挤压到三维空间中的方法。
[0007]图3示出了根据另一个实施例的挤压过程。
[0008]图4示出了在其中可以实现各先前实施例的各种架构和/或功能性的示例性系统。
【具体实施方式】
[0009]图1示出了根据一个实施例的、用于挤压模型穿过二维场景的方法100。如在操作102中所示的,在二维场景内标识二维对象。在一个实施例中,二维场景可以包括图像。例如,二维场景可以包括数字图像,诸如经扫描的照片、视频的屏幕截图、视频帧等。
[0010]此外,在一个实施例中,二维对象可以包括二维场景内的任何对象。例如,二维对象可以包括个体的图像、物理对象的图像等。在另一个实施例中,可以在二维场景内显示多个二维对象。
[0011]进一步地,在一个实施例中,可以在二维场景内手动地标识二维对象。例如,用户可以利用通过其显示二维场景的图形用户界面(⑶I)来手动地选择二维对象。在另一个实施例中,可以自动地标识二维对象。例如,一个或多个应用可以分析二维场景并且可以自动地/动态地检测二维场景内的二维对象(例如通过利用形状识别、图像处理等)。
[0012]又进一步地,如在操作104中所示的,确定与二维对象相对应的三维模型。在一个实施例中,三维模型可以包括可与二维场景联合显示的线框模型。在另一个实施例中,三维模型可以包括可与二维场景联合显示的透明或半透明模型。然而,当然三维模型可以包括使用三个维度表示的任何模型。
[0013]另外,在一个实施例中,可以手动确定三维模型。例如,在手动标识二维场景内的二维对象之后,用户可以分配一个或多个标识符(例如通过采用标识符来标记对象等)给二维对象。在另一个实施例中,标识符可以指示二维对象的类型、二维对象的类别、二维对象的完整或部分描述、与二维对象相关联的关键字等。
[0014]此外,在一个实施例中,由用户分配给二维对象的一个或多个标识符可以用来确定相应的三维模型。例如,数据库可以包含多个三维模型的描述符,并且由用户分配给二维对象的一个或多个标识符可以与数据库中的描述符相比较。在另一个示例中,可以确定其描述符最密切匹配由用户分配给二维对象的一个或多个标识符的三维模型以与二维对象相对应。
[0015]此外,在一个实施例中,可以自动确定三维模型。例如,在自动标识二维场景内的二维对象之后,可以自动分析二维对象以确定二维对象的类型。在另一个示例中,可以标识并分析二维对象的一个或多个子对象(例如特征等)以确定对象的类型。在另一个实施例中,可以将对象的类型与三维模型类型的数据库相比较,并且可以确定三维模型类型和对象类型之间的匹配。
[0016]又进一步地,如在操作106中所示的,挤压三维模型穿过二维场景以创建三维对象。在一个实施例中,挤压三维模型穿过二维场景可以包括在第三维度中移动三维模型穿过二维场景,使得三维模型被迫穿过二维场景以产生三维对象。例如,可以利用二维X-Y轴在二维平面上表示二维场景,并且可以在垂直于场景平面的Z轴上将三维模型放置在该平面的后面(例如使得场景平面叠加在三维模型之上)。在另一个示例中,可以之后移动三维模型经由垂直的Z轴穿过场景平面(例如使得三维模型被推动经由Z轴穿过二维场景)。
[0017]另外,在一个实施例中,挤压三维模型穿过二维场景可以包括响应于三维模型在第三维度中穿过二维场景的移动而调整(例如弯曲等)二维场景。例如,随着三维模型沿着垂直于场景的轴被移动穿过场景平面,可以弯曲二维场景,使得二维场景的一部分(例如二维对象等)可以覆盖(例如包裹(wrap)等)正在被移动穿过场景平面的三维模型。
[0018]此外,在一个实施例中,二维对象的二维表示可以被弯曲,使得随着三维模型被移动穿过场景,二维对象包裹围绕并且被映射到三维模型上。例如,二维对象的二维表示可以用作纹理贴图以创建已经在垂直于场景平面的轴上穿过该平面的三维模型的表面。在另一个示例中,可以调整二维对象的二维表示以跟随三维模型的三维轮廓,使得产生的二维对象的表示是三维的。以此方式,三维模型可以采用来自二维对象的内容作为纹理。
[0019]进一步地,在一个实施例中,挤压三维模型穿过二维场景可以包括将二维对象与三维模型对齐。在另一个实施例中,可以手动地将二维对象与三维模型对齐。例如,用户可以使用图形用户界面(GUI)来操纵(例如移动、调整大小、再成形等)三维模型,使得三维模型的位置、大小和形状沿着垂直于场景的轴与二维对象的位置、大小和形状对齐。在另一个示例中,用户可以在三维模型已经移动穿过场景平面之前或之后操纵三维模型。
[0020]又进一步地,在一个实施例中,可以自动地将二维对象与三维模型对齐。例如,可以手动标识或自动标识(例如利用图像处理等)二维对象的一个或多个子对象(例如特征等),并且可以确定二维对象内的这类子对象的方向。在另一个示例中,可以基于二维对象内的子对象的方向确定二维场景内的二维对象的方向。
[0021 ] 在又一个示例中,可以使用经确定的二维场景内的二维对象的方向来自动确定对三维模型的调整,使得三维模型沿垂直于场景的轴与二维对象对齐。在另一个实施例中,一个或多个特性(例如形状、能力、移动限制、可用位置、功能等)可以与三维模型相关联,并且可以使用这类特性来改善二维对象与三维模型的自动对齐。
[0022]另外,在一个实施例中,可以调整三维模型被挤压穿过二维场景的程度。例如,可以手动或自动调整三维模型在垂直于二维场景的轴上穿过该场景的二维平面的距离。在另一个实施例中,对三维模型的一个或多个附加调整(例如对齐、大小等)可以在三维模型已经移动穿过二维场景之后手动或自动进行(例如微调二维对象对三维模型的覆盖范围等)。以此方式,已知对象的三维模型可以适合于匹配二维对象的大小和特性,并且可以使用二维对象的相应三维模型数据作为挤压的基础来挤压该二维对象。
[0023]此外,在一个实施例中,挤压三维模型穿过二维场景可以包括利用三维模型将二维对象转换为三维对象。例如,可以将所挤压的三维模型转换为具有三维模型的形状和所弯曲的二维对象的外观的三维对象。在另一个实施例中,挤压三维模型穿过二维场景可以包括将二维对象转换为立体对象。例如,可以将所挤压的二维对象转换为具有三维模型的形状和所弯曲的二维对象的外观的立体对象。在另一个示例中,三维模型可以提供可以虑及准确的立体深度的深度数据。
[0024]在又一个实施例中,二维对象可以包括一个或多个二维子对象。例如,面部的二维表示可以包括子对象,子对象包括眼睛、鼻子、嘴等。在又一个实施例中,二维对象可以细分,并且可以为二维对象内的每个二维子对象确定三维模型。在又一个实施例中,可以利用三维模型从二维场景挤压二维子对象中的每一个。
[0025]此外,在一个实施例中,通过从二维场景挤压二维对象所创建的三维对象可以用来实施图像识别。例如,可以在场景分析期间使用三维对象来确定场景中的任何三维对象是否匹配所创建的三维对象。在另一个实施例中,可以使通过从二维场景挤压二维对象所创建的三维对象动作。例如,可以操纵三维对象,使得三维对象的一个或多个部分(例如被映射到三维对象上的子对象)移动。
[0026]现在将关于各可选架构和特征来阐述更多示例性的信息,根据用户的期望可以采用所述架构和特征来实现或不实现前述的框架。应该强烈注意下面的信息出于示例性的目的而阐述并且其不应该被认为是以任何方式进行限制。下面特征中的任何一个可以可选地合并,排除或无需排除所述的其他特征。
[0027]图2示出了根据另一个实施例的、用于将二维对象挤压到三维空间中的方法200。作为选择,方法200可以在图1的功能性的上下文中实行。然而,当然方法200可以在任何期望的环境中实现。还应该注意前述定义可以在本描述期间应用。
[0028]如在操作202中所示的,标识二维(2D)场景。在一个实施例中,二维场景可以包括数字图像。例如,用户可以扫描静止的照片,其可以在扫描期间转换为二维数字图像。在另一个实施例中,二维场景可以包括来自视频的场景。在又一个实施例中,可以标识多个二维场景。例如,可以标识包括两个二维图像且每一个描绘另一个的细微改变版本的立体图像,或者多个图像从相同的一个或多个对象的不同视角获取。
[0029]此外,如在操作204中所示的,在二维场景内标识二维对象。在一个实施例中,二维对象可以包括二维场景中所示的个体(例如人体等)、二维场景内所显示的对象(例如房子、椅子等)等。在另一个实施例中,二维对象可以包括组件对象。例如,二维对象可以包括二维场景中的个体的面部、手或另一部分、房子的门口等。在又一个实施例中,二维对象可以包括二维场景内的元素的组合(例如一群人、带有家具的卧室等)。
[0030]进一步地,在一个实施例中,可以由用户标识二维对象。例如,用户可以利用⑶I通过选择二维场景内的对象来选择二维对象。在另一个实施例中,在标识二维对象之后,可以突出二维对象的形状。例如,可以使用图像分析来突出(例如加粗、更改为不同的颜色等)描绘所选择的二维对象轮廓的具体周界。
[0031]又进一步地,如在操作206中所示的,确定与二维对象相对应的虚拟三维模型。在一个实施例中,用户可以采用对象的一个或多个标识符来标记二维对象,并且可以使用标记来确定与二维对象相对应的三维模型。在另一个实施例中,可以使用图像处理来自动标识二维对象并确定相应的三维模型。在又一个实施例中,可以从多个模型(例如预设计的模型等)中选择虚拟三维模型。
[0032]另外,如在操作208中所示的,将虚拟三维模型叠加到二维场景内的二维对象上。如在操作210中所示的,调整虚拟三维模型以匹配二维场景内的二维对象的方向和大小。在一个实施例中,用户可以手动缩放、倾斜和以其他方式调整三维模型,使得三维模型的周界与二维场景内的二维对象的周界对齐。
[0033]在另一个实施例中,可以使用图像处理来自动分析二维对象的方向和/或特征。此外,可以使用这类分析来调整三维模型。在另一个实施例中,可以自动地调整或由用户调整三维模型的深度。例如,可以在Z空间中向后或向前移动三维模型以调整三维模型对于二维场景的深度。
[0034]进一步地,如在操作212中所示的,挤压三维模型穿过二维场景,从而创建三维对象。在一个实施例中,可以响应于来自用户的命令而实施挤压。在另一个实施例中,从场景挤压二维对象可以包括采用包含在二维对象中的像素来包裹三维模型以及挤压经包裹的三维模型。
[0035]又进一步地,在一个实施例中,用户可以观察正被用于挤压的三维模型并且可以在挤压期间通过手动地使模型变形来调整模型以适合二维对象的形状和位置。在另一个实施例中,三维模型可以被视为线框模型,透明模型、半透明模型等。以此方式,用户可以调整模型以更好地匹配被挤压的对象。在另一个实施例中,用户可以指定将要实施的挤压的数量。
[0036]另外,在一个实施例中,挤压三维模型穿过场景可以包括将三维模型与场景中的二维对象相匹配。例如,用户可以采用对象的一个或多个标识符来标记二维对象,并且可以使用标记来实施二维对象内的子对象的进一步检测。例如,如果二维对象被用户标记为人,则可以在二维对象内检测子对象,诸如面部、手、眼睛、鼻子和嘴。
[0037]此外,在一个实施例中,可以使用二维对象的所检测到的子对象来对二维对象内的子对象和三维模型的轮廓进行曲线拟合,使得这类子对象的细节匹配二维对象中所示的那些细节。在另一个实施例中,可以对三维模型实施诸如缩放、平移和旋转的一个或多个变形以在挤压期间调整模型。这可以基于图像处理而手动地或自动地进行。
[0038]此外,在一个实施例中,挤压三维模型穿过场景可以包括一旦三维模型已经与场景中的二维对象相匹配,就将三维模型从相片后面向前推动。以此方式,三维模型可以对二维对象赋予深度并且可以使用用于二维场景内的二维对象的纹理和细节。
[0039]又进一步地,在一个实施例中,被挤压穿过二维场景的三维模型可以被保存为立体图像或三维对象。在另一个实施例中,可以使用三维对象来实施图像识别。例如,可以在分析场景的过程中使用三维对象,其中可以确定三维对象是否匹配场景内的一个或多个三维对象。在又一个实施例中,可以使三维对象动作。例如,可以使描绘人的头部的三维对象动作,使得头部转动、头部的眼睛眨动、头部的嘴移动等。
[0040]另外,在一个实施例中,可以利用来自多个二维场景的多个二维对象来创建三维对象。例如,可以从二维立体图像对(例如左和右眼视图等)内标识二维对象的匹配对,并且这类二维对象可以被纹理映射到三维模型上。此外,在挤压期间可以将与来自左视图立体图像的对象相关联的纹理添加到三维模型的左侧,并且可以将与来自右视图立体图像的对象相关联的纹理添加到三维模型的右侧。以此方式,可以使用挤压来将立体场景内的对象转换为真实的三维对象。
[0041]以此方式,可以为三维对象获得准确的三维深度。此外,通过基于所标识的二维对象产生三维模型,可以加速三维转换过程。进一步地,可以构建全面详细的三维模型数据库,并且可以容易地并自动地、非常准确和详细地检测和挤压二维对象。
[0042]图3示出了根据另一个实施例的挤压过程300。作为选择,可以在图1-2的功能性的上下文中实行示例性的挤压过程300。然而,当然可以在任何期望的环境下实现示例性的挤压过程300。还应该注意前述定义可以在本描述期间应用。
[0043]如所示的,在二维图像302内标识二维对象304。此外,从数据库中检索与二维对象304匹配的三维模型306。进一步地,(手动地或自动地)调整三维模型306的大小并将其与二维图像302内的二维对象304对齐。又进一步地,推动三维模型306穿过二维图像302,其中二维图像302内的特征被弯曲以匹配经修改的三维模型308的形状并用来为经修改的三维模型308贴纹理。这导致二维对象304的挤压以创建包括来自二维对象304的所有特征的三维对象310。
[0044]图4示出了在其中可以实现各先前实施例的各种架构和/或功能性的示例性系统400。如所示的,提供系统400,包括至少一个主处理器401,其连接到通信总线402。系统400还包括主存储器404。控制逻辑(软件)和数据存储在主存储器404中,主存储器404可以采取随机存取存储器(RAM)的形式。
[0045]系统400还包括图形处理器406和显示器408,即计算机监视器。在一个实施例中,图形处理器406可以包括多个着色器模块、栅格化模块等。前述模块中的每一个甚至可以布置于单个半导体平台上以形成图形处理单元(GPU)。
[0046]在本描述中,单个半导体平台可以指单独一个的基于半导体的集成电路或芯片。应该注意术语单个半导体平台还可以指具有增强连通性的多芯片模块,其仿真片上操作,并且通过利用常规的中央处理单元(CPU)和总线实现方案来做出实质的改进。当然,各模块还可以根据用户的期望分开地或以半导体平台的各种组合来布置。
[0047]系统400还可以包括二级存储410。二级存储410包括例如硬盘驱动器和/或表示软盘驱动器、磁带驱动器、光盘驱动器等的可移动存储驱动器。可移动存储驱动器以众所周知的方式读取自和/或写入到可移动存储单元。[0048]计算机程序或计算机控制逻辑算法可以存储在主存储器404和/或二级存储410中。这类计算机程序当执行时使得系统400能够实施各种功能。存储器404、存储410和/或任何其他存储是计算机可读介质的可能示例。
[0049]在一个实施例中,各先前图片的架构和/或功能性可以在主处理器401、图形处理器406、能够是主处理器401和图形处理器406这二者的至少部分能力的集成电路(未示出)、芯片集(即设计为作为用于实施相关功能的单元来工作和出售的集成电路组等)、和/或用于该问题的任何其他集成电路的上下文中实现。
[0050]还有就是,各先前图片的架构和/或功能性可以在通用计算机系统、电路板系统、专用于娱乐目的的游戏控制器系统、特定于应用的系统、和/或任何其他期望系统的上下文中实现。例如,系统400可以采取桌面计算机、膝上型计算机和/或任何其他类型的逻辑的形式。还有就是,系统400可以采取各种其他设备的形式,包括但不限于个人数字助理(PDA)设备、移动电话设备、电视机等。
[0051]进一步地,虽然未示出,但是系统400可以耦连到网络(例如电信网络、局域网(LAN)、无线网络、诸如因特网的广域网(WAN)、点对点网络、电缆网络等)用于通信的目的。在一个实施例中,当计算正发生在驻留在云中的更强大的计算机上时,可以在诸如手持电话或平板的移动设备上实施UI。
[0052]虽然以上已经描述了各实施例,但是应该理解它们通过仅示例而非限制的方式加以呈现。因此,优选实施例的宽度和范围不应该被上述示例性实施例中的任何一个所限制,而应该仅根据下面的权利要求及其等同物所定义。
【权利要求】
1.一种方法,包括: 标识二维场景内的二维对象; 确定与所述二维对象相对应的三维模型;以及 挤压所述三维模型穿过所述二维场景以创建三维对象。
2.如权利要求1所述的方法,其中用户分配一个或多个标识符给所述二维对象。
3.如权利要求2所述的方法,其中使用由所述用户分配给所述二维对象的所述一个或多个标识符来确定所述相应的三维模型。
4.如权利要求1所述的方法,其中自动分析所述二维对象以确定所述二维对象的类 型。
5.如权利要求1所述的方法,其中挤压所述三维模型穿过所述二维场景包括在第三维度中移动所述三维模型穿过所述二维场景。
6.如权利要求5所述的方法,其中挤压所述三维模型穿过所述二维场景包括响应于所述三维模型在所述第三维度中穿过所述二维场景的所述移动而调整所述二维场景。
7.如权利要求6所述的方法,其中随着移动所述三维模型穿过所述场景,弯曲所述二维对象的二维表示使得所述二维对象包裹围绕并映射到所述三维模型上。
8.如权利要求7所述的方法,其中使用所述二维对象的所述二维表示作为纹理贴图以创建所述三维模型的表面。
9.如权利要求1所述的方法,其中手动地将所述二维对象与所述三维模型对齐。
10.如权利要求1所述的方法,其中手动地或自动地标识所述二维对象的一个或多个子对象,并且确定所述二维对象内的这类子对象的方向。
11.如权利要求10所述的方法,其中所述二维场景内的所述二维对象的方向基于所述对象的边缘的形状和所述二维对象内的所述子对象的方向确定。
12.如权利要求11所述的方法,其中使用所述二维场景内的所述二维对象的所确定的方向来确定对所述三维模型的调整,使得所述三维模型与所述二维对象对齐。
13.如权利要求1所述的方法,其中调整从所述二维场景挤压所述二维对象的程度。
14.如权利要求5所述的方法,其中对所述三维模型的附加调整在已经移动所述三维模型穿过所述二维场景之后手动地或自动地进行。
15.如权利要求1所述的方法,其中从所述二维场景挤压所述二维对象包括利用所述三维模型将所述二维对象转换为三维对象。
16.如权利要求1所述的方法,其中从所述二维场景挤压所述二维对象包括将所述二维对象转换为立体对象。
17.如权利要求16所述的方法,其中使用通过从所述二维场景挤压所述二维对象所创建的所述三维对象来实施图像识别。
18.如权利要求15所述的方法,其中一旦由所述用户采用给定调整而确认所述三维模型,则新的模型被包括在数据库中用于随后使用。
19.一种具体化在计算机可读介质上的计算机程序产品,包括: 用于标识二维场景内的二维对象的代码; 用于确定与所述二维对象相对应的三维模型的代码;以及 用于挤压所述三维模型穿过所述二维场景以创建三维对象的代码。
20.—种系统,包括: 处理器,用于标识二维场景内的二维对象,确定与所述二维对象相对应的三维模型,以及挤压所述三维模型穿过所述二维场景以创建三维对象。
21.如权利要求20所述的`系统,其中所述处理器经由总线耦连到存储器。
【文档编号】G06T17/00GK103632391SQ201310369624
【公开日】2014年3月12日 申请日期:2013年8月22日 优先权日:2012年8月22日
【发明者】大卫·R·库克 申请人:辉达公司