用于拉伸成3D对象的2D图像处理的制作方法

文档序号:15072661发布日期:2018-08-01 00:15阅读:399来源:国知局

本公开一般涉及三维(3D)建模,并且尤其涉及从二维(2D)或部分3D图像数据中生成3D对象。

背景

从2D图像数据创建3D图像数据(诸如3D对象)在对3D对象建模的复杂性以及生成3D对象以准确描绘现实生活事物的复杂性两方面而言提出了特别的挑战。在这些挑战之外,还有3D数据到3D打印的最新应用,这要求完整的3D对象定义以产生完整的对象或产品。用于创建3D对象或3D图像数据的当前技术包括使用CAD/CAM软件产品,使用3D扫描传感器等。然而,这些和其他3D建模技术常常需要具体且全面的技术专家,常常需要昂贵的软件工具或此类工具链,或者甚至需要专用硬件(诸如传感器)。相应地,需要用于生成3D数据的更高效、更直观、容易获得、且更用户友好的技术。

概述

本公开的说明性示例包括但不限于方法、系统、以及各种设备。在一方面,用于将图像数据转变成三维(3D)模型的技术可包括获得二维(2D)或部分3D图像数据,其包括颜色信息。2D或部分3D图像数据可以使用颜色信息被分割成多个片段。基于颜色信息,至少一个高度值可以被赋予多个片段中的每一者以定义经更新的3D图像数据。经更新的3D图像数据接着可以被用于生成3D模型。

系统和方法的其它特征在下文描述。特征、功能以及优点可在各示例中独立地实现,或者在又一些其它示例中被组合,特征、功能以及优点的进一步细节可参考以下的描述和附图来看到。

附图简述

以下将参考附图更全面地描述本公开的各实施例,其中:

图1描绘了2D图像数据到3D图像数据的转变的示例。

图2描绘了用于将2D图像数据转变成3D图像数据的3D建模或构建程序应用的示例用户界面。

图3和4描绘了用于将2D图像数据转变成3D图像数据的示例操作规程。

图5描绘了用于使用轮廓选择来分割图像数据的更详细的操作规程的示例。

图6描绘了根据图5描绘的操作规程使用轮廓选择的2D图像数据到3D图像数据的转变的示例。

图7描绘了用于使用一个或多个高度图来分割图像数据的更详细的操作规程的示例。

图8描绘了根据图7描绘的操作规程使用一个或多个高度图的2D图像数据到3D图像数据的转变的示例。

图9描绘了用于使用一个或多个高度图来分割图像数据的操作规程的另一示例。

图10描绘了根据图9描绘的操作规程使用一个或多个高度图的2D图像数据到3D图像数据的转变的示例。

图11描绘了用于使用边缘检测来分割图像数据的更详细的操作规程的示例。

图12描绘了根据图11描绘的操作规程使用边缘检测的2D图像数据到3D图像数据的转变的示例。

图13描绘了用于使用压印技术来分割图像数据的更详细的操作规程的示例。

图14A和14B描绘了根据图13描绘的操作规程使用压印技术的2D图像数据到3D图像数据的示例转变。

图15描绘了在其中可实现本文描述的各技术的示例通用计算环境。

详细描述

本文描述了用于将2D图像数据转变成3D图像数据(诸如一个或多个3D对象)的各系统和技术。在一些方面,经转变的3D数据可用于和/或进一步修改以用于多个应用,诸如3D打印、3D建模、3D虚拟化以及各种其它应用。所述技术可包括从一个或多个本地或远程图像文件等获得2D图像数据或者在一些情形中获得部分3D图像数据,诸如来自移动设备或智能电话中实现的相机的照片。2D图像数据的颜色数据可以被用于计算或确定图像的各种分割,并且将高度值赋予各片段的各部分以从2D图像数据中创建经拉伸的3D图像数据。在一些方面,纹理信息可以被重新映射到3D对象上。3D图像/对象接着可以被渲染(例如,包括颜色和/或纹理)以供显示、操纵、经由3D打印机打印、或者用于各种其他应用和目的。在一些情形中,用户界面可以被提供以实现对不同3D转变技术的选择,使得能够实时地对过程作出各种调整,并且能够实现对所使用的转变技术和所选择的配置参数的差异的可视化和显示。

在一个示例中,笔和纸绘图的照片可以被加载到例如在计算设备、移动设备、智能电话、平板计算机、膝上型计算机等上运行的3D构建程序应用,3D构建程序应用可以经由所述技术将该照片转换成3D对象。与3D构建程序应用相关联的用户界面可以提供用于实时地或近乎实时地修改该照片如何被转变成3D对象以及与其相关的各种参数的各种选择和定制。所述技术可以实现来自2D图像或照片、线条绘画、图表、部分3D图像数据等的复杂3D渲染,并且可以实现对来自现实世界的3D内容的更高效的捕捉和修改,而不要求高级专家或专用硬件。

在一些方面,2D图像/图像数据的颜色数据可以在逐像素的基础上来分析。在一种示例技术中,在此处被称为轮廓检测,各像素(诸如具有不同强度的邻近或相邻像素)可以被检测和标识。像素强度以及在一个示例中相邻像素的强度差异的触发标识的程度可以例如经由一个或多个阈值来配置。所标识的像素(具有高于或低于一个或多个所选阈值的像素强度/差异像素强度的像素)可以被链接或连接以形成和近似图像数据中边界或边缘。近似的边缘接着可以被连接以形成轮廓环。轮廓环可以是任何形状、大小等,每一轮廓环可以包围图像数据中的一个区域。轮廓环可以被拉伸和三角化,并且可以围绕每一轮廓环生成顶表面(可见)、底表面、和侧表面以形成3D图像数据/对象。应当领会,2D图像数据的其他值可以被用于形成如上所述的轮廓,诸如颜色值(RGB或RGBA)等等。

在另一示例技术中,2D图像数据可以被转换成高度图,例如,在对2D图像数据的预处理之后。在一方面,泛色填充可以被应用于2D图像,并且图像数据中的颜色数目可以例如通过将经修改的均值切割颜色量化算法应用于2D图像数据来减少。在一些方面,模糊或框模糊可以被应用于图像数据。经预处理的图像数据接着可以被转换成高度图,高度图可以作为灰度位图被输出。在一些方面,阿尔法(alpha)通道信息可以被用于滤除透明像素。高度图接着可以被用于构造图像数据网格,该图像数据网格例如通过将顶点与图像数据的各像素相关联,连接相邻顶点,将纹理应用于3D对象的顶表面,以及生成底表面和侧表面来包围3D对象内的容体来定义3D对象。在一些方面,所应用的纹理可包括颜色减少的图像数据。在一些情形中,3D对象的几何形状可以被简化以减少网格大小,例如,以用于更高效的存储、渲染等。

在另一示例技术中,在此处被称为边缘检测,2D图像数据的预处理可以被执行,例如如上文参考高度图技术类似地描述的。经预处理的图像数据可以被转换成基于边缘的高度图,诸如通过生成或映射相邻或邻近像素的颜色距离以定义图像中的各边。在一些方面,阿尔法通道信息如果可用则可以被用来从基于边缘的高度图中移除透明像素。接着可以从基于边缘的高度图中经由如上参考高度图技术的类似过程来构造图像数据网格。在一些情形中,网格可以例如通过简化3D对象/图像数据的几何形状来在大小上被减小。

在又另一示例技术中,在此处被称为压印技术,模糊或者模糊滤波器(可以是可配置的)可以被应用于2D图像数据以从2D图像移除尖锐边缘。经模糊化的图像接着例如使用经排序的抖动处理方案被转换成黑色和白色。接着可以例如通过将相邻黑色像素与边缘连接来创建三角形并且生成侧表面和底表面以形成网格来从黑色和白色图像数据中构造图像数据网格。

在一些方面,模糊化可以在2D图像数据的预处理阶段执行,或者在一些方面,在2D图像数据的处理期间或者在2D图像数据的处理后期间执行,例如,经由通过用户界面被选择的一个或多个用户输入(例如,滑动标尺或滑动条)。在一些情形中,用户界面可以提供逆向选择,其可以逆转图像数据的高度值、颜色等。用户界面可以附加地或替换地提供分辨率选择、颜色选择(例如,用于在生成高度图时的颜色减少)、以及其他选择或选项。

图1描绘了根据一些所描述的技术的2D图像数据到3D图像数据100的转变的示例。2D图像数据105可以例如通过在一个或多个通信网络上从本地位置或远程位置(诸如客户端设备的存储器或远程存储器)检索或访问一个或多个图像文件(JPEG、PNG、BMP等)来被选择或获取。2D图像105也可例如经由与客户端设备集成或处于通信的相机被捕获,并且可以在选择之际被自动导入3D建模或构建应用。图像数据105可以在操作110被导入并且以3D被渲染为用户界面120中的3D图像数据115。

图2解说了用户界面120的更详细的表示(如图1所描绘的),其可以在客户端设备上被执行并且在一些实施例中可以与3D构建程序应用相关联。一种方法或技术205可以被选择以指定2D图像数据105如何被转变成3D图像数据115。用户界面120可以显示所选变换技术205,并且还可显示可选图标210,该可选图标210在选择之际显示其他类型的3D转变技术,诸如高度图、在下拉菜单或其他窗口215中具有例如颜色纹理、边缘和压印的高度图。在一方面,例如,在轮廓转变方法被选择时,颜色阈值选择项220也可被显示。颜色阈值选择项220可以确定什么颜色阈值被用于检测2D图像数据105中的轮廓。在一些方面,颜色阈值选择项220可以显示条和滑块图标,以使得用户输入可以从由滑块位置表示的值范围中移动和选择颜色阈值。在一些方面,颜色阈值可对应于像素强度或颜色值(例如,RGB或RGBA)。逆向选择项(诸如切换按钮225)可以将3D构建程序应用配置为例如通过将所选阈值转换为所选最大或最小值的相反来逆转3D图像数据115。在一方面,例如,当轮廓方法被选择时,逆向选择225可以修改3D对象以切换高度值(例如,当对象被显示在3D笛卡尔坐标系/坐标平面中时,将每一高度或z方向值改变为相反符号,正的变为负的,或者相反)。

在一些方面,用户界面120可以在栅格或坐标平面230(诸如3D栅格或平面)中显示3D图像数据115。用户界面120可以提供平移控件、缩放控件、以及用于改变3D对象115的视角的控件,以例如实现对3D对象/数据115的更高效的操纵和可视化。

在另一方面,模糊选择项(未示出)可附加地或替换地被提供。模糊选择项可包括滑块或用于从模糊值范围(例如,0到8或其他值范围)中作出选择的其他可视手段,例如以平滑化3D图像数据/对象115转变后的边缘或者在转变之前修改2D图像数据的预处理。在又另一方面,颜色选择项(未示出)可以实现在2D图像105被转换成高度图时使用多少颜色的选择,如下文更详细地描述的。在一些方面,2到256之间的任何数目个颜色可以经由颜色选择项来选择。在一个实施例中,颜色距离选择项(未示出)可以经由用户界面120来显示,这可以实现对执行边缘转变方法的详细程度的配置,例如,经由滑块或其他范围选择可视化方法。

在一些方面,一个或多个用户界面选择项可以在对不同3D转变方法205的选择之际改变,以例如最小化在用户界面120上在给定时间点显示的信息量和选择项。这可以提供更高效的用户体验以及对用于生成3D对象115的配置参数的更高效的操纵。

应领会,用户界面120仅仅作为示例给出。其他配置、其他选择项、显示项等可以被提供或被添加到用户界面120并且被构想在本文中。

图3解说了用于将2D图像数据转变成3D图像数据的示例方法或过程300。过程300可以由经由一个或多个通信网络与另一客户端设备处于通信的一个客户端设备或多个客户端设备、服务器等来实现。过程300可以开始于操作302,其中2D图像数据可以被获得。2D图像数据可以对应于参考图1描述的图像数据105。获得2D图像数据可包括经由相机或连接到客户端设备或与客户端设备处于通信的其他图像传感器获得数据,或者可包括访问一个或多个图像文件等。在操作304,可以基于来自2D图像数据的颜色数据来分析所获得的2D图像数据并且将其分割为一个或多个片段。操作304可包括分析所获得的2D图像数据的多个像素以确定图像数据中的轮廓环,将图像数据转换成高度图,基于检测到的/所确定的边缘来分割图像数据,等等,如下文更详细地描述的。接着,在操作306,经分割的图像数据可以基于分割被拉伸或构造(例如,增加到图像数据的高度或第三维分量)为3D对象,诸如3D对象115。在一些方面,3D对象可以诸如响应于接收到对逆向选择的选择被逆转。

接着,在操作308,纹理和颜色数据可以被重新映射到3D对象。在一些方面,纹理可以作为附加高度值被添加到3D对象,或者可以被转换成3D对象或者作为颜色数据被应用于3D对象。在操作310,3D对象接着可以被渲染,例如以供经由用户界面120进行可视化和进一步修改。在一些方面,3D对象或图像数据可以被发送到3D打印机,例如以生成根据所渲染的3D图像数据/3D模型的物理3D对象,可任选地包括纹理和颜色。

图4解说了用于将2D图像数据转变成3D数据的更详细的示例方法或过程400。过程400可开始于操作402,其中2D图像数据可以被获得,诸如在操作404经由直接从与执行过程400的客户端设备处于通信的相机传感器捕获照片。接着,在操作406,图像数据可以根据与所获得的图像数据相关联的颜色信息被分割。可以根据例如经由用户界面120接收到的一个或多个3D转变选择408、410、412、414来执行操作406。操作408可包括使用轮廓检测算法来分割图像数据,以使得从具有不同强度的像素检测或推断图像数据中的边缘以定义之后可以被拉伸以形成3D对象的轮廓。操作408将在下文参考图5更详细地描述。操作410可包括通过预处理图像数据,将图像数据转换成高度图,以及生成网格以定义3D图像数据或对象来分割图像数据。操作410将在下文参考图7和9更详细地描述。操作412可包括使用边缘检测来分割图像数据,这可包括基于邻近或相邻像素之间的颜色距离来生成高度图并且生成网格以定义3D图像数据或对象。操作412将在下文参考图11更详细地描述。操作414可包括使用压印技术来分割图像数据,包括模糊化图像数据,将图像数据转换成黑色和白色,以及从经转换的图像数据的子集中构造网格以形成3D对象或图像数据。操作414将在下文参考图13更详细地描述。

一旦操作408、410、412和414中的一者或多者已经对2D图像数据执行,过程400可继续到操作416,其中例如经由通过用户界面120接收到的指令可以调整或微调一个或多个分割或转变参数。操作416可包括调整各参数,诸如一个或多个颜色阈值或强度阈值、图像的模糊化、图像的着色等等。在一些情形中,在操作420,纹理和/或颜色信息可以被重新映射到已完成的3D对象上。在一些方面,操作416、418和420中的一者或多者可以作为操作408、410、412或414的一部分来执行,如下文更详细地描述的。过程400可结束于在操作422渲染3D对象或图像数据。

图5描绘了用于使用如图4中描绘的轮廓选择操作408来分割图像数据的更详细的子过程的示例。子过程408可进一步包括在操作502确定一个或多个颜色或像素强度阈值。操作502可包括经由用户界面120接收一个或多个选择,诸如一个或多个强度阈值(例如,在1到255范围内),或者一个或多个颜色阈值。接着,子过程408可包括在操作504,基于在操作502确定的一个或多个像素强度/颜色阈值来标识一个或多个轮廓环。操作504可包括获得或确定一个或多个像素的强度或颜色值,并且将该值与所确定的阈值进行比较以标识一个或多个轮廓环。在另一示例中,操作504可进一步包括在操作506标识强度/颜色差异高于一个或多个阈值的邻近像素。在一些方面,可以通过标识强度/颜色差异低于一个或多个阈值的邻近像素来生成逆向3D图像。在一些方面,不同的且多个阈值可以被应用以修改由过程400/子过程408生成的3D对象或图像数据。操作504可进一步包括在操作508,基于操作506标识的像素来确定2D图像数据中的一个或多个边界或边缘。确定一个或多个边缘可包括将具有高于阈值的不同强度/强度的像素与具有高于阈值的不同强度/强度的其他像素连接。在一些方面,在操作510(其可以是操作504的一部分),在操作510各边缘接着可以被连接以形成一个或多个轮廓环,该轮廓环可包括任何形状或大小并且可以包围图像内的一个区域。以此方式,2D图像数据可以被分割成一个或多个轮廓环。

在一些方面,像素/颜色阈值可包括邻近像素的强度或颜色水平或值之间的可配置或可选择的距离(值或比较值的差异)。像素阈值可包括两个或更多个像素的颜色值之间值的比较差异(例如,2个邻近像素、邻近像素群、处于彼此的某一距离(诸如像素距离)之内的2个或更多个像素等),诸如色调、饱和度、特定RGB值之间的距离等的值。在一个示例中,一个或多个像素阈值可以被选择为对应于RGB数据以例如按颜色来定义图像的边缘或边界。以此方式,拉伸过程可以由颜色来驱动。该可选择的配置可实现颜色绘画到多层或多高度拉伸或3D对象的转换。在一个示例中,笔的不同颜色的调色板(例如物理的或绘图应用中的)可以被用于创建图像,每一颜色表示和对应于特定拉伸深度或高度。在该示例中,所述技术可使得笔艺术家能够用笔和纸创建详细的3D模型,扫描图像,并且使用所述技术来创建3D对象,而无需使用3D CAD或其他复杂应用。

在一个示例中,当图像数据包含阿尔法信息时,该值可以被应用于例如图像数据中的像素的RGB值,并且被用作在各像素之间进行比较的值。在另一示例中,当图像数据定义RGB值而没有阿尔法值时,颜色值可以被转换成强度图。强度图可以随后基于被选择或配置的一个或多个阈值被转换成黑白图或图像。可以基于黑白图/图像中每一像素的颜色来检测轮廓环。例如,在正常情形中,白色可指示环,而黑色可指示孔。相反,如果选择逆向选项,则黑色可指示轮廓环而白色可指示孔。应当领会,用于检测轮廓环的其他技术也被构想在本文中,诸如单独跟踪RGB通道来获得更准确的结果(其可要求更多资源来实现)。

在一些方面,图像本身的边缘可形成轮廓环的一部分。在一些方面,多个像素强度或颜色阈值可以被应用于图像数据,以形成图像数据的多层表示,其中每一轮廓环基于像素强度/颜色值而对应于图像数据的不同高度或第三维度。

接着在操作512,一个或多个轮廓环可以被拉伸或延伸到z方向上以形成侧表面。接着在操作514,轮廓环可以被三角化。在一些方面,操作512和514可以并发地或以相反顺序来执行。在操作516,接着可以生成底表面或者与2D图像数据的完整视图表面相对的表面。在操作518,可以生成(例如组合)3D对象的顶表面或可见表面并将其附加到经拉伸的轮廓环。在一些方面,例如,在已经接收到用于将颜色和/或纹理数据映射到3D对象上的选择的情况下,子过程408可进一步包括在操作520将纹理和/或颜色信息映射到顶表面。在一些情形中,操作520可包括将UV纹理坐标应用于顶表面并且将原始图像数据作为纹理赋予3D对象。在其中没有执行操作520的示例中,子过程408的输出可以是不具有颜色或一个或多个默认颜色的3D对象(例如,黑色和白色)。

图6描绘了根据参考图5描述的子过程408使用轮廓选择的2D图像数据到3D图像数据的转变的示例。在一个示例中,表示地球图的2D图像数据605可以经由过程400/子过程408倍转换成3D图像数据610。3D图像数据610表示正常(未经逆转)轮廓转变。在另一示例中,诸如在选择经逆转轮廓转变时,过程400/子过程408可以在操作620将2D图像数据605转变成3D图像数据620,其中取代地面处于较高的第三维度(笛卡尔坐标系中的z方向),水面被定位在较高的第三维度。

图7描绘了用于使用如图4中描绘的一个或多个高度图操作410来分割图像数据的更详细的子过程的示例。子过程410可包括在操作702,基于一个或多个阈值(其可以是可配置的)将泛色填充应用于2D图像数据。操作702可以被执行以例如减少与2D图像数据相关联的梯度数目以减少执行3D转变所要求的计算复杂度和资源。在一些方面,泛色填充可以填充对象周围的并非是形成对象本身的完整渲染所必需的容体(例如,地球的2D图像中的水,如图6所描绘的)。在图6的示例中,相比于所渲染的3D对象的改变,水的具体轮廓和纹理可能不值得计算开销。在一些方面,用户界面120可以提供对一个或多个项的选择以启用、禁用、或配置泛色填充(例如,泛色填充例如相比于3D对象的高度被应用的程度)。

接着在操作704,2D图像数据中的颜色数目可以被减少以例如降低计算复杂度。在一方面,一个或多个选择项可以经由用户界面120来提供以用于配置在子过程410中使用多少颜色(例如,在2到256种颜色的范围内)。在一个示例中,颜色减少可包括将经修改的均值切割颜色量化算法应用于2D图像数据,如本领域公知的。

接着在操作706,模糊或块模糊过程可以被应用于图像数据。在一些方面,所应用的模糊的量可以响应于经由用户界面120中的选择项的选择事件。在一个示例中,模糊过程可包括用附近或邻近像素值的加权均值来替换一个或多个像素值。模糊块过程可包括用由块或其他形状定义的附近或邻近像素值区域(诸如5x 5像素的区域)的加权均值来替换一个或多个像素值。在操作708,经修改的或经预处理的图像数据接着可以被转换成高度图。在一些方面,操作708可包括输出对应于2D图像数据的各像素的灰度位图,其中位图中的每一像素的值对应于高度值(例如,每一像素值的范围从0到765,表示R、G和B值的总和,这可以被实现以用于对在执行转换过程中的资源的更高效使用)。2D图像数据可包括RGB颜色值。在一些方面,2D图像数据还可包括阿尔法通道信息。在此场景中,在操作712,阿尔法通道信息可以被用于滤除透明像素以实现对3D对象/图像数据的更高效构造。在一些情形中,在阿尔法信息标识透明像素时,所标识的像素可以在设置的强度阈值之外,诸如结合图5描述的,而不管其强度如何,从而不必应用其他操作。

接着在操作714,可以从由操作708产生的高度图中构造图像数据网格。操作714可包括在操作716将顶点与图像数据的像素相关联,并且在操作718连接相邻顶点以创建三角形。同样作为操作714的一部分,纹理可以被应用于在操作720处正被构造的3D对象的顶表面或可见表面,并且可以分别在操作722和724生成侧表面和底表面。操作716-724可以生成封闭的3D对象。在一些方面,在操作726,图像数据网格的几何形状可以被简化以减小所创建的3D图像数据的大小。可以贯穿子过程410或者在子过程410的各个点处执行操作726。

图8解说了根据参考图7描述的过程400/子过程410使用一个或多个高度图的2D图像数据到3D图像数据的转变的示例。在一个示例中,可描绘地球的2D图像数据805可以被获得并且稍后在810经由过程400/子过程410被转变为3D图像数据815。3D图像数据815可以用向其增加的高度或高程维度来表示2D图像数据805。在另一示例中,2D图像数据805可以在820经由过程400/子过程410倍转变成经逆转的3D图像数据825。经逆转的3D图像数据可以类似于3D图像数据815,区别在于高程或高度值被反转或具有相反符号。通过调整用于生成高度图的颜色数目,可以调整不同高度或高程被映射的分辨率或详细程度,以使得使用更多颜色可得到更详细或更高的高度分辨率的3D图像数据815、825。

图9描绘了用于使用如图4中描绘的一个或多个高度图操作410来分割图像数据的更详细的子过程900的另一示例。子过程900可包括子过程410的步骤或操作中的一者或多者,如参考图7所描述的。相应地,此处将不会再次描述公共操作。子过程900区别于图7的子过程410在于一个主要方面。取代在操作720将纹理(例如,来自原始2D图像数据)应用于3D对象的顶表面,子过程900可以取而代之在操作902使用来自操作704的颜色减少的图像数据来生成纹理并将其应用于3D对象的顶表面。在一些方面,使用全分辨率纹理信息的3D对象可产生在美学上不吸引人的3D对象,以使得纹理可能盖过3D对象的其他细节。过程900可以被用于应用减少颜色的纹理的形式的简化颜色信息来创建在美学上更吸引人的3D对象。在一个示例中,过程900可以产生类似于或相似于孩子的字谜游戏或简化卡通人物的3D对象。操作902可以作为操作714处的构造图像数据网格的一部分来执行。

图10解说了根据以上参考图9描述的子过程900使用一个或多个高度图的示例3D转变。3D图像数据1005解说了使用过程400/子过程900转变的包括大象的一个场景,其中针对操作704的颜色减少使用了2个颜色。3D图像数据1005的纹理对应于经由操作902应用的操作704的2个颜色减少。类似地,3D图像数据1010对应于3个颜色,3D图像数据1015对应于4个颜色,3D图像数据1020对应于32个颜色,而3D图像数据1025对应于256个颜色。如所解说的,使用更多颜色得到所产生的3D图像数据的更好分辨率和外观。相应地,例如可以经由用户界面120来选择用于颜色减少的不同数目的颜色以影响所产生的3D图像数据。

图11描绘了用于使用如图4中描绘的边缘检测操作412来分割图像数据的更详细的子过程的示例。子过程412在许多方面可以类似于子过程410,包括操作702、704、706、712、714、716-724和726.子过程412可区别于子过程410在于:取代在操作708生成高度图,子过程412可包括在操作1102将经预处理的2D图像数据转换成基于边缘的高度图。在一些方面,在操作1102之前或者作为操作1102的一部分,Sobel滤波器或用于确定图像强度函数的梯度的近似的其他技术可以被应用于所获得的图像数据。操作1102可进一步包括在操作1104基于邻近或相邻像素之间的颜色距离来生成位图,例如在已经应用Sobel滤波器之后。操作1104可包括取代基于每一像素的强度来计算高度,基于每一像素的梯度大小来计算高度,这与相邻像素与当前像素有多不同有关。在一些情形中,取代通过基于具有高于阈值的强度/颜色值的像素位置来定义轮廓环或边缘来构建3D对象,可以基于由图像数据中产生尖锐转变(例如,基于梯度值)的地方所定义的边缘或轮廓环来构建3D对象。

图12解说了根据参考图11描述的过程400/子过程412使用边缘检测的两个示例3D转变,以及根据参考图7描述的过程400/子过程410使用一个或多个高度图的一个示例3D转变。在所解说的示例中,2D图像数据1205可包括花朵的图片。2D图像数据1205可以在1210根据过程400/子过程412被转变成3D图像数据1215。3D图像数据1215可包括2D图像数据1205中描绘的花朵,其中上升的边缘对应于例如茎、叶、和花瓣。在另一示例中,2D图像数据可以在1220根据过程400/子过程412被转变为3D图像数据1225,它类似于3D图像数据1215,但是被逆转(例如,根据经由用户界面120接收到的选择),其中边缘对应于凹陷区域而非抬升区域。为了对比,2D图像数据1205可以在1230根据过程400/子过程410(高度图)被转变为3D图像数据1235,其可以通过在例如花的内部包括更多升高或抬升区域来区别于3D图像数据1215。

图13描绘了用于使用如图4中描绘的压印技术操作414来分割图像数据的更详细的子过程的示例。子过程414可开始于操作1302,其中模糊可以被应用于2D图像数据(例如,2D图像数据105)以例如从2D图像数据移除尖锐边缘。在一些方面,操作1302中应用的模糊可以基于操作1304经由用户界面120接收到的对模糊值的选择,该模糊值得范围例如从0到8。接着在操作1306,经模糊化的2D图像数据可以例如使用经排序的抖动处理方案被转换成黑白图像,如本领域公知的(例如,通过将小黑点放置成更靠近在一起或更彼此远离来创建灰度图像)。在一些方面,在操作1308,图像颜色可以被逆转以例如生成逆向压印3D对象。

接着,在操作1310,可以构造图像数据网格。操作1310可包括其他操作,诸如在操作1312将顶点与图像数据的像素相关联,在操作1314忽略白色像素,以及在操作1316按边缘连接例如黑色像素的相邻顶点以创建三角形。操作1312、1314和1316可将现在被表示为像素的黑白点的系统转换成小的塔和孔,以使得在被制造以及被压缩到墨水板时,点的图案将通过墨水转移到被压印的页面上。操作1310可进一步包括分别在操作1318和1320生成侧表面并且生成底表面。以此方式,可以在至少一个表面表示2D图像数据的压印或类似压印特性的情况下构造3D对象。在一些方面,在操作1322 3D对象/压印的集合形状可以被简化以减小网格的大小,以使得3D对象花较少空间来存储并且可以用较少资源进行渲染等。

图14A和14B描绘了根据参考图13描述的过程400/子过程414使用压印技术的2D图像数据到3D图像数据的示例转变。可包括花朵图片的2D图像数据1405可以在1410、1430以及1450和1460经由过程400/子过程414被转变以生成3D图像数据的各个版本1415、1420、1425、1435、1440、1445、1455和1465。在第一示例中,2D图像数据1405可以在1410被转变为3D图像数据的各种质量1415、1420、1425,其中花朵的不同区域用例如不同图案填充。在第二示例中,2D图像数据1405可以在1430被转变为具有应用于其的不同模糊值或水平的3D图像数据的各个版本1435、1440、1445。在第三示例中,2D图像数据1405可以在1450被转变为例如具有第一质量和最小模糊值的经逆转的压印1455。在又一第四示例中,2D图像数据1405可以在1460被转变为3D图像数据1465,以透视视图来解说,其中定义华佗的内部区域的所有或大部分“列”或“凸起”具有相同高度。应当领会,具有不同高度的列或凸起的各种变型和配置也被构想在本文中。

上文描述的3D建模或构建程序应用和/或用户界面120可以被实现在一个或多个计算设备或环境上,如下文所述。图15描绘了在其中可实现本文描述的各技术的一些的示例通用计算环境。计算系统环境1502只是合适的计算环境的一个示例,并且不旨在对当前公开的主题的使用范围或功能提出任何限制。也不应该将计算环境1502解释为对示例操作环境1502中示出的任一组件或其组合有任何依赖性或要求。在一些实施例中,所描绘的各种计算元素可包括被配置成实例化本发明的各具体方面的电路。例如,本公开中使用的术语电路可包括被配置成通过固件或开关来执行(诸)功能的专用硬件组件。其他示例实施例中,术语电路可包括由实施可用于执行(诸)功能的逻辑的软件指令配置的通用处理单元、存储器等。在电路包括硬件和软件的组合的示例实施例中,实施者可以编写体现逻辑的源代码,且源代码可以被编译为可以由通用处理单元处理的机器可读代码。因为本领域技术人员可以明白现有技术已经进化到硬件、软件或硬件/软件组合之间几乎没有差别的地步,因而选择硬件或是软件来实行具体功能是留给实现者的设计选择。更具体地,本领域技术人员可以明白软件进程可被变换成等价的硬件结构,而硬件结构本身可被变换成等价的软件进程。由此,对于硬件实现还是软件实现的选择是设计选择之一并留给实现者。

可包括移动设备或智能手机、平板、膝上型设备、台式计算机等中的任一者的计算机1502通常包括各种计算机可读介质。计算机可读介质可以是能由计算机1502访问的任何可用介质,而且包含易失性和非易失性介质、可移动和不可移动介质。系统存储器1522包括易失性和/或非易失性存储器形式的计算机可读存储介质,诸如只读存储器(ROM)1523和随机存取存储器(RAM)160。包含诸如在启动期间帮助在计算机1502内的元件之间转移信息的基本例程的基本输入/输出系统1524(BIOS)通常存储在ROM 1523中。RAM 1560通常包含处理单元1559可立即访问和/或当前正在操作的数据和/或程序模块。作为示例而非限制,图15示出了操作系统1525、应用程序1526、其他程序模块1527和程序数据1528。

计算机1502也可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图15示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器1538,从可移动、非易失性磁盘1554中读取或向其写入的磁盘驱动器1539,以及从诸如CD ROM或其他光学介质等可移动、非易失性光盘1553中读取或向其写入的光盘驱动器14。可以在该示例操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器1538通常通过诸如接口1534之类的不可移动存储器接口连接到系统总线1521,并且磁盘驱动器1539和光盘驱动器1504通常通过诸如接口1535之类的可移动存储器接口连接到系统总线1521。

以上讨论并在图15中示出的驱动器及其相关联的计算机存储介质为计算机1502提供了对计算机可读指令、数据结构、程序模块和其他数据的存储。在图15中,例如,硬盘驱动器1538被示为存储操作系统1558、应用程序1557、其他程序模块1556和程序数据1555。注意,这些组件可与操作系统1525、应用程序1526、其他程序模块1527和程序数据1528相同,也可与它们不同。在此操作系统1558、应用程序1557、其他程序模块1556以及程序数据1555被给予了不同的编号,以至少说明它们是不同的副本。用户可以通过输入设备,诸如键盘1551和定点设备1552(通常称为鼠标、跟踪球或触摸垫)向计算机1502输入命令和信息。其他输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些以及其他输入设备通常通过耦合到系统总线的用户输入接口1536连接到处理单元1559,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)之类的其他接口和总线结构来连接。监视器1542或其他类型的显示设备也经由诸如视频接口1532之类的接口连接至系统总线1521。除监视器之外,计算机还可包括可以通过输出外围接口1533连接的诸如扬声器1544和打印机1543(诸如3D打印机)之类的其他外围输出设备。

计算机1502可使用到一个或多个远程计算机(诸如,远程计算机1546)的逻辑连接而在联网环境中操作。远程计算机1546可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点,并且通常包括许多或所有以上相对计算机1502所描述的元件,但在图15中仅示出了存储器存储设备1547。图15中所描绘的逻辑连接包括局域网(LAN)1545和广域网(WAN)1549,但还可包括其他网络。此类联网环境在办公室、企业范围的计算机网络、内联网和互联网中是常见的。

当在LAN联网环境中使用时,计算机1502通过网络接口或适配器1537连接到LAN 1545。当在WAN联网环境中使用时,计算机1502通常包括调制解调器1505或用于通过诸如因特网等WAN 1549建立通信的其他手段。调制解调器1505可以是内置的或外置的,可经由用户输入接口1536或其他适当的机制连接到系统总线1521。在联网环境中,相关于计算机1502所示的程序模块或其部分可被储存在远程存储器存储设备中。作为示例而非限制,图15示出了远程应用程序1548驻留在存储器设备1547上。应当理解,所示的网络连接是示例性的,并且可使用在计算机之间建立通信链路的其他手段。

在一些方面,其它程序1527可包括3D建模或构建程序应用1565,该应用提供如上所述的功能。在一些情形中,3D建模应用1565可以执行过程300或400以及子过程408、410、412、414或900,并且如上所述通过图形接口1531、视频接口1532、输出外围接口1533和/或一个或多个监视器或触摸屏设备1542来提供用户界面120。在一些方面,3D建模应用1565可以与3D打印机1543通信以产生3D图像数据的物理3D模型。在一些方面,其它程序1527可包括一个或多个3D虚拟化应用,该应用可获取并提供可被显示的由3D建模应用1565生成的3D模型的图像。

以上章节中描述的过程、方法以及算法中的每一个可被全部或部分自动地实例化在由一个或多个计算机或计算机处理器执行的代码模块中。代码模块可被存储在任意类型的非瞬态计算机可读介质或计算机存储设备上,诸如硬盘、固态存储器、和/或光盘等。过程和算法可被部分或全部地以专用电路来实现。所公开的过程和过程步骤的结果可被持久地或以其它方式存储在任意类型的非瞬态计算机存储中,诸如举例而言易失性或非易失性存储。以上所描述的各特征和过程可被彼此独立地私钥,或以各种方式被组合。所有可能的组合和子组合被预期落在本公开的范围内。另外,在一些实现中,某些方法或过程块可被省略。本文描述的方法和过程也不被限于任何特定的顺序,并且各个块以及与其有关的状态可以适当的其它顺序来执行。例如,所描述的块或状态可以不同于具体公开的顺序来执行,或者多个块或状态可被组合成单个的块或状态。示例块或状态可被顺序地、并行地或以其它形式来执行。块或状态可相对于所公开的示例实施例被添加或移除。本文描述的示例系统和组件可被与所描述地不同地配置。例如,相对于所公开的示例实施例,各元素可被添加、移除或重新排列。

还将理解,各个项被例示为在被使用是被存储在存储器或存储中,并且存储器管理和数据完整性的目的,这些项目或其部分可在存储器和其它存储设备之间转移。替代地,在其它实施例中,软件模块和/或系统的一些或全部可在另一设备上的存储器中执行并且经由跨计算机通信与所例示的计算系统通信。此外,在一些实施例中,系统和/或模块的一些或全部可以其它方式被实现或提供,诸如至少部分地以固件和/或硬件的形式,硬件包括但不限于专用集成电路(ASIC)、标准集成电路、控制器(例如,通过执行恰当的指令、并且包括微控制器和/或嵌入式控制器)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)等。模块、系统和数据结构中的一些或全部还可被存储(例如作为软件指令或结构化数据)在计算机可读介质上,诸如硬盘、存储器、网络或便携式介质产品以供恰当的驱动器或经由恰当的连接来读取。系统、模块和数据结构还可被作为各种各样的计算机可读传输介质上的生成的数据信号(例如,作为载波或其它模拟或数字传播信号的一部分)来传送,计算机可读传输介质包括基于无线和基于有线/线缆的介质,并且可采用各种形式(例如,作为单个或复用的模拟信号的一部分,或者作为多个离散数字分组或帧)。在其它实施例中,这类计算机程序产品还可采用其它形式。因此,本公开可以其它计算机系统配置来实现。

除非另外具体声明,否则在如所使用的上下文中可以理解的,本文使用的条件语言(诸如“能”、“能够”、“可能”或“可以”)一般意图表达特定实施例包括而其他实施例不包括特定特征、元素和/或步骤。因此,这样的条件语言一般并非旨在暗示对于一个或多个实施例需要特征、元素和/或步骤,或者一个或多个实施例必然包括用于决定的逻辑、具有或不具有用户输入或提示、在任何特定实施例中是否要包括或要执行这些特征、元素和/或步骤。术语“包括”、“包含”、“具有”等是同义词并且被以开放形式包括性使用,而不排除其它元素、特征、动作、操作等等。此外,术语“或”被以其包括含义来使用(而不是以其排除含义),使得当被使用时,例如用于连接一列元素时,术语或摂表示该列表中的元素中的一个、一些或全部。

虽然某些示例实施例已被描述,但是这些实施例是仅作为示例来提供的,而不旨在限制本文公开的发明的范围。因此,前述描述中没有任何旨在暗示任何特定的特征、特性、步骤、模块或块是必需或不可替代的。事实上,本文描述的新的方法和系统可以各种其它形式来实现;此外,本文描述的方法和系统的形式上的各种省略、替换和改变可在不背离本文公开的发明的精神的情况下进行。随附的权利要求及其等同体旨在覆盖这类形式或修改,如将会落在本文公开的发明的某些的范围和精神内的。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1