CN110009721B - 生成由曲线表示的图像的三角网格 - Google Patents
生成由曲线表示的图像的三角网格 Download PDFInfo
- Publication number
- CN110009721B CN110009721B CN201811168267.6A CN201811168267A CN110009721B CN 110009721 B CN110009721 B CN 110009721B CN 201811168267 A CN201811168267 A CN 201811168267A CN 110009721 B CN110009721 B CN 110009721B
- Authority
- CN
- China
- Prior art keywords
- mesh
- image
- curve
- module
- triangle
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 92
- 238000005070 sampling Methods 0.000 claims abstract description 35
- 230000004044 response Effects 0.000 claims description 23
- 230000005484 gravity Effects 0.000 abstract description 4
- 238000003860 storage Methods 0.000 description 46
- 230000008569 process Effects 0.000 description 39
- 241000270722 Crocodylidae Species 0.000 description 12
- 230000009466 transformation Effects 0.000 description 12
- 238000012545 processing Methods 0.000 description 11
- LNNWVNGFPYWNQE-GMIGKAJZSA-N desomorphine Chemical compound C1C2=CC=C(O)C3=C2[C@]24CCN(C)[C@H]1[C@@H]2CCC[C@@H]4O3 LNNWVNGFPYWNQE-GMIGKAJZSA-N 0.000 description 8
- 241000406668 Loxodonta cyclotis Species 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 241000270322 Lepidosauria Species 0.000 description 4
- 238000000844 transformation Methods 0.000 description 4
- 239000003086 colorant Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 239000011521 glass Substances 0.000 description 3
- 230000033001 locomotion Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000003595 spectral effect Effects 0.000 description 3
- 241000270728 Alligator Species 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 239000010432 diamond Substances 0.000 description 2
- 238000009792 diffusion process Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 210000001015 abdomen Anatomy 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 229910003460 diamond Inorganic materials 0.000 description 1
- 230000010339 dilation Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 238000007670 refining Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/203—Drawing of straight lines or curves
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/60—Editing figures and text; Combining figures or text
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/08—Volume rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Abstract
本文描述了用于生成针对由曲线(例如,贝塞尔曲线段)表示的图像的三角形网格的系统和技术。图像的轮廓被确定,并被减小为在边列表中高效表示的连接的多段线的集合。基于边列表生成三角形网格,而不是通过直接对图像的曲线进行采样并将采样用作三角形的顶点来生成三角形网格。因此,用独立于表示图像的多条曲线的多个三角形来生成三角形网格。通过用相对于网格中的三角形的重心坐标来表示采样,来将曲线的采样绑定到三角形网格。因此,一旦网格被变形,采样的位置从经变形的网格中的重心坐标和三角形确定,并用于重建经变形的图像的曲线。
Description
背景技术
图像通常由包括诸如样条(例如,分段多项式)的曲线的矢量图形表示,因为这种表示与分辨率无关,因此可以跨多种分辨率格式保持图像质量。编辑由曲线表示的图像,诸如在工作流程中从图像创建动画序列,传统上涉及基于基点来编辑曲线。这些编辑技术非常耗时,并且需要代表平面设计师的高水平专业知识。
因此,最近开发了编辑技术(例如,动画工作流程),其不直接在图像的曲线表示上进行操作,而是在从诸如三角形的网格(例如,三角形网格)的小图元创建的图像内部的几何图形上进行操作。例如,可以通过迭代地使三角形网格变形来生成动画序列,以在动画序列中生成不同的图像。因此,需要针对由曲线表示的图像生成这种几何形状(例如,三角形网格)的技术。
针对由曲线表示的图像生成三角形网格的一种方法是用三角形网格填充包围图像的最紧密多边形的凸壳(例如,图像的所有曲线位于多边形内)。作为示例,图1图示了根据本公开的一个或多个方面的示例图像100。示例图像100包括艺术品102(例如,鳄鱼)和网格104。网格104由包含艺术品102(例如,鳄鱼)的最紧密多边形的凸壳生成。因此,网格104不仅与鳄鱼重叠,而且与未由鳄鱼表示的区域重叠,诸如鳄鱼腹部下方的区域106和鳄鱼头部和尾部之间的区域,通常在图1中用虚线圆圈表示。例如,区域106包括网格104,但不包括艺术品102。结果,网格104连接鳄鱼的、原本在艺术品102中未连接的组件。因此,当网格106诸如通过选择和拖动在手柄108之一被变形时,鳄鱼可能以不期望的方式变形。例如,移动鳄鱼的尾巴也会移动鳄鱼的头部,移动其中一条鳄鱼的腿也会移动鳄鱼的另一条腿等。因此,从包含图像的最紧密多边形的凸壳生成图像的三角形网格的方法不会为诸如生成动画序列的大多数图形工作流程产生可接受的三角形网格。
为曲线表示的图像生成三角形网格的另一种方法是对图像的曲线进行采样并使用采样点作为三角形网格中的三角形的顶点。虽然这种方法通常克服了上面讨论的凸壳方法的缺点,但是从曲线采样生成的三角形网格的密度不与曲线的密度去耦合。因此,三角形网格可以包含非常大量的三角形(例如,数百万个三角形用于真实的图像的曲线的合理采样),这在大多数图形工作流程中需要大量的计算和计算资源。此外,对于复杂的曲线表示,对曲线进行采样并将采样用作三角形顶点的方法可能缺乏鲁棒性,并且无法在曲线的高复杂度区域中生成三角形网格。
此外,(i)从包围图像的最紧密多边形的凸壳生成图像的三角形网格,以及(ii)对曲线进行采样并使用采样作为三角形的顶点的两种方法,不为由剪切路径遮盖的图像区域生成网格。例如,当图像被插入到诸如盒子、圆形、星形等的边界形状中时,图像的区域可以被边界形状掩盖,从而形成剪切路径。方法(i)和(ii)两者均不为剪切路径之外的区域生成网格,并且当网格被变形时考虑这些区域,因此可能为集成剪切路径的图形工作流程提供不令人满意的结果。
发明内容
描述了用于生成针对由曲线表示的图像的三角形网格的技术和系统,其将三角形网格的密度与图像的曲线的密度解耦。对图像进行栅格化,并生成图像轮廓。轮廓被减少为连接的多段线的集合,这些多段线在边列表中高效地表示。基于边列表中指示的多段线,生成针对图像的三角形网格。因此,三角形网格中的三角形的数目独立于表示图像的曲线的数目,因为三角形网格是从表示图像的轮廓的多段线生成的。通过用相对于网格中的三角形的重心坐标来表示采样来将曲线的采样绑定到网格,包括由网格覆盖的曲线的采样和未被网格覆盖的、由剪切路径遮盖的曲线的采样。三角形网格支持在网格上、而不是曲线上操作的图形工作流程,包括使网格变形以生成经变形的网格,并使用采样的重心坐标来从经变形的网格重建曲线。
本发明内容以简化的形式介绍了一些概念,这些概念将在下面的具体实施方式中进一步描述。因此,本发明内容不旨在标识所要求保护的主题的必要特征,也不旨在用于辅助确定所要求保护的主题的范围。
附图说明
参考附图描述了具体实施方式。在附图中,附图标记的最左边的数字标识首次出现附图标记的图。在说明书和附图中的不同实例中使用相同的附图标记可以指示相似或完全相同的项目。附图中表示的实体可以指示一个或多个实体,因此可以在讨论中将单数或复数形式的实体互换地进行引用。
图1图示了根据本公开的一个或多个方面的示例图像。
图2图示了可操作以采用本文描述的技术的示例实现中的数字媒体环境。
图3图示了根据本公开的一个或多个方面的可用于生成图像的三角形网格的示例系统。
图4图示了根据本公开的一个或多个方面的示例图像。
图5图示了根据本公开的一个或多个方面的示例性连接多段线。
图6图示了根据本公开的一个或多个方面的示例图像。
图7图示了根据本公开的一个或多个方面的示例图像。
图8图示了根据本公开的一个或多个方面的示例图像。
图9图示了根据本公开的一个或多个方面的示例图像。
图10图示了描绘根据本公开的一个或多个方面的示例过程的流程图。
图11图示了描绘根据本公开的一个或多个方面的示例过程的流程图。
图12图示了描绘根据本公开的一个或多个方面的示例过程的流程图。
图13图示了包括示例设备的各种组件的示例系统,该示例设备可以被实现为如参考图1-12描述和/或利用的、用于实现本文描述的技术的各方面的任意类型的计算设备。
具体实施方式
概述
现代图形工作流程对从诸如三角形网格(例如,三角形网格)的小图元创建的图像内部的几何形状进行操作,而不是直接对表示图像(诸如包括样条、多项式样条、贝塞尔曲线段等的矢量图形)的曲线进行操作。由大多数技术生成的三角网格不能准确地连接图像的组件(例如,如上所述,鳄鱼的尾巴通过图1中的网格104被连接到鳄鱼的头部),通常包括非常大量的三角形,因为三角形网格不与图像的曲线去耦合,并且不考虑由剪切路径掩盖的图像的区域。
因此,本公开描述了用于为由曲线表示的图像生成三角形网格的系统和技术,该曲线将三角形网格的密度与图像的曲线的密度解耦合。图像被栅格化,并且图像的轮廓被生成。轮廓可以诸如由多个像素(例如,3个像素)膨胀,以连接从图像的不相交部分得到的不相交的轮廓。轮廓被减小为连接的多段线的集合。多段线将轮廓简化为在其端点处连接的分段线性段集合,并且可以在指示段顶点(例如,端点位置)及其连接的边列表中被高效地表示。当检测到奇点条件时,诸如当两条或更多条多段线是自重叠多段线(例如,共线和重叠)时,多段线可以被自动膨胀(例如,无需用户干预)。
三角形网格是针对连接多段线的内部区域从边列表生成的。因此,三角形网格中的三角形的数目独立于表示图像的曲线的数目,因为三角形网格是从表示图像的轮廓的多段线生成的。三角形网格可以受制于任意合适的约束而被生成,诸如约束网格的三角形以具有至少最小角度(例如,20度)并且包括不多于经栅格化的图像的最大数目的像素(例如,256个像素)。三角形网格可以针对图像中的一个或多个对象而被生成,并且由用户指定以保持为单独的三角形网格(例如,因此它不与图像中的另一个对象的另一个三角形网格合并)。附加地或替代地,可以通过使一个或多个三角形网格膨胀来联接两个或更多个三角形网格,从而连接图像中的两个或更多个对象,使得它们的运动被耦合。
通过对曲线进行采样来确定曲线的采样。每条曲线的采样的数目可以基于曲线的长度(或曲线的一段的长度)。通过用相对于网格中的三角形用坐标(例如,重心坐标)表示采样来将曲线的采样绑定到三角形网格。重心坐标对应于用于表示三角形内的点的三角形的顶点的唯一组合。当存在遮盖图像区域的剪切路径以使三角形网格不覆盖该区域时,通过计算采样相对于相应的最近三角形的重心坐标,区域内的曲线采样被绑定到网格中的相应最近三角形。因此,尽管区域没有被三角形网格重叠,但是剪切路径外部的图像区域可以通过三角形网格变形。为了加速绑定过程并高效地确定相应的最近三角形,使用边界体积层级结构。矩形被确定为三角形网格中三角形的边界体积,并且搜索边界体积层级结构的矩形以确定网格中的相应三角形。
三角形网格支持对三角形网格进行操作的图形工作流程,包括使网格变形以产生经变形的网格并且从经变形的网格重建曲线。例如,获得经变形的网格中的三角形的位置,并且与采样的重心坐标一起提供足够的信息以计算变形之后的采样的新位置。基于采样的新位置重建曲线。因此,重建图像可以不仅通过在三角形网格上操作的图形工作流程,而且还通过在曲线本身上操作(诸如通过编辑曲线的基点)的图形工作流程来进一步处理。
在以下讨论中,描述了可以采用本文描述的技术的示例数字媒体环境。然后描述示例实现细节和过程,其可以在示例数字媒体环境以及其他环境中执行。因此,示例过程的执行不限于示例环境,并且示例环境不限于示例过程的执行。
示例数字媒体环境
图2是可操作用于采用本文描述的技术的示例实现中的数字媒体环境200的图示。如本文所使用的,术语“数字媒体环境”指的是可以用于实现本文描述的技术的各种计算设备和资源。图示的数字媒体环境200包括具有至少一个计算设备的用户202。在图2的示例中,用户202被图示为具有三个计算设备,计算设备204-1、204-2和204-3(统称为204)。例如,计算设备204-1描绘台式计算机,计算设备204-2描绘平板计算机或智能电话,并且计算设备204-3描绘一副眼镜(例如,智能护目镜)。计算设备204是示例计算设备,并且可以预期任意合适的计算设备,诸如移动电话、平板计算机、膝上型计算机、台式计算机、游戏设备、护目镜、眼镜、相机、数字助理、回声设备、图像编辑器、非线性编辑器、数字音频工作站、复印机、扫描仪等。此外,对计算设备204之一的讨论不限于该计算设备,而是通常应用于计算设备204中的每一个。此外,计算设备204的范围可以是具有大量存储器和处理器资源的完整资源设备(例如,个人计算机、游戏控制台)到具有有限存储器或处理资源的低资源设备(例如,移动设备)。
可以使用各种类型的输入设备和输入工具来向计算设备204提供输入。例如,计算设备204可以将输入识别为鼠标输入、手写笔输入、触摸输入、通过自然用户界面提供的输入等等。因此,计算设备204可以识别多种类型的手势,包括通过自然用户界面提供的触摸手势和手势。在一个示例中,计算设备204包括语音识别、标识和合成功能、麦克风和扬声器,其允许计算设备204在例如用户对话的对话中与用户202通信。
此外,计算设备204可以代表一个或多个不同的设备,诸如连接到网络、执行如关于图13进一步描述的“在云上”的操作的一个或多个设备。在一个示例中,计算设备204诸如利用低功率无线通信标准(例如,蓝牙协议)彼此通信地耦合。例如,计算设备204-1可以与计算设备204-2和计算设备204-3无线通信。因此,可以将在一个设备(例如,计算设备204-1)上生成、处理(例如,编辑)或存储的资产(例如,图像、视频、文本、绘图、文档、文件等)传送到另一设备(例如,计算设备204-3),并在另一设备(例如,计算设备204-3)上显示和处理。
在图2所图示的示例中,计算设备204-1获得图像206。图像206是资产的示例,并且可以以诸如从另一计算设备、从计算设备204-1上的文件存储装置等以任意合适的方式获得。在一个示例中,图像206由曲线表示,诸如n阶多项式样条(例如,n=1、2、3或4)、贝塞尔曲线段、其组合等。在图2的示例中,用户202用图像图形系统208编辑图像206以生成重建图像210。例如,图像图形系统208生成用于图像206的三角形网格,用户202变形图像206以产生重建图像210(在下文更详细地讨论)。重建图像210可以包括利用图像图形系统208基于图像206生成的任意数目的重建图像。在图2的示例中,图像206描绘了人蹲伏,并且重建图像210包括如图像206中所示的蹲伏人,接着是人跳过桶的动画序列中的十二个重建图像。
计算设备204还被耦合到网络212。网络212将计算设备204与服务器214通信地耦合(为了清楚起见,图2中仅将计算设备204-1示为耦合到网络212,尽管计算设备204-2204-3也可以经由网络212被耦合到服务器214)。网络212可以包括各种网络,诸如因特网、内联网、局域网(LAN)、广域网(WAN)、个域网(PAN)、蜂窝网络、地面网络、卫星网络、网络组合等等,并且因此可以是有线的、无线的或其组合。
服务器214可以包括向计算设备204提供服务和/或资源的一个或多个服务器或服务提供商。通常,服务器214提供的资源可以被许可、购买或者可以免费获得(例如,没有验证、许可证或基于帐户的访问)。资源可以包括服务和内容的任意合适的组合,诸如由一个或多个提供商通过网络212使得可用。服务的一些示例包括但不限于在线购物服务、照片编辑服务、web开发和管理服务、协作服务、社交联网服务、消息传送服务、广告服务、图形设计服务、图像存储服务(包括照片、文档、记录、文件等的存储)、图形编辑服务、资产分发服务等。内容可能包括各种资产组合,包括视频、广告、音频、多媒体流、动画、图像、网络文档、网页、应用、设备应用、文本文档、绘图、演示文稿、库存照片、用户简档、用户首选项、用户数据(例如,在图像图库中存储的图像)、地图、计算机代码等。资产可以对图像图形系统208、图形支持系统216或其组合可用,并存储在服务器214的资产218处。因此,图像206可以包括在服务器214的资产218处存储的资产的任意合适的图像。
此外,服务器214包括图形支持系统216,其可配置为从计算设备204接收信号,处理接收的信号,并将处理后的信号发送到计算设备204,以支持生成针对由曲线表示的图像的三角形网格,并从变形的网格生成重建的曲线。例如,计算设备204-1可以获得由曲线表示的图像,生成针对图像的三角形网格,接收用于使网格变形的用户输入,以及向服务器214传送任意合适的数据(例如,经变形的网格中的三角形位置和曲线的采样相对于三角形网格中的三角形的重心坐标)。使用图形支持系统216的服务器214可以从三角形位置和重心坐标计算曲线的采样的新位置,并从新的位置来生成重建的曲线(例如,新的Bezier曲线)。然后,服务器214可以将具有重建的曲线的重建的图像提供回计算设备204-1,计算设备204-1可以显示重建的图像。因此,服务器214的图形支持系统216可以包括图像图形系统208的副本,包括图像图形应用242(下面更详细地讨论)。
计算设备204包括图像图形系统208,以生成由曲线表示的图像的三角形网格,使三角形网格变形,并从经变形的网格中生成图像的重建曲线。为清楚起见,计算设备204-3在图2中被图示为包括图像图形系统208,但是计算设备204-1和计算设备204-2还包括图像图形系统208(未图示)的副本。
图像图形系统208包括显示器220。显示器220可以展露由图像图形系统208使用或与图像图形系统208相关联的任意合适的数据。在一个示例中,显示器220显示用户界面,用于展露资产、图像、三角形网格、元数据(例如,边列表、三角形网格中的三角形的顶点的位置,图像的曲线的采样相对于网格中的三角形的重心坐标等)、多段线、轮廓、手柄、锚、它们的组合等。显示器220可以展露可配置为例如通过使网格变形来编辑图像的用户界面。显示器220可包括任意合适类型的显示器,诸如触摸屏、液晶显示器、等离子显示器、头戴式显示器、投影仪和屏幕等。
图像图形系统208还包括处理器222。因此,图像图形系统208可以至少部分地通过在处理器222上执行在存储装置224上存储的指令来实现。例如,处理器222可以执行图像图形应用242的部分。
存储装置224可以是图像图形系统208可访问或包含在图像图形系统208中的任意合适类型的存储装置。存储装置224针对任意合适类型的数据,存储并提供对和来自存储装置224中包括的存储器的访问。例如,存储装置224包括图像数据226(例如,图像的曲线、根据曲线生成的图像的图形(例如、添加颜色)、诸如位图、像素数据或其组合的栅格化的图像、诸如管理图像的使用权的数据的图像的元数据、图像的源位置、表示图像的曲线的数目、呈现图像的曲线的类型、生成图像的日期等、图像的灰度版本、图像的副本等)。
存储装置224还包括轮廓数据228(例如,指示图像(例如,部分)中的一个或多个对象的一个或多个轮廓的数据、在轮廓(例如,像素链)中包括的图像的像素、诸如轮廓已被膨胀的像素的数目的轮廓的膨胀参数、轮廓是否是不相交的指示、用于使轮廓膨胀因此它将不再是不相交的像素数目的建议等等)。
存储装置224还包括多段线数据230(例如,指示多段线的顶点的边列表、多段线的数目、多段线的长度、多段线所属的轮廓的指示符(例如,轮廓编号)、多段线是否包括奇点条件的指示符(诸如自重叠多段线(例如,共线和重叠的多段线))、用于使一条或多条多段线膨胀的膨胀参数等)。
存储装置224还包括网格数据232(例如,网格中的图元(例如,三角形)的描述(诸如顶点坐标的三元组,每个三元组表示网格中的三角形)、网格中的三角形的数目、三角形的参数(诸如,三角形的角度、三角形覆盖的区域(例如,像素数)、当生成网格时使用的约束(诸如网格中三角形的最小角度)、三角形的最大尺寸、用于生成网格的算法的指示符或算法的参数、在网格的顶点处的、可操作以使网格变形(例如,用户可以选择并拖动手柄以使网格变形)的手柄(例如,用户插入的手柄)、在网格的顶点处的、可操作以防止网格的变形的锚(例如,用户插入的锚)(例如,锚点可以保持在固定位置处并且网格可以通过围绕该位置旋转网格而不是从位置移动锚而变形)、图像中的不相交的网格的数目、是否已连接两个或更多网格的指示符、将作为单独网格维持的网格的指示符(例如,未与其他网格连接)、网格的通胀参数等)。
存储装置224还包括采样数据234(例如,与图像的曲线的采样有关的数据,诸如每条曲线或曲线的段的采样数(例如,构成样条的多项式部分)、采样相对于网格中的三角形的坐标(例如,重心坐标)、用于生成采样的约束(诸如每个段的最小或最大采样数)、采样之间的间距,用于表示采样的值的分辨率(例如,采样值的位宽)、包括相应三角形网格的索引的元组、网格中的相应三角形的索引、以及采样相对于相应三角形的重心坐标等)。
存储装置224还包括曲线数据236(例如,关于图像的曲线的数据,诸如曲线的数目、曲线类型、曲线的表示(例如、样条数据)、曲线的位置、曲线的多项式的阶数、贝塞尔曲线段的基点、曲线的差异(例如,图像的原始曲线和由图像图形系统208基于变形的网格生成的重建曲线的差异)、曲线列表等)。
此外,图像图形系统208包括收发器模块238。收发器模块238表示被配置为使用任意合适类型和数目的通信协议发送和接收数据的功能。例如,图像图形系统208内的数据可以利用收发器模块238被发送到服务器214。此外,可以利用收发器模块238从服务器214接收数据。收发器模块238还可以在计算设备204之间发送和接收数据。
图像图形系统208还包括资产模块240。资产模块240表示被配置为维护资产的功能。例如,资产模块240可以管理用户的图像库,包括在用户的图像编辑应用中存储的图像。此外,资产模块240将用户在计算设备204之一上操纵或从计算设备204之一操纵的资产集成到在存储装置224上存储的资产的图库中,诸如用户在来自计算设备204之一的社交媒体帖子或博客中发布的图像、用户已附加到电子邮件、文本或从计算设备204发送或由计算设备204接收的其他通信的图像等。资产模块240还管理和存储由图像图形系统208处理的资产。资产模块240使来自由资产模块240维护的库的资产可用于图像图形应用242。通过维护和管理合适的资产(例如,用户偏好的资产),资产模块240可以快速高效地向图像图形应用242提供资产。在一个示例中,由资产模块240维护的资产被预先显示在由图像图形应用242生成的用户界面中,作为可以由诸如用户202的用户选择的建议,以用于包括在编辑工作流程中,该编辑工作流程使用图像的三角形网格来诸如在动画序列中使图像变形。由资产模块240维护的资产可以存储在图像数据226中。
图像图形系统208还包括图像图形应用242。图像图形应用242包括图像检索模块244、栅格化模块246、轮廓生成模块248、多段线模块250、网格生成模块252、采样绑定模块254、网格变形模块256、和曲线重建模块258。这些模块彼此协同工作以生成用于由曲线表示的图像的三角形网格,并且从经变形的网格生成重建图像的重建曲线,该经变形的网格诸如由用户对网格上的控制点(例如手柄和锚)的操纵或网格到变形网格的任意合适的转换引起的。
此外,尽管图像图形系统208和图像图形应用242的描述描述了生成图像的三角形网格,并且图像图形系统208可以生成具有任意合适图元的合适网格,诸如三角形、正方形、矩形、菱形、梯形、六边形、多边形、它们的组合等。三角形图元被描述为由图像图形应用242生成的网格中的图元的示例。
图像检索模块244表示被配置为获得由多条曲线表示的图像的功能。图像检索模块244可以以任意合适的方式获得任意合适的图像。在一个示例中,图像检索模块244从图像数据库获得图像,诸如由资产模块240维护的图库或由资产218中的服务器214维护的数据库。附加地或替代地,图像检索模块244可以从存储装置224获得已经由曲线重建模块258从经变形的网格重建的图像(例如,重建的图像)。
由图像检索模块244获得的图像可以是任意合适类型的图像,诸如独立图像(例如,与其他图像不相关的图像)、图像序列中的图像(例如、动画序列、视频、书的章节中的页面、幻灯片放映中的幻灯片等)、或其组合。在一个示例中,通过图像检索模块244获得的图像是从包含除图像之外的其他类型的媒体的资产(诸如包含图像和文本的网页)中提取的。
此外,由图像检索模块244获得的图像的曲线可包括任意合适类型的曲线,诸如包括贝塞尔曲线的分段的段的样条、任意合适阶的多项式(例如,二次、三次、四次等)、线、图元形状,诸如正方形、矩形、三角形、圆形、椭圆形、多边形、它们的组合等。在一个示例中,图像检索模块244获得由包括贝塞尔曲线段的曲线表示的图像。附加地或替代地,图像检索模块244获得由三次样条表示的图像。
图像检索模块244获得的图像,以及由图像检索模块244使用或计算的任意合适的信息,诸如图像的源位置、图像的文件格式、图像是否与其他图像相关的指示(诸如在动画序列中的序列号)、图像元数据(例如,关于表示图像的曲线的信息)等,被存储在存储装置224的图像数据226中并且可用于图像图形应用242的模块。在一个示例中,图像检索模块244将图像提供给栅格化模块246,并将图像的曲线提供给采样绑定模块254。
栅格化模块246表示被配置为将图像栅格化为经栅格化的图像的功能。由栅格化模块246生成的经栅格化的图像可以是任意合适类型的经栅格化的图像,诸如位图、像素值、点阵数据结构、其组合等。在一个示例中,经栅格化的图像包括具有透明度参数(例如,α通道)的灰度图像,以用透明度参数的百分比表示图像中的像素的透明度。此外,由栅格化模块246生成的经栅格化的图像可以包括任意合适数目的栅格元素(例如,像素),其值由任意合适类型的数据表示,诸如位数、坐标系中的值(例如,颜色坐标系)、它们的组合等。
栅格化模块246可以诸如基于用户指定的参数(例如,用户指定的关于像素数目的分辨率),基于分析图像(例如,用于光谱内容)并基于分析结果确定分辨率(例如,针对与具有较低光谱内容的图像相比具有更高光谱内容的图像使用更多数目的像素),根据默认分辨率等,以任意合适的方式栅格化图像。
由栅格化模块246生成的经栅格化的图像以及由栅格化模块246使用或计算的任意合适的信息,诸如经栅格化的图像中的多个栅格元素(例如,像素)、图像的元数据、用于生成经栅格化的图像的栅格化方法的指示符、透明度参数等,被存储在存储装置224的图像数据226中并且可用于图像图形应用242的模块。在一个示例中,栅格化模块246将经栅格化的图像提供给轮廓生成模块248。
轮廓生成模块248表示被配置为生成经栅格化的图像的一个或多个相应部分的一个或多个轮廓的功能。经栅格化的图像的一个或多个部分可以由用户确定,诸如在由显示器220展露的用户界面中选择的。在一个示例中,经栅格化的图像的一个或多个部分通过轮廓生成模块248,通过分析权栅格化的图像的内容,诸如用被训练的用于区分图像中的对象的神经网络,来自动地确定,并且没有用户干预。
由轮廓生成模块248生成的轮廓包括像素链。图像的对象或部分的轮廓表示图像的对象或部分的边界。因此,轮廓内部的像素表示图像的对象或部分,而轮廓外部的像素不表示图像的对象或部分。
轮廓生成模块248可以以任意合适的方式生成一个或多个轮廓。在一个示例中,从灰度栅格化图像确定第一轮廓,诸如对应于图像中的对象、图像的一部分或其组合。然后,轮廓生成模块248通过合并位于接近度小于膨胀量的轮廓来使第一轮廓膨胀。例如,彼此的像素量(例如,3个像素)内的轮廓被合并成一个轮廓。膨胀量(例如,3个像素)可以是用户可选择的或通过轮廓生成模块248自动确定的(例如,无需用户干预)。附加地或替代地,轮廓生成模块248可以检测到已经为图像中的相同对象生成了两个或更多个不相交的轮廓,并使不相交的轮廓膨胀,以将不相交的轮廓合并为对象的单个轮廓。
在一个示例中,由轮廓生成模块248生成的轮廓由显示器220在用户界面中被展露,并且可以由用户编辑,诸如校正或改进轮廓。例如,用户可以选择轮廓并拖动它以改变其形状、位置或其组合,使得轮廓更好地对应于期望的对象或图像的部分。
由轮廓生成模块248生成的轮廓以及由轮廓生成模块248使用或计算任意合适的信息,诸如轮廓的数目、每个轮廓的指示符、轮廓中包括的像素的指示、用于确定轮廓的膨胀值等等被存储在存储装置224的轮廓数据228中,并且可用于图像图形应用242的模块。在一个示例中,轮廓生成模块248向多段线模块250提供轮廓。
多段线模块250表示被配置为确定边列表的功能,该边列表指示表示由轮廓生成模块248生成的轮廓的多条多段线。由多段线模块确定的边列表可以是任意合适的格式和样式的边列表。在一个示例中,边列表包括多段线的顶点(例如,每条多段线的起点和终点)以及多段线如何连接的指示。例如,正方形轮廓的边列表可以包括四个顶点(例如,正方形的角)和用于将正方形的四个角用不包括对角多段线的四条多段线连接的指令。因此,由多段线模块250确定的边列表描述了多段线如何通过将每条多段线的一端连接到另一个相应的多段线而被彼此连接,使得所连接的多段线的所得形状表示由轮廓生成模块248生成的轮廓。不是通过可能需要大量存储器和资源的像素链来描述轮廓,多段线模块250将轮廓的表示减少到在边列表中表示的连接多段线集合,其比像素链需要少得多的资源。
在一个示例中,多段线模块250使用Ramer-Douglas-Peucker(RDP)算法确定轮廓的边列表,以将轮廓减少到连接的多段线集合并且表示边列表中的多段线。RDP算法是用于减少由一系列点近似的曲线中的点的数目的算法。例如,RDP算法可以实现为迭代终点拟合算法,该算法采用由多段线组成的曲线并找到具有较少点的类似曲线。
此外,多段线模块250可以在没有用户干预的情况下自动检测边列表中表示的多段线的奇异性条件,诸如会阻碍网格生成或导致网格生成失败的条件。奇异性条件的一个示例是自重叠多段线,例如,沿线重叠的共线多段线。响应于检测到奇异性条件,多段线模块250可以在没有用户干预的情况下自动地使一条或多条多段线膨胀以校正奇异性条件,诸如使自重叠多段线不再沿着线重叠(下面将更详细地参考图5进行描述)。附加地或替代地,多段线模块250可以为用户提供校正机制以移动一条或多条多段线的端点,从而修改由连接的多段线表示的边界的形状和位置。响应于自动地或由用户启动的对一条或多条多段线的修改,多段线模块205为修改的多段线生成边列表。
由多段线模块250生成的边列表以及由多段线模块250使用或计算的任意合适的信息,诸如每个轮廓的多段线的数目、轮廓的数目、多段线所属的、或边列表属于的轮廓的指示符、由RDP算法执行的生成边列表的迭代次数、用于确定边列表的膨胀值等,被存储在存储装置224的多段线数据230中并且可用于图像图形应用242的模块。在一个示例中,多段线模块250向网格生成模块252提供边列表。
网格生成模块252表示被配置为生成网格的功能。网格生成模块252为由轮廓生成模块248生成的一个或多个轮廓中的每一个生成相应网格(例如,三角形网格)。例如,每个轮廓由在多段线模块250生成的边列表中指示的连接多段线表示,并且网格生成模块252基于边列表中指示的连接多段线生成网格。网格生成模块252针对由根据由多段线模块250接收的边线列表连接的多段线包围的图像区域,生成网格。网格生成模块252可以生成任意合适类型的网格,诸如三角形网格(例如,由三角形图元组成的网格)。
网格生成模块252可以以任意合适的方式生成网格。在一个示例中,网格生成模块252基于Delaunay三角剖分生成网格,如在Triangle:Engineering A 2D Quality MeshGenerator and Delaunay Triangulator by Shewchuk,J.R.(1996),AppliedComputational Geometry Towards Geometric Engineering,Lecture Notes inComputer Science,vol.1148,pp.203-222,Springer,Berlin,Heidelberg中所描述,其公开内容通过引用整体并入本文。
网格生成模块252可以基于任意合适的约束生成网格,诸如约束网格的三角形以具有至少最小角度(例如,20度),约束网格的三角形以包括不超过经栅格化的图像的最大数目的像素(例如,不超过256个像素),约束网格的三角形以至少包括经栅格化的图像的最小数目的像素(例如,至少32个像素),其组合等。
此外,网格生成模块252可以将控制点(例如,手柄和锚)添加到由网格生成模块252生成的网格的三角形的顶点。手柄可以由用户在三角形顶点处插入,并且可操作以使网格变形。例如,用户可以选择并拖动手柄以使网格变形。锚也可以由用户在三角形顶点处插入,并且可操作以防止网格的变形。作为示例,锚点可以保持在固定位置,并且网格可以通过围绕该位置旋转网格而变形,而不是在网格变形时从位置移动锚。
网格生成模块252可以以任意合适的方式表示网格。在一个示例中,网格生成模块252表示具有顶点的三元组(例如,顶点的坐标)的网格,每个三元组表示网格中的三角形。附加地或替代地,网格的顶点列表及其位置(例如,坐标)可以由网格生成模块252生成,并且网格中的每个三角形可以由顶点索引的三元组表示(例如,顶点列表上的数目)。可以从顶点列表确定顶点的坐标。
此外,网格生成模块252可以将网格保持为分离的网格。例如,用户可以指示网格将与另一网格保持分离(例如,不与另一网格合并)。作为示例,用户可能希望保持表示第一对象(例如,蜥蜴)的网格与蜥蜴吃苍蝇的图像中的另一对象(例如,苍蝇)的网格分离,从而使蜥蜴变形以移动蜥蜴不会扭曲苍蝇。附加地或替代地,网格生成模块252可以将两个或更多个网格合并为单个网格。例如,用户可以指示使一个或多个网格膨胀以将网格合并为单个网格。作为一个示例,马的网格可以与马被拖曳的马车的网格连接,使得单个网格可以变形以修改马和马车两者。
由于网格生成模块252基于边列表中描述的多段线生成网格以表示图像(或图像的一部分)的轮廓,而不是表示图像的图形(例如,矢量图形)的曲线,由网格生成模块252生成的网格的密度(例如,网格中的三角形的数目)独立于表示图像的曲线的密度(例如,表示图像的曲线的数目)。因此,网格生成模块252生成均匀且平滑的网格(例如,三角形可以是大致相同的大小,并且三角形的数目不是太大而不需要过大的计算或存储)。
网格生成模块252生成的网格,以及由网格生成模块252使用或计算的任意合适的信息,诸如网格的数目、每个网格的三角形的数目、指示网格中三角形的三元组、用于确定合并网格的膨胀值、网格作为单独的网格被维持的指示符等,被存储在存储装置224的网格数据232中并且可用于图像图形应用程序242的模块。在一个示例中,网格生成模块252将网格提供给采样绑定模块254和网格变形模块256。
采样绑定模块254表示被配置为将表示图像的曲线绑定到网格的功能。采样绑定模块254通过对曲线进行采样并将曲线的采样绑定到网格来将曲线绑定到网格。可以以任意合适的方式确定曲线的采样。在一个示例中,采样绑定模块254基于曲线的长度或曲线的段的长度(例如,样条中的多项式的长度)自适应地生成表示图像的曲线的采样。例如,可以从曲线的长度确定每个曲线或每个段的采样的数目(例如,与较短的曲线相比,可以用更多采样和不同的采样间隔对更长的曲线进行采样)。
采样绑定模块254可以以任意合适的方式将曲线绑定到网格。在一个示例中,采样绑定模块254通过使用采样相对于网格中的相应三角形的坐标来表示多个曲线的采样,将多个曲线绑定到网格。例如,采样绑定模块254针对采样绑定模块254生成的采样确定相应的网格索引(例如,当包括多个网格时网格的指示符)和包含采样的网格中的相应三角形(例如,采样位于网格中的相应三角形内)。然后,采样绑定模块254确定采样相对于网格中的相应三角形的坐标。
采样相对于三角形的坐标可以是任意合适的坐标,其可用于从三角形的位置确定采样的位置。在一个示例中,采样绑定模块254确定采样相对于网格中的相应三角形的重心坐标。重心坐标是数字集合,该数字集合唯一地描述三角形中的点相对于三角形顶点的位置。例如,考虑由其三个顶点r1、r2和r3定义的三角形。位于三角形内部的点r可以写为三个顶点r1、r2和r3的唯一线性凸组合。也就是说,存在三个非负数λ1,λ2,和λ3的唯一集合,它们总和为单位一(例如λ1+λ2+λ3=1),使得
r=λ1·r1+λ2·r2+λ3·r3。
该数字的集合λ1,λ2,和λ3是点r相对于由顶点r1,r2和r3定义的三角形的重心坐标。因此,三角形内的任意点可以通过其相对于三角形的重心坐标来表示。
就笛卡尔坐标而言,例如r=(x,y),点r的重心坐标表示为三角形顶点的分量的线性、凸起组合,或者
x=λ1·x1+λ2·x2+λ3·x3
y=λ1·y1+λ2·y2+λ3·y3
其中ri=(xi,yi),i=1,2,3。
附加地或替代地,采样绑定模块254可以确定不位于网格中的三角形中的曲线的采样的重心坐标。例如,在网格生成模块252不生成网格以覆盖整个图像的情况下,图像的区域可以包含不位于网格的三角形内的曲线采样。当存在使图像的一部分被遮盖的剪切路径时(参见下面参照图9更详细地讨论),可能发生这种情况。为了将这些未覆盖的采样绑定到网格中,尽管采样未被网格覆盖,采样绑定模块254确定网格中与采样最近的三角形,并通过生成采样相对于网格中最近的三角形的重心坐标来将采样绑定到最近的三角形。由于采样不在最近的三角形内,因此重心坐标可以大于单位一或小于零(例如,负),但是重心坐标总和为单位一的条件仍然成立。这并不妨碍曲线重建模块258从经变形的网格中的三角形顶点的位置和采样的重心坐标确定经变形的网格中的采样的位置,尽管一个或多个重心坐标大于单位一或者负。
在一个示例中,为了加速绑定过程并高效地确定网格中的以将采样绑定到的相应三角形,采样绑定模块254使用边界体积层级。矩形被确定为三角形网格中三角形的边界体积,并且搜索边界体积层级的矩形以确定网格中的相应三角形。搜索矩形可以包括将矩形分成象限并确定采样是否在相应的象限中,并确定与相应象限相关联的相应三角形。通过使用边界体积层级来确定采样是否首先在矩形的相应象限中,然后将三角形与相应的象限相关联,而不是直接搜索三角形以确定将采样绑定到的相应三角形,采样绑定模块254可以高效地将曲线的采样绑定到三角形网格中的三角形,使得图像图形应用可以实时地(例如,对用户没有可察觉的延迟)生成图像(例如,重建的图像)。
此外,采样绑定模块254可以以任意合适的方式表示曲线采样和采样到网格的绑定。在一个示例中,采样绑定模块254将采样表示为元组,该元组包括相应三角形网格的索引(例如,图像可以包括由轮廓生成模块248生成的多个轮廓的多个网格,并且索引表示多个网格中的一个)、相应三角形网格中的、所述采样被绑定到的相应三角形的索引、以及采样相对于所述采样被绑定的相应三角形的坐标(例如,重心坐标)。在一个示例中,采样的元组表示包括相应采样的所有三个重心坐标(例如,λ1、λ2和λ3)。附加地或替代地,采样的元组表示可以仅包括采样的三个重心坐标中的两个(例如,λ1、λ2和λ3中的任意两个),并且可以从重心坐标和为单位一的约束来计算采样的第三个坐标。
由采样绑定模块254生成的采样绑定到网格的表示,以及由采样绑定模块254使用或计算的任意合适的信息,诸如被绑定到网格内的三角形的、网格外的采样的数目、是否使用了边界体积层级以加速绑定过程的指示、绑定到每个网格的采样数目、曲线长度、曲线的段的长度、每条曲线的段或每条曲线的采样数目、网格和三角形索引以及重心坐标的元组等等,被存储在存储装置224的采样数据234中使其可用于图像图形应用程序242的模块。在一个示例中,采样绑定模块254将网格和三角形索引以及重心坐标的元组提供给曲线重建模块258。
网格变形模块256表示被配置为将网格变形为经变形的网格的功能。网格变形模块256可以以任意合适的方式将网格变形为经变形的网格。在一个示例中,网格变形模块256用网格顶点上的一个或多个手柄将网格变形为经变形的网格。例如,用户可以选择手柄并拖动手柄,从而使网格变形(例如,改变网格中的一些三角形的形状和位置)。此外,用户可以用网格上的锚点对网格进行变形,锚点将其位置保持在变形的网格上。作为示例,用户可以选择手柄并通过拖动手柄来使网格变形,这使网格变形而不移动网格的锚点。
此外,网格变形模块256可以使用在网格(例如,三角形网格)上操作的任意合适的转换或工作流程来使网格变形以产生变形的网格。在一个示例中,通过网格变形模块256将蒙皮转换应用于网格以产生经变形的网格。蒙皮转换在Alec Jacobson等人在ACMTransactions on Graphics,Volume 31,Issue 4,Article 77,July 2012的FastAutomatic Skinning Transformations中描述,其公开内容通过引用整体并入本文。
附加地或替代地,可以通过网格变形模块256将使用扩射曲线的工作流程应用于网格以产生经变形的网格。使用扩散曲线的工作流程在S.Boyé等人在ACM Transactionson Graphics,Volume 31,Issue 6,Article 173,Nov.2012的A Vectorial Solver ForFree-Form Vector Gradients中描述,其公开内容通过引用整体并入本文。
附加地或替代地,可以通过网格变形模块256将使用矢量场的工作流程应用于网格以产生经变形的网格。使用矢量场的工作流程在F.do Goes等人在ProceedingsSIGGRAPH,Article 17,Kobe,Japan,Nov.02-06,2015,ACM,New York,NY的Vector FieldProcessing On Triangle Meshes中描述,其公开内容通过引用整体并入本文。
在一个示例中,网格变形模块256将权重分配给网格的顶点,诸如根据网格如何分布在区域或形状上。当网格诸如通过拖动手柄变形时,网格变形模块256基于权重的线性组合确定网格上的顶点的新权重,并基于新权重来确定经变形的网格中的顶点的新位置。
附加地或替代地,由网格变形模块256生成的经变形的网格与网格生成模块252对网格应用的约束一致地生成。例如,网格变形模块256可以约束经变形的网格的三角形以具有至少最小角度,以包括不大于经栅格化的图像的最大数目的像素,以包括经栅格化的图像的至少最小数目的像素,其组合等。
此外,网格变形模块256可以以任意合适的方式表示经变形的网格。在一个示例中,网格变形模块256表示具有顶点坐标三元组的经变形的网格,每个三元组表示经变形的网格中的三角形。附加地或替代地,经变形的网格的顶点列表及其位置(例如,坐标)可以由网格变形模块256生成,并且经变形的网格中的每个三角形可以由顶点索引的三元组(例如,在顶点列表上的数字)表示。
由网格变形模块256生成的经变形的网格以及由网格变形模块256使用或计算的任意合适的信息,诸如关于经变形的网格的三角形的数据(例如,最小和最大角度、区域等)、指示经变形的网格的三角形的三元组、应用于网格以产生经变形的网格的转换、工作流程和编辑的列表、经变形的网格以及用于产生经变形的网格的网格中的三角形的位置差异等,被存储在存储装置224的网格数据232中,并使得可用于图像图形应用242的模块。在一个示例中,网格变形模块256向曲线重建模块258提供经变形的网格(例如,经变形的网格中三角形顶点的三元组)。
曲线重建模块258表示被配置为从经变形的网格重建图像的曲线,并从重建曲线生成重建图像的功能。曲线重建模块258可以以任意合适的方式重建图像的曲线。在一个示例中,曲线重建模块258从采样被绑定到的经变形的网格中的相应三角形的位置以及采样相对于相应三角形的坐标(例如,重心坐标)来确定采样绑定模块254中生成的曲线的采样的新位置。例如,一旦网格变形,三角形的顶点可以相对于变形前的网格改变经变形的网格中的位置。由于采样的重心坐标将采样绑定到网格中的三角形,使用重心坐标和经变形的网格中的相应三角形的顶点的新位置,可以确定经变形的网格中的采样的新位置。然后,曲线重建模块258可以从采样的新位置生成重建曲线。生成重建曲线可以包括从采样的新位置确定曲线的基点(例如,贝塞尔样条、贝塞尔曲线段、多项式等)。例如,诸如通过最小化均方误差的曲线拟合可以被执行以基于由曲线重建模块258确定的采样的新位置来获得贝塞尔曲线段的新基点。
曲线重建模块258从重建的曲线生成重建图像。曲线重建模块258可以以任意合适的方式从重建的曲线生成重建的图像。在一个示例中,曲线重建模块258将重建的曲线集成到由重建的曲线表示的重建图像中。附加地或替代地,曲线重建模块258可以基于重建的曲线诸如通过添加颜色、阴影、图案等将图形应用于重建的图像(例如,用指定颜色填充具有的曲线之间的区域)。
由曲线重建模块258生成的重建曲线和重建图像以及由曲线重建模块258使用或计算的任意合适的信息,诸如曲线拟合数据、采样位置、基点等,被存储在存储装置224的曲线数据236中,并且可用于图像图形应用242的模块。在一个示例中,曲线重建模块258将重建图像的重建曲线提供给要在用户界面中暴露的显示器220。
已经考虑了示例数字媒体环境,现在考虑根据本公开的一个或多个方面的可用于生成图像的三角形网格的示例系统的讨论。
示例图像图形系统
图3图示了根据本公开的一个或多个方面的可用于生成图像的三角形网格的示例系统300。在该实现中,系统300包括如图2所述的图像图形应用242的模块,例如图像检索模块244、栅格化模块246、轮廓生成模块248、多段线模块250、网格生成模块252、采样绑定模块254、网格变形模块256和曲线重建模块258。系统300是可以使用图像图形应用242的模块构造的图像图形系统208的一个示例。例如,并且在不改变系统300的功能的情况下,信号可以重新定义,模块可以被修改、组合,划分、添加或移除以形成修改的系统。因此,这种修改的系统被认为是在本公开的范围内。
此外,为简单起见,系统300限于图像图形应用程序242的模块和它们的一些互连的描述。然而,系统300可以包括为简单起见而省略的模块之间的任意合适的信号和通信。这些信号可以包括系统时钟、计数器、资产或图像指示符、序列指示符、重置信号等。在一个示例中,系统300可以实时操作(例如,一旦接收到用户选择就没有可察觉的延迟)。因此,信号可以由系统300的模块计算并且在系统300的模块之间通信而没有显着延迟,从而可以生成三角形网格(例如,变形的网格)并且可以从变形的网格中重建图像的曲线,而没有对于用户可察觉的延迟。
此外,系统300可以在任意合适的一个或多个设备上实现。在一个示例中,系统300在一个计算设备(例如,图2中的计算设备204之一)上实现。在另一示例中,系统300在多于一个计算设备上实现。例如,系统300的部分可以由第一计算设备实现,诸如图2中的计算设备204-1,并且系统300的其他部分可以由附加的一个或多个计算设备实现,诸如计算设备204-2。在一个示例中,诸如图2中的服务器214的服务器实现系统300的部分。服务器可以是远程的,例如,因为它不与第一计算设备处于同一位置。服务器可以被配置为从计算设备(例如,计算设备204中的一个或多个)接收系统300的信号,诸如利用图形支持系统216来处理所接收的信号,并且将处理的结果发送回计算设备。因此,图2中的服务器214的图形支持系统216可以包括系统300。
附加地或替代地,系统300的部分可以由与第一计算设备处于同一位置的附加计算设备来实现。例如,计算设备204中的一个可以是第一计算设备,而计算设备204中的另一个可以是附加的处于同一位置计算设备。第一计算设备和附加计算设备可以由一个或多个用户操作。因此,系统300在环境内提供多个用户以共享系统300中包括的数据。例如,可以获得图像,以及由第一用户操作的第一计算设备为图像生成三角网格,并将其发送到由第二用户操作的另一计算设备。然后,第二用户可以使网格变形(例如,通过将一个或多个转换应用于网格),并将转换后的网格发送回第一用户和第一计算设备。然后,第一计算设备上的第一用户可以使用系统300从在第二计算设备上从第二用户接收的经变形的网格来重建图像的曲线。重建的图像可以显示在第一计算设备上并与第二计算设备共享,因此两个用户都可以查看重建的图像。
图像检索模块244获得资产,诸如包括由曲线表示的图像的网页。在一个示例中,图像检索模块244诸如通过从资产中移动图像来从资产中提取图像。例如,图像检索模块244可以从包含图像和文本的资产中通过从资产中移动图像并丢弃文本来中提取图像。附加地或替代地,图像检索模块244可以获得图像(例如,图像文件、扫描、复制等)。图像检索模块244将图像提供给栅格化模块246和采样绑定模块254。
在图3的示例中,由图像检索模块244获得并提供给栅格化模块246和采样绑定模块254的图像的示例由图像302表示,其图示了男人和女人跳舞。由系统300从图像302生成的重建图像的示例由图像304表示,其表示男人和女人跳舞并且在与图像302中不同的位置。系统300通过生成图像302的三角形网格、将图像302的曲线采样绑定到三角形网格、使网格变形、并基于曲线的采样到网格的绑定从经变形的网格重建曲线来生成图像302。
由曲线(例如,贝塞尔曲线段)表示的图像由图像检索模块244获得并被提供给栅格化模块246。栅格化模块246将图像栅格化为经栅格化的图像(例如,由像素表示)。栅格化模块246可以诸如根据默认值、用户指定的值或自动生成的值以任意合适的方式确定经栅格化的图像的分辨率。在一个示例中,用户指定经栅格化的图像的分辨率(例如,水平数和垂直像素数)。附加地或替代地,栅格化模块246可以分析由图像检索模块244提供的图像,并且在没有用户干预的情况下自动确定经栅格化的图像的分辨率。例如,栅格化模块246可以基于由图像检索模块244获得的图像的曲线(诸如曲线的数目、曲线类型、每条曲线的段数、曲线的多项式的阶数、其组合等)来确定经栅格化的图像的分辨率。栅格化模块246向轮廓生成模块248提供经栅格化的图像。
轮廓生成模块248从栅格化模块246接收经栅格化的图像,并生成经栅格化的图像的一个或多个相应部分或经栅格化的图像中的一个或多个相应对象的一个或多个轮廓。轮廓可以由形成图像中的对象的边界的像素链或包围该对象或区域的图像的区域来表示。在一个示例中,轮廓生成模块248为图像的单个对象或区域生成不相交的轮廓,并且使不相交的轮廓膨胀以将不相交的轮廓合并为针对图像的单个对象或区域的一个轮廓。不相交的轮廓可以基于用户指令来膨胀,诸如用户用于将一个或多个轮廓膨胀规定数目的像素(例如,3个像素)的指示。
附加地或替代地,轮廓生成模块248例如响应于检测到轮廓生成模块248首先确定对象的不相交轮廓来自动地膨胀一个或多个轮廓而无需用户干预。在一个示例中,轮廓生成模块248每次迭代迭代地使一个或多个轮廓膨胀规定目的像素,直到轮廓生成模块248检测到没有不相交的对象的轮廓剩余为止。轮廓生成模块248将经栅格化的图像的一个或多个相应部分或经栅格化的图像中的一个或多个相应对象的一个或多个轮廓提供给多段线模块250。
多段线模块250从轮廓生成模块248接收一个或多个轮廓,并确定指示表示一个或多个轮廓的多个多段线的至少一个边列表。在一个示例中,由多段线模块250确定一个或多个轮廓中的每一个的相应边列表。附加地或替代地,多段线模块确定指示所有一个或多个轮廓的多段线的单个边列表。
多段线模块可以以任意合适的方式从轮廓生成模块248接收的轮廓中确定边列表。在一个示例中,多段线模块250应用RDP算法以将表示轮廓的像素的数目减少到近似轮廓的连接多段线的数目。此外,多段线模块250可响应于检测到奇点条件(例如,沿着线重叠多段线)而使一条或多条多段线膨胀。通过校正奇点条件,系统300保证生产三角形网格。多段线模块250表示边列表中的多段线(例如,多段线的端点列表和用于连接多段线的指令),并向网格生成模块252提供边列表。
网格生成模块252从多段线模块250接收边列表,并基于边列表生成网格。网格可以包括用于由轮廓生成模块248基于由多段线模块250接收的边列表确定的一个或多个轮廓中的每一个的相应三角形网格。在一个示例中,网格生成模块252在网格的顶点(例如,三角形网格中的三角形的顶点)中的一个或多个上插入控制点。控制点可以包括手柄和锚点。网格生成模块252可以自动且无需用户干预地指定一些顶点以包括控制点。附加地或替代地,网格生成模块252可以基于用户指令(例如,鼠标点击一个或多个顶点)指定网格的顶点以包括控制点。在一个示例中,基于应用于网格的转换(诸如蒙皮转换)将控制点分配给网格。
此外,网格生成模块252可以使一个或多个网格膨胀以连接网格。例如,用户可以指定膨胀参数,或者经由膨胀参数指示要连接的网格区域,并且网格生成模块252可以通过使一个或多个网格膨胀来连接网格(例如,在指示的区域处)。
网格生成模块252向采样绑定模块254和网格变形模块256提供一个或多个网格的相应表示,例如,指示针对相应网格中的每个三角形的三角形网格中的三角形的顶点的三元组。
网格变形模块256从网格生成模块252接收一个或多个网格的表示。网格变形模块256还接收用于使由网格生成模块252接收的网格变形的输入。输入可以是用户输入,诸如当用户选择并拖动网格上的手柄以使网格变形时。附加地或替代地,由网格变形模块256接收的输入可以是诸如蒙皮转换的转换,用于生成另一图像的工作流程的一部分,诸如动画序列等。网格变形模块256基于接收的用于使网格变形的输入以及从网格生成模块252接收一个或多个网格来生成一个或多个变形的网格。网格变形模块256将一个或多个变形的网格提供给曲线重建模块258。
采样绑定模块254从网格生成模块252接收一个或多个网格,并且从图像检索模块244接收由曲线表示的图像,并将曲线的采样绑定到网格之一。采样绑定模块254通过用采样相对于网格中的相应三角形的坐标(例如,重心坐标)来表示采样来将曲线的采样绑定到网格。
采样绑定模块254通过对曲线进行采样来生成表示由图像检索模块244获得的图像的曲线采样。采样可以以任意合适的方式完成,例如用均匀间隔的采样(例如,沿着采样之间的曲线的相等距离)。附加地或替代地,采样绑定模块254诸如基于曲线的长度或曲线的段的长度来自适应地对曲线进行采样。例如,与较短的曲线相比,较长的曲线可以被更多地采样(例如,每条曲线的采样更多并且采样点之间的距离更多或更少)。
在一个示例中,采样绑定模块254将曲线的相应采样绑定到网格中的、不包括相应采样的相应三角形。例如,剪切路径可能遮盖网格不为其生成的图像的一部分。对于图像的这一部分,采样绑定模块254将不包含在网格中的三角形中的曲线的采样绑定到网格中的最近三角形。
采样绑定模块254生成表示曲线采样与网格中的三角形的绑定的数据元组。在一个示例中,采样绑定模块254为由采样绑定模块254生成的每个采样生成元组,该元组包括包含采样被绑定到的相应三角形的相应三角形网格的索引、采样被绑定到的相应三角形的索引、以及采样相对于相应三角形的重心坐标。采样绑定模块254向曲线重建模块258提供数据元组,例如,表示曲线采样到网格中的三角形的绑定的元组。
曲线重建模块258从采样绑定模块254接收数据元组,并从网格变形模块256接收经变形的网格,并通过从经变形的网格中的相应三角形的位置和采样的重心坐标来确定采样的新位置,并从采样的新位置来生成重建曲线来重建至少一些曲线。生成重建曲线可以包括从采样的新位置来确定曲线的基点(例如,贝塞尔样条、贝塞尔曲线段、多项式等),诸如通过对拟合到采样的新位置的曲线进行拟合以确定贝塞尔曲线段的新基点。此外,曲线重建模块258例如通过将重建的曲线集成到由重建的曲线表示的重建图像中,并将颜色、阴影、图案、其组合等添加到重建的图像,来从重建的曲线生成重建图像。曲线重建模块258将重建图像提供给显示器220。
显示器220从曲线重建模块258接收重建图像,并在用户界面中展露重建图像。此外,显示器220可以接收由系统300使用或由系统300生成的任意数据或对象,诸如图像的曲线、网格、经栅格化的图像、轮廓、多段线、边列表、数据元组、三元组、顶点的位置、重心坐标等,并在用户界面中展露数据或对象。在图3的示例中,显示器220展露图像304,包括与从图像检索模块244获得的图像302在不同位置跳舞的男人和女人。
系统300构成对从涵盖图像的多边形的凸壳生成网格的系统、以及通过采样图像的曲线并使用采样点作为网格中的三角形的顶点来生成网格的系统的改进。通过从图像的栅格化版本生成图像轮廓,将轮廓减小为连接的多段线集合,并根据连接的多段线生成三角形网格,生成准确表示图像的三角形网格(例如,其覆盖图像的像素被展露的图像),并且三角形网格的复杂性与输入曲线的复杂性去耦合。因此,系统300可以高效且稳健地生成具有大量曲线(例如,数十万条曲线)的图像的三角形网格,其中直接对输入曲线进行采样并且将采样用作三角形顶点的系统失败或需要禁止的资源量和生成网格的延迟。此外,通过检测奇点条件(例如,自重叠多段线)并且诸如通过自动膨胀一个或多个自重叠多段线来校正奇点条件,系统300自动配置其自身以保证三角形网格可以被生成。此外,通过将未被网格覆盖的曲线的采样(例如,因为曲线被剪切路径遮盖)绑定到网格,系统300支持通过基于整个图像而不仅仅是网格展露和覆盖的图像的这些部分而生成经变形的网格和重建图像,来使用剪切路径的工作流程。因此,与其他过程相比,由剪切路径遮盖的图像由系统300更自然地变形。
已经考虑了示例系统300,现在考虑根据本公开的一个或多个方面的示例图像的讨论。
示例图像
图4图示了根据本公开的一个或多个方面的示例图像400。图4中的示例图示了轮廓的膨胀以将不相交的轮廓合并成一个轮廓,并且可以由图1和图2中的轮廓生成模块248执行。图像400包括图像402(例如,经栅格化的图像)。图像402对应于女人的图像。如箭头404所示,女人的右腿用不相交的线条(例如,未连接到女人的另一部分的线条)绘制。例如,椭圆406包围女人右腿的一部分,该部分与女人的其他部分不相交,诸如由于手绘而得到。因为图像402包括具有表示图像的不相交分量的图像,所以轮廓生成模块248可以生成不相交的轮廓。
例如,图像400还包括图像408(例如,经栅格化的图像),其包括由轮廓生成模块248、轮廓412和轮廓414生成的两个不相交的轮廓。轮廓412围绕该女人,不包括她右腿的不相交部分(例如,由椭圆406围绕的线),并且轮廓414包围女人右腿的不相交部分(例如,由椭圆406围绕的线)。因此,图像408中的不相交轮廓412和414不能准确地表示图像中女人的单个轮廓。
图像400还包括图像410(例如,经栅格化的图像),其包括女人的单个轮廓416。在图像410中,图像408的两个不相交的轮廓412和414已经由轮廓生成模块248膨胀并且被连接到单个轮廓416中。在图4的示例中,轮廓412和414各自都被膨胀3个像素,从而导致轮廓412和414合并成单个轮廓416,其精确地表示女人的轮廓(例如,轮廓416涵盖表示女人的图像410的像素)。
图5图示了根据本公开的一个或多个方面的连接多段线500的示例。连接的多段线500包括第一连接的多段线502和第二连接的多段线504。连接的多段线500是由图1和图2中的多段线模块250生成的多段线的示例,并且可以由一个或多个边列表表示。连接的多段线500表示诸如树的图像的轮廓。
第一连接多段线502包括奇点条件,如区域506所示。具体地,第一连接多段线502包括区域506中的自重叠多段线。自重叠包括沿线共线并且在至少部分沿着线重叠的两条或更多条多段线。如果未校正,这种奇点是退化条件,其可以防止网格生成模块252或网格变形模块256正确生成三角形网格。例如,因为多段线是自重叠的,所以可能无法生成满足最小角度约束(例如,每个三角形的角度至少是某个角度,诸如20度)的网格。
因此,多段线模块250被配置成响应于检测到奇点条件而自动且无需用户干预地膨胀一条或多条多段线,诸如自重叠多段线或连接的多段线以形成低于最小角度的角度。在第二连接多段线504中,通过扩展多段线同时保持多段线连接,至少一些多段线已经被膨胀。如区域508中所示,已经去除了自重叠多段线,并且校正了奇点条件。因此,可以保证使用第二连接多段线504生成三角形网格,因为奇点条件已经被自动检测并校正。
图6图示了根据本公开的一个或多个方面的示例图像600。图像600包括图像602和图像604。图像602包括大象的图像(例如,图1和图2中的图像检索模块244获得的图像的示例),与网格606重叠(例如,由图1和图2中的网格生成模块252生成的网格的示例)。图像602中的大象的图像是从包括多条曲线(例如,贝塞尔曲线段)的矢量图形生成的。图像602还包括放置在网格606的顶点处的手柄608,可操作以使网格606变形,如上所述。图像602可包括任意合适数目和类型的控制点。在图6的示例中,图示602具有两个手柄608。
图像604图示了表示图像602中的大象的曲线(例如,用于构建图像602中大象的图像的矢量图形)。图像604包括超过140,000个贝塞尔曲线段,使得难以看到单个曲线。因此,区域610图示了图像604的贝塞尔曲线段的放大部分。由于图像604中表示图像602的大量贝塞尔曲线,直接对贝塞尔曲线段进行采样并从这些采样生成网格的方法在大多数工作流程中是不切实际的,因为这种网格中的三角形数目需要不合理的计算资源。相反,根据本文描述的技术生成的网格606包括少量三角形(例如,数百个),因此需要相对少量的计算资源。
图7图示了根据本公开的一个或多个方面的示例图像700。图像700包括图像702和图像704,其响应于网格被变形(例如,图6中的网格606)而分别对应于图像602和604。例如,图像702包括可以被选择和拖动以生成经变形的网格708的各种手柄706。经变形的网格708是图6中的网格606的变形版本,并且是由网格变形模块256生成的经变形的网格的示例。通过使网格变形为经变形的网格708,大象的图像702与经变形的网格一起移动。例如,与图6相比,在图7中覆盖大象躯干的网格上的手柄已经被抬起,并且大象的躯干已经根据变形的网格708被提升。
图像704图示了从经变形的网格708和曲线相对于网格708中的相应三角形的采样的重心坐标已经被重建的重建曲线(例如,重建贝塞尔曲线段)。这些重建曲线是用于响应于网格708被变形而生成图像702的矢量图形。
图8图示了根据本公开的一个或多个方面的示例图像800。图像800包括图像802和图像804。图像802和图像804中的每一个包括两个对象,女孩和篮球。在图像802中,已生成两个分离的网格以分别覆盖女孩和篮球,分别是网格806和网格808。因此,篮球可以独立于女孩被移动(例如,通过扭曲其网格),反之亦然。在一个示例中,用户指定将篮球和女孩的网格保持为分离的网格。
在图像804中,通过使网格806和网格808膨胀,用于女孩的网格806已经与用于篮球的网格808在区域810中已经被合并。因此,网格806和网格808已经在图像804中被合并成单个网格。因此,篮球通过合并的网格被连接到女孩,并且女孩和篮球不再能够独立地移动。相反,在图像804中,篮球和女孩可以通过扭曲合并的网格而一被移动。
图9图示了根据本公开的一个或多个方面的示例图像900。图像900图示了已经被插入到剪切路径中的图像的三角形网格,将剪切路径外的曲线采样绑定到剪切路径内部的三角形网格的三角形,使三角形网格变形,以及重建曲线。具体地,图像900包括五个图像,图像902、图像904、图像906、图像908和图像910。这些图像中的每一个包括剪切路径912。在图9所示的示例中,剪切路径912形成星的形状,尽管剪切路径912可以是图像可以被插入的任意合适的剪切路径,诸如盒子、圆形、椭圆形、多边形、新月形、菱形、自由形式边界框等等。
在图像902中,戴着帽子和眼镜的具有胡子的男人的图像已被插入到剪切路径912中。然而,剪切路径912遮蔽了男人的一些图像。例如,图像904图示了剪切路径912的轮廓和构成人的图像的曲线(例如,贝塞尔曲线段)。如在区域914中所见,男人胡须的一部分被剪切路径912遮盖(例如,区域914包括在剪切路径912外部的男人胡须的一部分)。因此,区域914中在剪切路径912外部的男人的胡须部分未在图像902中展露。
图像906图示了剪切路径912和如在图像902中所图示的男人的图像,以及根据剪切路径912针对男人的图像生成的三角形网格916。三角形网格916是可以由图2和图3中的网格生成模块252生成的网格的示例。如图像906所图示的,三角形网格916覆盖剪切路径912内的男人的图像,但是不覆盖被剪切路径912遮盖的男人的图像的部分。例如,图像906包括区域918,其对应于图像904中的区域914,其包括被剪切路径912遮盖和未被三角形网格916覆盖的男人的图像的一部分。
然而,如上所述,诸如通过确定区域918中未被三角形网格916覆盖的曲线的采样相对于三角形网格916的相应最近三角形的重心坐标,区域918中未被三角形网格916覆盖的曲线采样被绑定到三角形网格916。在图2和图3中的采样绑定模块254可以将区域918中未被三角形网格916覆盖的曲线的采样绑定到三角形网格916中的相应三角形。因此,通过将区域918中未被三角形网格916覆盖的曲线的采样绑定到三角形网格916,诸如当三角形网格916通过拖动三角形网格916的手柄而被变形时,这些采样可以与由剪切路径912包围的图像一起被变形。
例如,图像908图示了图像906的变形版本。图像908包括经变形的网格920,其是三角形网格916的变形版本。经变形的网格920是由图2和图3中网格变形模块256生成的经变形的网格的示例。在图9的示例中,通过向下选择并拖动手柄922,以“拉伸”由剪切路径912表示的星形的尖头形成经变形的网格920。响应于拖动手柄922,三角形网格916被变形为经变形的网格920,并且男人的图像根据变形的网格920被变形。例如,在图像908中的区域924中,其对应于区域918,男人的胡须的可见部分连同经变形的网格920已经被变形(例如,拉伸)。虽然由于剪切路径912导致在图像908中不可见,但是区域924还包括已经根据经变形的网格920变形的男人的胡须的部分,因为区域924包括被绑定到三角形网格916的男人的图像的曲线的采样。
例如,图像910图示了在手柄922已经被移动之后的剪切路径912的轮廓,以及诸如由图2和图3中的曲线重建模块258生成的该男人的图像的重建曲线。图像910的区域926对应于图像908的区域924。在区域926中,已经在剪切路径912之外生成了男人的胡须的重建曲线,并且由于曲线的采样到三角形网格916的绑定,区域926中的重建曲线与剪切路径912内的男人的图像的重建曲线一致(例如,区域926中的重建曲线与剪切路径912内的重建曲线成比例)。因此,尽管该男人的一部分图像被网格覆盖,但该男人的图像作为整体上已经被变形。
已经考虑了示例图像,现在考虑根据本公开的一个或多个方面的用于针对由曲线表示的图像生成三角形网格的示例过程的讨论。
示例程序
图10图示了根据本公开的一个或多个方面的用于针对由曲线表示的图像生成三角形网格的示例过程1000。过程的各方面可以用硬件、固件或软件或其组合来实现。该过程被示为框的集合,其指定由一个或多个设备执行的操作,并且不一定限于针对执行各个框的操作而示出的顺序。在至少一些方面,该过程可以由适当配置的计算设备在数字媒体环境中执行,诸如图2的计算设备204或服务器214中的一个或多个,其利用图像图形系统,例如系统300或图像图形系统208。实现过程1000的图像图形系统可以是已经安装在计算设备上的独立应用、计算设备、计算设备的插件模块或其组合可访问的服务提供者托管的服务。
获得由多条曲线表示的图像(框1002)。在一个示例中,图像检索模块244获得由多条曲线表示的图像。
将图像栅格化为经栅格化的图像(框1004)。在一个示例中,栅格化模块246将图像栅格化为经栅格化的图像。
生成经栅格化的图像的一个或多个相应部分的一个或多个轮廓(框1006)。在一个示例中,轮廓生成模块248生成经栅格化的图像的一个或多个相应部分的一个或多个轮廓。附加地或替代地,生成一个或多个轮廓包括将一个或多个轮廓中的至少一个膨胀用户定义的量(诸如,通过规定数目的像素(例如,3个像素))。
确定指示表示一个或多个轮廓的多个多段线的边列表(框1008)。在一个示例中,多段线模块250确定经栅格化的图像的一个或多个相应部分的一个或多个轮廓。边列表可以包括顶点列表和用于连接顶点以形成多条多段线的指示。附加地或替代地,确定边列表包括响应于检测到重叠多段线而自动地且而无需用户干预地膨胀至少一条多段线,诸如共线的并且沿着线重叠的自重叠多段线。
基于边列表生成包括针对一个或多个轮廓中的每一个的相应三角形网格的网格(框1010)。在一个示例中,网格生成模块252生成网格,该网格包括针对一个或多个轮廓中的每一个的相应三角形网格。附加地或替代地,生成网格可以包括约束网格的三角形以具有至少最小角度并且包括不多于经栅格化的图像的最大数目的像素。
在一个示例中,网格可以包括一个或多个控制点,诸如使网格变形的手柄和用于防止网格的点移动的锚。例如,可以将一个或多个手柄添加到网格中,手柄可操作以使网格变形,并且可以将一个或多个锚添加到网格中,锚可操作以防止网格变形。
此外,网格中的三角形的数目可以独立于图像的多个曲线的数目,因为网格是基于边列表生成的,而不是对曲线进行采样并从采样生成三角形。
通过用采样相对于网格中的相应三角形的坐标来表示多个曲线的采样,来将多个曲线绑定到网格(框1012)。在一个示例中,采样绑定模块254通过使用采样相对于网格中的相应三角形的坐标(例如,重心坐标)表示多个曲线的采样来将多个曲线绑定到网格。
在一个示例中,将多个曲线绑定到网格包括使用矩形作为用于三角形的边界体积为网格中的三角形生成边界体积层级结构,并搜索边界体积层级结构以确定网格中的相应三角形。
此外,可以通过确定多条曲线中的每条曲线的多个段,并基于段的长度来分配每个段的采样数目来确定多条曲线的采样。
此外,网格可以诸如通过选择和移动手柄用网格的一个或多个手柄变形为经变形的网格。可以重建图像的多个曲线中的至少一些曲线,包括响应于使网格变形而重建曲线。重建图像的曲线可以包括从经变形的网格中的相应三角形的位置和采样相对于相应三角形的坐标来确定曲线采样的位置,并从采样的位置生成重建曲线。
在一个示例中,获得剪切路径,其将图像分离成剪切路径内部的、与网格重叠的第一区域和剪切路径外部的、不与网格重叠的第二区域。将曲线采样绑定到网格可以包括用第二区域中的采样相对于第一区域中的三角形的坐标来表示第二区域中的曲线的采样。在一个示例中,坐标是重心坐标。
此外,网格的至少一个三角形网格可以根据用户定义的膨胀参数(例如,多个像素)而膨胀,并且响应于膨胀,网格的至少两个三角形网格可以被连接为一个三角形网格。附加地或替代地,响应于连接两个三角形网格的用户指示,网格的至少两个三角形网格可以连接成单个三角形网格。
图11图示了根据本公开的一个或多个方面的用于为由曲线表示的图像生成三角形网格的示例过程1100。过程的各方面可以用硬件、固件或软件或其组合来实现。该过程被示为框集合,其指定由一个或多个设备执行的操作,并且不一定限于为了执行各个框的操作而图示的顺序。在至少一些方面,该过程可以由适当配置的计算设备在数字媒体环境中执行,诸如利用图像图形系统的图2的计算设备204或服务器214中的一个或多个,诸如系统300或图像图形系统208。实现过程1100的图像图形系统可以是已经安装在计算设备上的独立应用、计算设备、计算设备的插件模块或其组合可访问服务提供商托管的服务。
获得由多条曲线表示的图像(框1102)。在一个示例中,图像检索模块244获得由多条曲线表示的图像。
将图像栅格化为经栅格化的图像(框1104)。在一个示例中,栅格化模块246将图像栅格化为经栅格化的图像。附加地或替代地,可以响应于图像被获得来自动而无需用户干预地栅格化图像。
生成经栅格化的图像的一个或多个相应部分的一个或多个轮廓(框1106)。在一个示例中,轮廓生成模块248生成经栅格化的图像的一个或多个相应部分的一个或多个轮廓。轮廓生成模块248可以被配置为接收用户输入,该用户输入指示将至少一个轮廓保持为与其他轮廓分开的轮廓。附加地或替代地,可以响应于图像被栅格化自动地而无需用户干预地生成经栅格化的图像的一个或多个相应部分的一个或多个轮廓,诸如通过使用神经网络来检测图像中的对象并对于每个检测到的对象生成轮廓。
确定指示表示一个或多个轮廓的多个多段线的边列表(框1108)。在一个示例中,多段线模块250确定指示表示一个或多个轮廓的多个多段线的边列表。附加地或替代地,可以响应于一个或多个轮廓被生成来自动地且无需用户干预地确定指示表示一个或多个轮廓的多个多段线的边列表。
基于边列表生成包括针对一个或多个轮廓中的每一个的相应三角形网格的网格(框1110)。在一个示例中,网格生成模块252生成网格,该网格包括针对一个或多个轮廓中的每一个的相应三角形网格。附加地或替代地,网格可以响应于边列表自动而无需用户干预地被生成。
通过用采样相对于网格中的相应三角形的坐标来表示多个曲线的采样,将多个曲线绑定到网格(框1112)。在一个示例中,采样绑定模块254通过用采样相对于网格中的相应三角形的坐标来表示多个曲线的采样来将多个曲线绑定到网格。附加地或替代地,响应于网格被生成,曲线可以自动地而无需用户干预地被绑定到生成的网格。
在一个示例中,图像被分成剪切路径内部的、与网格重叠的第一区域和剪切路径外部的、不与网格重叠的第二区域。第二区域中的至少一些曲线采样用至少一些采样相对于第一区域中的最接近的相应三角形的重心坐标被绑定到至少一些采样。因此,重心坐标中的至少一个可以大于单位一或小于零(例如,负)。
此外,多个曲线的采样可以表示为数据元组,诸如包括相应三角形网格的索引、网格中的相应三角形的索引以及坐标的元组。
网格用网格上的一个或多个手柄被变形为经变形的网格(框1114)。在一个示例中,网格变形模块256用网格上的一个或多个手柄将网格变形为经变形的网格。网格可以基于用户输入被变形,诸如用户选择和拖动手柄。此外,网格可以基于对网格应用转换(例如,蒙皮转换)来被变形。附加地或替代地,响应于曲线被绑定到网格而自动并且无需用户干预地对网格进行变形,诸如通过自动将包括对网格的预定义变换的工作流程应用于网格。
通过从经变形的网格中的相应三角形的位置以及采样相对于相应三角形的坐标来确定采样的新位置并从采样的新位置生成重建曲线,重建多个曲线中的至少一些曲线(方框1116)。在一个示例中,曲线重建模块258通过从经变形的网格中的相应三角形的位置以及采样相对于相应三角形的坐标来确定采样的新位置,并从采样的新位置生成重建的曲线,来重建多个曲线中的至少一些。生成重建曲线可以包括从采样的新位置确定贝塞尔样条的基点。附加地或替代地,曲线可以响应于网格被变形来自动地而无需用户干预地被重建。
图12图示了根据本公开的一个或多个方面的用于为由曲线表示的图像生成三角形网格的示例过程1200。过程的各方面可以用硬件、固件或软件或其组合来实现。该过程被示为框集合,其指定由一个或多个设备执行的操作,并且不一定限于为了执行各个框的操作而示出的顺序。在至少一些方面,该过程可以由适当配置的计算设备在数字媒体环境中执行,诸如利用图像图形系统的图2的计算设备204或服务器214中的一个或多个,诸如系统300或图像图形系统208。实现过程1200的图像图形系统可以是已经安装在计算设备上的独立应用、由计算设备、计算设备的插件模块或其组合可访问的服务提供商托管的服务。
获得包括多条曲线的图像(框1202)。在一个示例中,图像检索模块244获得包括多条曲线的图像。
生成图像的轮廓(框1204)。在一个示例中,轮廓生成模块248诸如从曲线表示的图像生成图像的轮廓。附加地或替代地,可以将图像栅格化为经栅格化的图像,并且可以从经栅格化的图像生成图像的轮廓。经栅格化的图像可以是具有透明度的灰度图像(例如,透明度可以表示为透明度参数的百分比)。
确定表示轮廓的多条多段线(框1206)。在一个示例中,多段线模块250诸如通过将RDP算法应用于轮廓来确定表示轮廓的多条多段线,如上所述。
基于多个多段线生成用于轮廓的三角形网格(框1208)。在一个示例中,网格生成模块252生成轮廓的三角形网格。
通过用采样相对于三角形网格中的相应三角形的重心坐标表示多个曲线的采样,将多个曲线绑定到三角形网格(框1210)。在一个示例中,采样绑定模块254通过用采样相对于三角形网格中的相应三角形的重心坐标来表示多个曲线的采样,将多个曲线绑定到三角形网格。
三角形网格用三角形网格的顶点上的一个或多个可移动手柄变形为经变形的网格(框1212)。在一个示例中,网格变形模块256用三角形网格的顶点上的一个或多个可移动手柄将三角形网格变形为经变形的网格。
从经变形的网格中的相应三角形的位置和采样的重心坐标确定采样的新位置(框1214)。在一个示例中,曲线重建模块258从经变形的网格中的相应三角形的位置和采样的重心坐标来确定采样的新位置。
从采样的新位置生成重建曲线(框1216)。在一个示例中,曲线重建模块258从采样的新位置生成重建曲线。
本文描述的过程构成对从涵盖图像的多边形的凸壳生成网格的过程,以及通过采样图像的曲线并使用采样点作为网格中三角形的顶点来生成网格的过程的改进。通过从图像的栅格化版本生成图像轮廓,将轮廓减小为连接的多段线集合,并根据连接的多段线生成三角形网格,生成准确表示图像的三角形网格(例如,其覆盖图像的像素被展露的图像),并且三角形网格的复杂性与输入曲线的复杂性去耦合。因此,本文描述的过程高效且稳健地生成具有大量曲线(例如,数十万条曲线)的图像的三角形网格,其中直接对输入曲线进行采样并将采样用作三角形顶点的过程失败或需要过高的量的资源和延迟生成网格。此外,通过检测奇点条件(例如,自重叠多段线)并校正奇点条件,诸如通过自动膨胀一个或多个自重叠多段线,本文描述的过程保证三角形网格可以被生成(例如,三角形约束可以被满足)。此外,通过将未被网格覆盖的曲线的采样(诸如,被剪切路径遮盖的曲线)绑定到网格,本文描述的过程支持通过基于整个图像而不仅仅是网格展露和覆盖的图像部分而生成经变形的网格和重建图像来使用剪切路径的工作流程。因此,与其他过程相比,由剪切路径遮盖的图像由本文描述的过程更自然地变形。
已经考虑了根据一个或多个实现的示例过程,现在考虑可以用于实践本文描述的发明原理的示例系统和设备。
示例系统和设备
图13在1300处总体上图示了示例系统,其包括示例计算设备1302,其表示可以实现本文描述的各种技术的一个或多个计算系统和设备。这通过包括如上所述操作的图像图形系统208、系统300、图像图形应用242和图形支持系统216来说明。计算设备1302可以是例如用户计算设备(例如,计算设备204之一)、或服务提供商的服务器设备(例如,服务器214)。此外,计算设备1302可以包括片上系统、多个计算设备、其组合或任意其他合适的计算设备或计算系统。因此,图13将计算设备1302图示为平板计算机、膝上型计算机、智能电话、智能眼镜和相机中的一个或多个,但是这些示例是说明性的而绝不意味着限制计算设备1302中包括的设备类型或数目。
示例计算设备1302包括彼此通信地耦合的处理系统1304、一个或多个计算机可读介质1306、以及一个或多个I/O接口1308。虽然未图示,但是计算设备1302还可以包括系统总线或将各种组件彼此耦合的其他数据和命令传输系统。系统总线可以包括不同总线结构的任意一个或组合,诸如存储器总线或存储器控制器、外围总线、通用串行总线、以及利用各种总线架构中的任意一个的处理器或本地总线。还构想了各种其他示例,例如控制和数据线。
处理系统1304表示使用硬件执行一个或多个操作的功能。因此,处理系统1304被示为包括可被配置为处理器、功能块等的硬件元件1310。这可以包括以硬件的作为使用一个或多个半导体形成的专用集成电路或其他逻辑器件的实现。硬件元件1310不受它们被形成的材料或其中采用的处理机构的限制。例如,处理器可以包括半导体和晶体管(例如,电子集成电路(IC))。在这样的上下文中,处理器可执行指令可以是电子可执行指令。图2中的处理器222是处理系统1304的示例。
计算机可读存储介质1306被示为包括存储器/存储组件1312。图2中的存储装置224是在存储器/存储组件1312中包括的存储器/存储组件的示例。存储器/存储组件1312可以包括易失性介质(诸如随机存取存储器(RAM)、非易失性介质(例如只读存储器(ROM)、闪存、光盘,磁盘等)或其组合。存储器/存储组件1312可以包括固定介质(例如,RAM、ROM、固定硬盘驱动器等)以及可移动介质(例如,闪存、可移动硬盘驱动器、光盘等)。计算机可读介质1306可以以各种其他方式配置,如下面进一步描述的。
输入/输出接口1308表示允许用户向计算设备1302输入命令和信息的功能,并且还允许使用各种输入/输出设备将信息呈现给用户和其他组件或设备。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风、麦克风阵列、扫描仪、触摸功能(例如,配置为检测物理触摸的电容或其他传感器)、相机(例如,其可以采用诸如红外频率的可见或不可见波长来将运动识别为不涉及触摸的手势)、等等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡、触觉响应设备等。因此,计算设备1302可以以下面进一步描述的用于支持用户交互的各种方式配置。
计算设备1302还包括应用1314。应用1314代表能够在计算设备1302上运行的任意合适的应用,并且可以包括可操作以访问各种基于web的资源(例如,资产、媒体剪辑、图像、内容、配置文件、服务、用户简档等)web浏览器。此外,应用1314包括图像图形应用242,如前所述。此外,应用1414包括支持图像图形系统208,系统300和图形支持系统216的任意应用。
本文可以在软件、硬件元件或程序模块的一般上下文中描述各种技术。通常,这样的模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元素、组件、数据结构等。本文使用的术语“模块”、“功能”和“组件”通常表示软件、固件、硬件或其组合。本文描述的技术的特征是与平台无关的,意味着可以在具有各种处理器的各种商业计算平台上实现这些技术。
所描述的模块和技术的实现可以存储在某种形式的计算机可读介质上或通过某种形式的计算机可读介质传输。计算机可读介质可以包括可以由计算设备1302访问的各种介质。作为示例而非限制,计算机可读介质可以包括“计算机可读存储介质”和“计算机可读信号介质”。
“计算机可读存储介质”是指与仅仅信号传输、载波或信号本身相比能够实现信息的持久或非暂态存储的介质、设备或其组合。因此,计算机可读存储介质不包括信号本身或信号承载介质。计算机可读存储介质包括诸如易失性和非易失性、可移动和不可移动介质、存储设备或其组合的硬件,其以适于诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据的信息的存储的方法或技术实现。计算机可读存储介质的示例可包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光学存储器、硬盘、磁带盒、磁带、磁盘存储器或其他磁存储设备、或适于存储所需信息并且可由计算机访问的其他存储设备、有形介质或制品。
“计算机可读信号介质”指的是信号承载介质,其被配置为诸如经由网络将指令发送到计算设备1302的硬件。信号介质通常可以实施计算机可读指令、数据结构、程序模块或调制数据信号中的其他数据,诸如载波、数据信号或其他传输机制。信号介质还包括任意信息传递介质。术语“已调制数据信号”表示以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质、以及诸如声学、RF、红外和其他无线介质的无线介质。
如先前所描述,硬件元件1310和计算机可读介质1306表示模块、可编程装置逻辑、以硬件形式实施的固定装置逻辑、或其组合,其可在一些方面中用以实施本文描述的技术的至少一些方面,诸如执行一个或多个指令。硬件可以包括集成电路或片上系统的组件、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)以及硅或其他硬件的其他实现。在此上下文中,硬件可以作为处理设备以及用于存储用于执行的指令的硬件(例如,先前所描述的计算机可读存储介质)来操作,该处理设备执行由指令、由硬件实现的逻辑或其组合定义的程序任务。
还可以采用前述的组合来实现本文描述的各种技术。因此,软件、硬件或可执行模块可以实现为一个或多个指令、在某种形式的计算机可读存储介质上或通过一个或多个硬件元件1310或其组合实施的逻辑。计算设备1302可以被配置为实现与软件和硬件模块相对应的特定指令和功能。因此,可以由计算设备1302作为软件执行的模块的实现可以至少部分地以硬件实现,例如,通过计算机可读存储介质和处理系统1304的硬件元件1310的使用。指令和功能可以是由一个或多个制品(例如,一个或多个计算设备1302或处理系统1304)可执行的/可操作以实现本文描述的技术、模块和示例。
本文描述的技术可以由计算设备1302的各种配置支持,并且不限于本文描述的技术的特定示例。该功能还可以全部或部分地通过分布式系统的使用来实现,诸如经由如下所述的平台1318在“云”1316上实现。
云1316包括并且代表用于资源1320的平台1318。平台1318抽象出云1316的硬件(例如,服务器)和软件资源的底层功能。资源1320可以包括在远离计算设备1302的服务器上执行计算机处理时可以利用的应用、数据或应用和数据。资源1320还可以包括通过因特网、通过诸如蜂窝或Wi-Fi网络的订户网络或其组合提供的服务。资源1320可以包括资产商店1122,其存储资产,诸如图像,照片(例如,图库中的用户图像、股票照片的数据库等)、文档模板、用户简档数据、用户图像库、在共享照片服务中发布的照片、资产的元数据等,并且可以由计算设备1302访问。
平台1318可以抽象资源和功能以将计算设备1302与其他计算设备连接。平台1318还可以用于抽象资源缩放以提供对应于经由平台1318实现的资源1320遇到的需求的缩放级别。因此,在互连设备实施例中,本文描述的功能的实现可以分布在整个系统1300中。例如,功能可以部分地在计算设备1302上以及经由抽象云1316的功能的平台1318来实现。
结论
在一个或多个实现中,数字媒体环境包括至少一个计算设备。本文描述了用于为由曲线(例如,贝塞尔曲线段)表示的图像生成三角形网格的系统和技术。图像的轮廓被确定并缩小为在边列表中高效表示的连接多段线集合。基于边列表生成三角形网格,而不是通过直接对图像的曲线进行采样并将采样用作三角形的顶点。因此,生成具有密度(例如,三角形的数目)的三角形网格,该密度独立于表示图像的多条曲线。通过用相对于网格中的三角形的重心坐标表示采样,曲线的采样被绑定到三角形网格。因此,一旦网格变形,采样的位置由经变形的网格中的重心坐标和三角形确定,并用于重建变形图像的曲线。
尽管已经用结构特征和方法动作专用的语言描述了本发明,但是应该理解,所附权利要求中限定的本发明不一定限于所描述的具体特征或动作。相反,公开了具体特征和动作作为实现所要求保护的发明的示例形式。
Claims (20)
1.一种在用于生成图像图形的数字媒体环境中由计算设备实现的方法,所述方法包括:
由所述计算设备获得由多条曲线表示的图像;
由所述计算设备将所述图像栅格化为经栅格化的图像;
由所述计算设备生成所述经栅格化的图像的一个或多个相应部分的一个或多个轮廓;
由所述计算设备确定指示表示所述一个或多个轮廓的多条多段线的边列表;
由所述计算设备基于所述边列表,生成针对所述一个或多个轮廓中的每一个轮廓的网格,所述网格包括相应三角形网格;以及
由所述计算设备通过用所述多条曲线的采样相对于所述网格中的相应三角形的坐标来表示所述采样,将所述多条曲线绑定到所述网格。
2.根据权利要求1所述的方法,其中所述网格包括用于使所述网格变形的一个或多个手柄,并且还包括:
用所述一个或多个手柄将所述网格变形为经变形的网格;以及
响应于所述变形,通过以下方式重建所述多条曲线中的至少一些曲线:
从所述经变形的网格中的所述相应三角形的位置、以及所述采样相对于所述相应三角形的所述坐标,来确定所述采样的位置;以及
从所述采样的所述位置生成经重建的曲线。
3.根据权利要求1所述的方法,其中所述生成所述一个或多个轮廓包括:将所述一个或多个轮廓中的至少一个轮廓膨胀用户定义的量。
4.根据权利要求1所述的方法,其中确定所述边列表包括:响应于检测到重叠多段线来自动地而无需用户干预地膨胀至少一条多段线。
5.根据权利要求1所述的方法,其中所述边列表包括顶点列表、以及连接所述顶点以形成所述多条多段线的指示。
6.根据权利要求1所述的方法,其中生成网格包括:约束所述网格的三角形,以具有至少最小角度并且包括不多于所述经栅格化的图像的最大数目的像素。
7.根据权利要求1所述的方法,还包括:
向所述网格添加一个或多个手柄,所述手柄可操作以使所述网格变形;以及
将一个或多个锚添加到所述网格中,所述锚可操作以防止所述网格的变形。
8.根据权利要求1所述的方法,其中将所述多条曲线绑定到所述网格包括:
使用矩形作为针对所述网格中的三角形的边界体积,来生成针对所述三角形的边界体积层级结构;以及
搜索所述边界体积层级结构以确定所述网格中的所述相应三角形。
9.根据权利要求1所述的方法,还包括:获得剪切路径,所述剪切路径将所述图像分离为所述剪切路径内部的与所述网格重叠的第一区域、以及所述剪切路径外部的未与所述网格重叠的第二区域,其中所述绑定包括:用所述第二区域中的所述采样相对于所述第一区域中的三角形的坐标来表示所述第二区域中的曲线的采样。
10.根据权利要求1所述的方法,其中所述网格中的三角形的数目独立于所述多条曲线的数目。
11.根据权利要求1所述的方法,其中坐标是重心坐标。
12.根据权利要求1所述的方法,还包括:
根据用户定义的膨胀参数来膨胀所述网格的至少一个三角形网格;以及
响应于所述膨胀,将所述网格的至少两个三角形网格连接成单个三角形网格。
13.根据权利要求1所述的方法,其中所述多条曲线的所述采样由以下项确定:
确定所述多条曲线的每条曲线的多个段;以及
基于所述段的长度来分配每段的所述采样的数目。
14.一种在用于生成图像图形的数字媒体环境中的系统,包括:
图像检索模块,至少部分地以计算设备的硬件实现,以获得由多条曲线表示的图像;
栅格化模块,至少部分地以所述计算设备的硬件实现,以将所述图像栅格化为经栅格化的图像;
轮廓生成模块,至少部分地以所述计算设备的硬件实现,以生成所述经栅格化的图像的一个或多个相应部分的一个或多个轮廓;
多段线模块,至少部分地以所述计算设备的硬件实现,以确定指示表示所述一个或多个轮廓的多个多段线的边列表;
网格生成模块,至少部分地以所述计算设备的硬件实现,以基于所述边列表来生成针对所述一个或多个轮廓中的每一个轮廓的网格,所述网格包括相应三角形网格;
采样绑定模块,至少部分地以所述计算设备的硬件实现,通过用所述采样相对于所述网格中的相应三角形的坐标来表示所述多条曲线的采样,将所述多条曲线绑定到所述网格;
网格变形模块,至少部分地以所述计算设备的硬件实现,以用所述网格上的一个或多个手柄使所述网格被变形为经变形的网格;以及
曲线重建模块,至少部分地以所述计算设备的硬件实现,以通过以下项重建所述多条曲线中的至少一些曲线:
从所述经变形的网格中所述相应三角形的位置、以及所述采样相对于所述相应三角形的所述坐标,来确定所述采样的新位置;以及
从所述采样的所述新位置生成经重建的曲线。
15.根据权利要求14所述的系统,其中生成所述经重建的曲线包括:从所述采样的所述新位置确定贝塞尔样条的基点。
16.根据权利要求14所述的系统,其中所述轮廓生成模块被配置为接收用户输入,所述用户输入指示将所述一个或多个轮廓中的至少两个轮廓保持为分离的轮廓。
17.根据权利要求14所述的系统,其中:
所述图像被分成剪切路径内部的与所述网格重叠的第一区域、以及所述剪切路径外部的未与所述网格重叠的第二区域;以及
所述采样绑定模块将所述第二区域中的曲线的一些采样绑定到所述网格,所述一些采样具有所述一些采样相对于所述第一区域中最近的相应三角形的重心坐标,所述重心坐标中的至少一个重心坐标大于单位一或小于零。
18.根据权利要求14所述的系统,其中所述采样绑定模块将所述多个曲线的所述采样表示为元组,所述元组包括所述相应三角形网格的索引、所述网格中的所述相应三角形的索引、以及所述坐标。
19.一种在用于生成图像图形的数字媒体环境中由计算设备实现的方法,所述方法包括:
用于获得包括多条曲线的图像的步骤;
用于生成所述图像的轮廓的步骤;
用于确定表示所述轮廓的多条多段线的步骤;
用于基于所述多条多段线来生成所述轮廓的三角形网格的步骤;
用于通过用所述多条曲线的采样相对于所述三角形网格中的相应三角形的重心坐标来表示所述采样,将所述多条曲线绑定到所述三角形网格的步骤;
用于用在所述三角形网格的顶点上的一个或多个可移动手柄来将所述三角形网格变形为经变形的网格的步骤;
用于从所述经变形的网格中的所述相应三角形的位置、以及所述采样的所述重心坐标,来确定所述采样的新位置的步骤;以及
用于从所述采样的所述新位置来生成经重建的曲线的步骤。
20.根据权利要求19所述的方法,还包括用于将所述图像栅格化为经栅格化的图像的步骤,并且其中所述轮廓基于所述经栅格化的图像而被生成。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/861,908 | 2018-01-04 | ||
US15/861,908 US10388045B2 (en) | 2018-01-04 | 2018-01-04 | Generating a triangle mesh for an image represented by curves |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110009721A CN110009721A (zh) | 2019-07-12 |
CN110009721B true CN110009721B (zh) | 2023-12-01 |
Family
ID=64397432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811168267.6A Active CN110009721B (zh) | 2018-01-04 | 2018-10-08 | 生成由曲线表示的图像的三角网格 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10388045B2 (zh) |
CN (1) | CN110009721B (zh) |
AU (1) | AU2018247213B2 (zh) |
DE (1) | DE102018007941A1 (zh) |
GB (1) | GB2570025B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10510186B2 (en) | 2017-12-22 | 2019-12-17 | Adobe Inc. | Digital media environment for intuitive modifications of digital graphics |
US10388045B2 (en) | 2018-01-04 | 2019-08-20 | Adobe Inc. | Generating a triangle mesh for an image represented by curves |
US10410317B1 (en) | 2018-03-26 | 2019-09-10 | Adobe Inc. | Digital image transformation environment using spline handles |
US10753736B2 (en) * | 2018-07-26 | 2020-08-25 | Cisco Technology, Inc. | Three-dimensional computer vision based on projected pattern of laser dots and geometric pattern matching |
EP3637374A1 (en) * | 2018-10-09 | 2020-04-15 | Siemens Healthcare GmbH | Method and system for visualising a spatial surface curvature of a 3d-object, computer program product, and computer-readable storage medium |
US10832446B2 (en) | 2019-01-07 | 2020-11-10 | Adobe Inc. | Bone handle generation |
US10943375B2 (en) | 2019-04-17 | 2021-03-09 | Adobe Inc. | Multi-state vector graphics |
CN110706351B (zh) * | 2019-09-30 | 2023-01-24 | 恒信东方文化股份有限公司 | 一种三角网格模型生成方法及装置 |
US11335042B2 (en) * | 2020-07-20 | 2022-05-17 | Adobe Inc. | Extending freeform gradients to support advanced curve primitives |
CN112347288B (zh) * | 2020-11-10 | 2024-02-20 | 北京北大方正电子有限公司 | 一种字图的矢量化方法 |
US11631220B2 (en) * | 2021-03-16 | 2023-04-18 | Adobe Inc. | Digital object surface inflation |
US11593979B2 (en) * | 2021-04-28 | 2023-02-28 | Adobe Inc. | Editing raster images utilizing part-level semantic aware transformations |
US11631207B2 (en) | 2021-09-09 | 2023-04-18 | Adobe Inc. | Vector object stylization from raster objects |
USD1001209S1 (en) * | 2022-03-10 | 2023-10-10 | Weihong Wang | Remote-controlled crocodile |
CN114821494B (zh) * | 2022-06-27 | 2022-10-14 | 杭州声飞光电技术有限公司 | 船舶信息匹配方法及装置 |
CN115359209B (zh) * | 2022-07-14 | 2024-01-19 | 安徽九韶信息科技有限公司 | 图像处理的装置和方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101065782A (zh) * | 2004-11-27 | 2007-10-31 | 布雷克成像有限公司 | 在网格表面和立体对象上产生和测量表面线的系统和方法以及网格分割技术(“曲线测量”) |
CN101189600A (zh) * | 2005-06-30 | 2008-05-28 | 微软公司 | 对程序几何对象进行三角剖分 |
CN104318591A (zh) * | 2014-10-16 | 2015-01-28 | 南京师范大学 | 一种带边界平面流场的动态绘制方法 |
CN106683176A (zh) * | 2016-12-30 | 2017-05-17 | 飞依诺科技(苏州)有限公司 | 一种脏器三维模型构建方法及装置 |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU8932191A (en) | 1990-11-30 | 1992-06-25 | Cambridge Animation Systems Limited | Image synthesis and processing |
US5894310A (en) | 1996-04-19 | 1999-04-13 | Visionary Design Systems, Inc. | Intelligent shapes for authoring three-dimensional models |
US5861889A (en) | 1996-04-19 | 1999-01-19 | 3D-Eye, Inc. | Three dimensional computer graphics tool facilitating movement of displayed object |
US6154221A (en) | 1997-04-04 | 2000-11-28 | Avid Technology, Inc. | Parametric function curve editing |
US6268871B1 (en) | 1997-04-30 | 2001-07-31 | Silicon Graphics, Inc. | Generating a curve for computer graphics through points residing on underlying geometries in a three dimensional space |
EP1116186A1 (en) | 1998-09-24 | 2001-07-18 | Brigit Ananya | Computer curve construction system and method |
US6448964B1 (en) | 1999-03-15 | 2002-09-10 | Computer Associates Think, Inc. | Graphic object manipulating tool |
US6781597B1 (en) | 1999-10-25 | 2004-08-24 | Ironcad, Llc. | Edit modes for three dimensional modeling systems |
US6782306B2 (en) | 1999-12-16 | 2004-08-24 | Siemens Energy & Automation | Motion control system and method utilizing spline interpolation |
US6919888B1 (en) | 2001-07-03 | 2005-07-19 | Adobe Systems Incorporated | Computer drawing shape manipulation with envelope meshes |
US7218326B1 (en) | 2003-06-11 | 2007-05-15 | Autodesk, Inc. | Spline manipulation tool |
GB2406028A (en) | 2003-09-11 | 2005-03-16 | Autodesk Canada Inc | Tangent handle adjustment for Bezier curves |
US7302650B1 (en) | 2003-10-31 | 2007-11-27 | Microsoft Corporation | Intuitive tools for manipulating objects in a display |
US7057616B2 (en) * | 2004-04-23 | 2006-06-06 | Microsoft Corporation | Using constrained optimization in curve editing |
US8004539B2 (en) | 2004-10-20 | 2011-08-23 | Siemens Aktiengesellschaft | Systems and methods for improved graphical parameter definition |
JP4613313B2 (ja) * | 2005-04-01 | 2011-01-19 | 国立大学法人 東京大学 | 画像処理システムおよび画像処理プログラム |
US7412362B2 (en) * | 2005-05-18 | 2008-08-12 | Microsoft Corporation | River modeling |
US7496416B2 (en) | 2005-08-01 | 2009-02-24 | Luxology, Llc | Input/output curve editor |
US7884834B2 (en) | 2007-04-13 | 2011-02-08 | Apple Inc. | In-context paint stroke characteristic adjustment |
US7868887B1 (en) * | 2007-10-18 | 2011-01-11 | Adobe Systems Incorporated | Rendering rational quadratic Bézier curves on a GPU |
US8629871B2 (en) * | 2007-12-06 | 2014-01-14 | Zynga Inc. | Systems and methods for rendering three-dimensional objects |
US8373704B1 (en) | 2008-08-25 | 2013-02-12 | Adobe Systems Incorporated | Systems and methods for facilitating object movement using object component relationship markers |
US8306328B2 (en) | 2009-01-26 | 2012-11-06 | Mitsubishi Electric Research Laboratories | Method for converting outline characters to stylized stroke characters |
US8400472B2 (en) | 2009-02-25 | 2013-03-19 | Technion Research & Development Foundation Limited | Method and system of geometric deformation |
US9053553B2 (en) * | 2010-02-26 | 2015-06-09 | Adobe Systems Incorporated | Methods and apparatus for manipulating images and objects within images |
US8830226B2 (en) | 2010-09-28 | 2014-09-09 | Apple Inc. | Systems, methods, and computer-readable media for integrating a three-dimensional asset with a three-dimensional model |
US8854375B2 (en) * | 2010-10-19 | 2014-10-07 | Dynacomware Taiwan Inc. | Method and system for generating gray dot-matrix font from binary dot-matrix font |
US20120154397A1 (en) * | 2010-12-03 | 2012-06-21 | Old Dominion University Research Foundation | Method and system for generating mesh from images |
EP2530623A1 (en) | 2011-05-30 | 2012-12-05 | Technische Universität München | Wave kernel signature for feature description |
US9024938B2 (en) | 2011-07-29 | 2015-05-05 | Adobe Systems Incorporated | Methods and apparatus for sweep-based freeform deformation of 3-D models |
US8994736B2 (en) | 2011-09-23 | 2015-03-31 | Adobe Systems Incorporated | Methods and apparatus for freeform deformation of 3-D models |
US10424112B2 (en) * | 2012-05-14 | 2019-09-24 | Autodesk, Inc. | Mesh boundary smoothing |
US9075933B2 (en) * | 2012-10-11 | 2015-07-07 | Adobe Systems Incorporated | 3D transformation of objects using 2D controls projected in 3D space and contextual face selections of a three dimensional bounding box |
US9336566B2 (en) | 2012-12-14 | 2016-05-10 | Industry-Academic Cooperation Foundation, Yonsei University | Image deformation method and apparatus using deformation axis |
US9508179B2 (en) | 2013-07-19 | 2016-11-29 | Lucasfilm Entertainment Company Ltd. | Flexible 3-D character rigging development architecture |
US9235903B2 (en) * | 2014-04-03 | 2016-01-12 | Sony Corporation | Image processing system with automatic segmentation and method of operation thereof |
JP6857980B2 (ja) | 2016-08-02 | 2021-04-14 | キヤノン株式会社 | 情報処理装置、情報処理装置の制御方法およびプログラム |
US10008014B2 (en) | 2016-08-25 | 2018-06-26 | Adobe Systems Incorporated | Tool for creating and editing arcs |
US10210636B2 (en) | 2016-08-31 | 2019-02-19 | Autodesk, Inc. | Automatic snap for digital sketch inking |
US10510186B2 (en) | 2017-12-22 | 2019-12-17 | Adobe Inc. | Digital media environment for intuitive modifications of digital graphics |
US10388045B2 (en) | 2018-01-04 | 2019-08-20 | Adobe Inc. | Generating a triangle mesh for an image represented by curves |
US10410317B1 (en) | 2018-03-26 | 2019-09-10 | Adobe Inc. | Digital image transformation environment using spline handles |
US20190318523A1 (en) | 2018-04-16 | 2019-10-17 | Zhuhai Kingsoft Online Game Technology Co., Ltd. | Methods and Systems for Monitoring User Activity and Managing Controllers in 3-D Graphics |
US10832446B2 (en) | 2019-01-07 | 2020-11-10 | Adobe Inc. | Bone handle generation |
US10943375B2 (en) | 2019-04-17 | 2021-03-09 | Adobe Inc. | Multi-state vector graphics |
-
2018
- 2018-01-04 US US15/861,908 patent/US10388045B2/en active Active
- 2018-10-08 CN CN201811168267.6A patent/CN110009721B/zh active Active
- 2018-10-08 DE DE102018007941.5A patent/DE102018007941A1/de active Pending
- 2018-10-09 AU AU2018247213A patent/AU2018247213B2/en active Active
- 2018-10-16 GB GB1816796.5A patent/GB2570025B/en active Active
-
2019
- 2019-05-30 US US16/427,005 patent/US10878604B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101065782A (zh) * | 2004-11-27 | 2007-10-31 | 布雷克成像有限公司 | 在网格表面和立体对象上产生和测量表面线的系统和方法以及网格分割技术(“曲线测量”) |
CN101189600A (zh) * | 2005-06-30 | 2008-05-28 | 微软公司 | 对程序几何对象进行三角剖分 |
CN104318591A (zh) * | 2014-10-16 | 2015-01-28 | 南京师范大学 | 一种带边界平面流场的动态绘制方法 |
CN106683176A (zh) * | 2016-12-30 | 2017-05-17 | 飞依诺科技(苏州)有限公司 | 一种脏器三维模型构建方法及装置 |
Non-Patent Citations (1)
Title |
---|
张军 ; 戴霞 ; .一种针对基于图像的3D重建网格的简化算法.计算机工程与应用.2006,(第08期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
US20190206100A1 (en) | 2019-07-04 |
GB2570025B (en) | 2020-07-01 |
AU2018247213B2 (en) | 2021-07-22 |
CN110009721A (zh) | 2019-07-12 |
GB201816796D0 (en) | 2018-11-28 |
AU2018247213A1 (en) | 2019-07-18 |
DE102018007941A1 (de) | 2019-07-04 |
US20190279406A1 (en) | 2019-09-12 |
US10878604B2 (en) | 2020-12-29 |
US10388045B2 (en) | 2019-08-20 |
GB2570025A (en) | 2019-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110009721B (zh) | 生成由曲线表示的图像的三角网格 | |
US11302053B2 (en) | Determining image handle locations | |
US11049307B2 (en) | Transferring vector style properties to a vector artwork | |
US11694334B2 (en) | Segmenting objects in vector graphics images | |
US10943375B2 (en) | Multi-state vector graphics | |
US11216998B2 (en) | Jointly editing related objects in a digital image | |
JP2006285765A (ja) | 画像処理システムおよび画像処理プログラム | |
Wu et al. | ViSizer: a visualization resizing framework | |
US11450078B2 (en) | Generating height maps from normal maps based on virtual boundaries | |
US11200645B2 (en) | Previewing a content-aware fill | |
US11257290B2 (en) | Decimating a three-dimensional mesh via successive self-parameterization | |
US11392806B2 (en) | Differentiable rasterizer for vector font generation and editing | |
US10586311B2 (en) | Patch validity test |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |