通过选择性地将栅格图像转换为向量绘图部分来生成增强的数字图像的制作方法

文档序号:19378565发布日期:2019-12-11 00:07阅读:309来源:国知局
通过选择性地将栅格图像转换为向量绘图部分来生成增强的数字图像的制作方法



背景技术:

近年来,开发人员已经生成了用于创建数字绘图的各种硬件和软件平台。实际上,利用这些平台,计算系统现在可以创建、编辑、保存和共享向量图,诸如包括贝塞尔曲线的图。与栅格图像(例如由像素组成的图像)不同,向量图可以缩放到任意尺寸而不会产生模糊或伪影,并且在许多情况下,比栅格图像更紧凑地存储。然而,尽管向量绘图具有优点,但是诸如数码相机和扫描仪的许多电子设备仍然产生栅格图像。例如今天在线发现的大多数数字图像都被创建并存储为栅格图像。

由于向量绘图相对于栅格图像的优点,个人经常期望将栅格图像转换成向量图。为了转换栅格图像,传统的图像转换系统通常提供两种选择。首先,传统系统跟踪用向量曲线手动跟踪栅格图像的多个用户交互,以将栅格图像转换成向量图。替代地,传统系统采用批量转换过程,将整个栅格图像转换为向量图。如下所述,这些选项中的每一个都包括许多缺点和缺点。

关于栅格图像的数字跟踪,传统系统是不准确且低效的。例如传统系统要求用户通过精确地在期望被跟踪的边缘上精确地操纵光标来手动地跟踪栅格图像的边缘。因此,用户在栅格图像中手动跟踪边缘的过程是繁琐且耗时的过程,并且经常导致用户跟踪并重新跟踪边缘,直到得到准确的线跟踪结果。

除了对用户来说非常麻烦之外,使用数字跟踪的传统系统需要相当大的处理能力和时间来将栅格图像转换成向量图。例如使用数字工具手动跟踪像素需要在很长一段时间内跟踪许多用户交互(除了用户的重要培训和经验之外)以获得足够的结果。实际上,因为传统系统需要跟踪像素,所以需要相当长的时间来将栅格图像转换成向量图。此外,即使在使用诸如折断笔工具的数字工具的帮助时,追踪整个边缘通常也会产生令人不满意的结果。实际上,传统系统通常生成非最佳拟合的向量图,因为它们一次考虑边缘的小增量片而不是整个边缘。例如这些辅助工具经常会错过栅格图像中的端点、角点和边缘的急转弯,从而导致差拟合的曲线。总的来说,数字跟踪产生的结果很差,并且导致计算资源和相关用户的效率低下。

批量转换处理还产生不准确的结果和计算低效率。例如批量转换通过将图像中找到的所有边缘刚性地转换为参数曲线(例如贝塞尔曲线)来处理栅格图像。在批处理之后,传统系统需要大量用户输入,浪费大量时间来删除不期望的和附加的曲线,同时拟合由批量转换处理引起的不准确性(例如错误连接的边缘或不准确的参数曲线)。当用户找到并拟合不必要或错误的参数曲线时,这种“除草”过程增加了生成栅格图像的时间。

此外,转换栅格图像中的所有边缘会导致计算设备浪费不必要的处理能力和存储器资源。例如传统的图像转换系统浪费了不必要的处理资源,将来自栅格图像的边缘转换成通常用于个体的向量,然后移除许多向量并校正其他向量。此外,在转换过程期间,传统系统通常需要计算设备来存储所生成的转换数据,这需要额外的存储空间。实际上,计算设备生成并存储个体随后移除或改变的许多向量的转换数据,这浪费了计算机存储器和存储资源。

作为另一个缺点,传统的图像转换系统采用复杂的过程将栅格图像转换成向量图。通常,由于复杂性,个人必须等待转换发生。此外,由于上述复杂性和存储限制,许多便携式计算设备不能将整个栅格图像(特别是高分辨率栅格图像)转换为向量绘图。

这些以及其他问题和麻烦与传统图像转换系统一起存在。



技术实现要素:

本公开的一个或多个实施例提供益处和/或解决本领域中的前述问题中的一个或多个(或其他问题),其中系统、计算机可读介质和方法通过将栅格图像中的栅格元素转换为向量绘图分段来高效地生成增强的数字图像。例如在各种实施例中,所公开的系统基于稀疏数量的用户交互来选择性地标识、显示并将栅格图像的各个边缘转换为向量绘图分段。此外,所公开的系统可以采用像素线步进算法来甚至在便携式客户端设备上实时标识和提供用于栅格图像的选择性边缘的像素线。

为了说明,在一个或多个实施例中,所公开的系统生成栅格图像的边缘图,该栅格图像包括栅格元素(例如在栅格图像中描绘的物理对象或项目,诸如前景或背景元素)。基于与图形用户界面内的栅格图像中显示的栅格元素的第一用户交互,所公开的系统在检测到边缘图内的对应边缘时生成像素线(即,通过沿边缘图中检测到的边缘的像素步进而生成的像素集合)。附加地,所公开的系统将从边缘图内的边缘生成的像素线叠加栅格图像上。在检测到在图形用户界面内选择像素线的第二用户交互时,所公开的系统将向量绘图分段(即,诸如贝塞尔曲线的参数曲线)拟合到像素线,并在该图形用户界面内显示拟合的向量绘图分段。类似地,所公开的系统基于检测到的用户交互来选择性地将栅格图像的附加边缘变换为向量绘图分段。

如上所述,在各种实施例中,所公开的系统可以基于与图形用户界面内的栅格图像和像素图的第一用户交互来生成像素线。例如在一个或多个实施例中,所公开的系统使用第一用户交互来映射到作为第一边缘的一部分的边缘图中的像素。从像素开始,所公开的系统可以沿着第一边缘在一个或多个方向上步进到连接像素,直到满足线终止条件。在一些实施例中,所公开的系统相对于对角像素优先使用相邻像素,作为步进算法的一部分。当满足线终止条件时,所公开的系统使用对应像素的坐标和附加连接像素中的每一个来形成像素线。如上所述,这在图形用户界面中向用户显示。通过选择性地和高效地生成像素线,所公开的系统绘制个体像素线以用于实时显示。

以下描述阐述了所公开的系统和方法的一个或多个实施例的附加特征和优点。在一些情况下,这些特征和优点对于本领域技术人员来说是显而易见的,或者通过实施所公开的实施例而获知。

附图说明

具体实施方式通过使用附图来描述具有附加特征和细节的一个或多个实施例,如下面简要描述的。

图1示出了根据一个或多个实施例的从栅格图像生成向量绘图。

图2a-2g示出了根据一个或多个实施例的通过将栅格图像中的栅格图像变换为向量绘图分段来生成增强的数字图像。

图3a-3c示出了根据一个或多个实施例将多个向量曲线连接在一起以形成向量绘图分段。

图4a-4f示出了根据一个或多个实施例的具有最小用户交互的修剪向量曲线。

图5a-5b示出了根据一个或多个实施例的基于图形用户界面的缩放级别修改边缘图的边缘检测强度。

图6示出了根据一个或多个实施例的基于用户与图形用户界面内的栅格图像的交互从边缘图生成像素线。

图7a-7c示出了根据一个或多个实施例的步进通过边缘图中的边缘以生成像素线。

图8示出了根据一个或多个实施例的检测像素线内的角落像素。

图9示出了根据一个或多个实施例的高速缓存用于将贝塞尔曲线拟合到像素线的贝塞尔系数矩阵。

图10示出了根据一个或多个实施例的栅格图像选择变换系统的示意图。

图11示出了根据一个或多个实施例实现栅格图像选择变换系统的示例性环境的示意图。

图12示出了根据一个或多个实施例的用于通过将栅格图像变换为向量绘图来生成增强数字图像的一系列动作的流程图。

图13示出了根据一个或多个实施例的用于通过将栅格图像中的栅格元素变换为向量绘图分段来高效地生成增强数字图像的一系列动作的流程图。

图14示出了用于实现本公开的一个或多个实施例的示例性计算设备的框图。

具体实施方式

本公开描述了选择性栅格图像变换系统的一个或多个实施例,其通过将在栅格图像中显示的用户选择的栅格元素变换为向量绘图分段来快速且高效地生成增强的数字图像。例如选择性栅格图像变换系统(或简称为“图像变换系统”)基于用户交互来检测栅格图像中的各个边缘,并将用户选择的边缘分别变换为向量绘图分段。与传统系统不同,图像变换系统通过高效地并且选择性地将栅格图像中示出的栅格元素(例如前景对象)的边缘变换为向量绘图来消除浪费的批处理操作和不必要的转换数据存储。此外,图像变换系统有利地减少了产生这种向量绘图所需的用户交互的总次数。

为了说明,在各种实施例中,图像变换系统通过将栅格图像中的栅格元素变换为向量绘图分段来生成增强的数字图像。在一个或多个实施例中,图像变换系统通过检测在栅格图像中显示的栅格元素(例如用户想要转换为向量形式的对象)的边缘来生成边缘图。基于用户与栅格元素的边缘的交互,图像变换系统标识边缘图内的对应的检测到的边缘。响应于用户交互,图像变换系统生成与检测到的边缘对应的像素线(即,通过沿着边缘图中检测到的边缘跟踪像素来生成的像素线),并在图形用户界面中显示像素线。附加地,图像变换系统在图形用户界面中检测指示像素线的选择的附加用户交互。作为响应,图像变换系统将向量绘图(例如线和贝塞尔曲线)拟合到像素线,并在图形用户界面内显示向量绘图分段。

在一些实施例中,图像变换系统基于将图形用户界面中的用户交互映射到边缘图来标识边缘图中的检测到的边缘。例如图像变换系统从图形用户界面中的用户交互来确定栅格图像坐标,并将坐标映射到边缘图以标识边缘图内的检测到的边缘。此外,图像变换系统沿着检测到的边缘标识像素,从该像素开始生成像素线。

如上所述,在一些实施例中,当用户与栅格图像中的边缘交互时(例如通过将光标悬停在边缘上),图像变换系统生成像素线并在图形用户界面中的栅格图像上显示像素线(以帮助用户有选择地生成向量绘图分段)。在一个或多个实施例中,图像变换系统在像素线对应的栅格元素的边缘(例如图像中描绘的项目的边缘)上绘制像素线。附加地,在各种实施例中,图像变换系统突出显示或以其他方式强调像素线,使其突出给用户。因此,当用户与栅格图像中的不同边缘交互(例如围绕光标移动)时,图像变换系统显示对应于当前用户交互的不同个体像素线。

如上所述,在各种实施例中,图像变换系统将向量绘图分段拟合到像素线并在图形用户界面内显示向量绘图分段。在一个或多个实施例中,图像变换系统延迟拟合向量绘图分段直到在图形用户界面中检测到附加用户交互(例如选择像素线)之后。以这种方式,仅用户选择的边缘(或边缘的一部分)被变换为向量绘图分段,使得用户能够基于少量的用户交互来将栅格图像的期望边缘快速变换为向量绘图。

一旦图像变换系统绘制第一向量绘图分段,在一个或多个实施例中,图像变换系统使用户能够添加附加的向量绘图分段。例如在显示第一向量绘图分段时,图像变换系统基于与栅格元素的第二边缘(例如前景或背景对象的边缘)的后续用户交互,在图形用户界面内生成并显示第二像素线。在一些实施例中,如果用户选择第二像素线,则图像变换系统通过向量化第二像素线来生成第二向量绘图分段。在附加的实施例中,图像变换系统将第一向量绘图分段和第二向量绘图分段内联连接以形成连续的向量绘图分段。以这种方式,图像变换系统使用户能够容易且快速地将多个连续边缘连接在一起以生成增强图像。

类似地,当图像变换系统绘制比期望长的向量绘图分段时,在各种实施例中,图像变换系统使用户能够快速修剪向量绘图分段。例如在一个或多个实施例中,图像变换系统沿着绘制的向量绘图分段接收用户选择,以在所选择的点处修剪向量绘图分段。在一些实施例中,图像变换系统在用户交互期间向用户提供视觉反馈,以标识要移除的向量绘图分段的部分,如下所述。

在一些实施例中,图像变换系统还允许通过基于栅格图像的缩放级别修改边缘检测的强度来灵活地生成增强的数字图像。例如在一个或多个实施例中,当检测到高缩放级别时,图像变换系统使用较高密度的可用像素来重新生成边缘图,这导致新边缘图内的更详细的边缘。当边缘图包括附加的检测到的边缘时,在一些实施例中,图像变换系统还生成并显示更详细的像素线。类似地,当检测到低缩放级别时,图像变换系统使用较低密度的可用像素(例如下采样像素)来重新生成边缘图,这导致新边缘图内的不太详细的边缘并且减少了边缘图中检测到的边的数目。

如上所述,在一个或多个实施例中,图像变换系统生成与检测到的边缘对应的像素线,并在图形用户界面中显示像素线。在一个或多个实施例中,图像变换系统采用精确且高效的像素步进过程来生成像素线。例如图像变换系统基于用户在栅格图像中的交互来标识边缘图内的边缘的第一像素。从第一像素开始,图像变换系统沿第一方向步进以沿着边缘连接像素,直到满足线终止条件。在各种实施例中,图像变换系统基于相对于对角像素优先使用相邻像素来选择边缘上的连接像素以步进到下一个。

在沿着边缘步进时满足线路终止条件时,在一个或多个实施例中,图像变换系统通过将第一像素和连接像素添加到像素线来形成像素线。如果需要,图像变换系统沿着边缘沿相反方向从第一像素重复步进过程,直到满足相反方向的线终止条件。然后,如上所述,图像变换系统通过将贝塞尔曲线拟合到像素线来生成包括向量绘图分段的增强数字图像。

如上所述,图像变换系统通过沿边缘连接像素步进直到满足线终止条件。实际上,在一个或多个实施例中,图像变换系统沿边缘图内的边缘标识连续连接像素,直到边缘结束、分裂成多个边缘、或与其自身相交(例如当图像变换系统在闭合边缘上开始时)。在一些实施例中,当连接像素具有三个相邻像素或三个对角像素时,图像变换系统确定边缘分割。

还如上所述,在一个或多个实施例中,图像变换系统将贝塞尔曲线拟合到像素线。在各种实施例中,图像变换系统通过利用贝塞尔系数的高速缓存矩阵以将贝塞尔曲线拟合到像素线来进一步提高效率。例如图像变换系统通过求解矩阵方程来生成用于n像素的第一像素线的贝塞尔系数矩阵,以找到最佳拟合贝塞尔曲线到第一像素线的n个像素组的贝塞尔系数。附加地,图像变换系统缓存计算的贝塞尔系数的矩阵。然后,在标识具有n个像素的第二像素线(例如与第一线相同的像素数)时,图像变换系统使用高速缓存的矩阵将贝塞尔曲线拟合到第二线,而不必求解矩阵方程。

实际上,如果高速缓存相应的矩阵,则图像变换系统不需要生成新的贝塞尔系数矩阵。通常,要拟合的许多像素线具有相同的长度,使图像变换系统能够重复使用相同的高速缓存矩阵,大大减少了计算每次用贝塞尔曲线拟合像素线时代表像素线的最优贝塞尔曲线段所需的计算机处理。

如在先前描述中显而易见的,图像变换系统提供优于传统图像变换系统的许多优点和益处。作为初始事项,图像变换系统需要越来越少的精确用户交互来生成准确的数字向量图。结果,相对于传统系统,用户所需的时间和输入显著减少。此外,图像变换系统通过减少计算机处理、增加灵活性和减少存储器存储要求来改进计算设备的功能。附加地,在改进计算设备的功能的同时,图像变换系统还产生比传统图像变换系统更准确的结果。

为了说明,图像变换系统通过选择性地将栅格图像变换为向量绘图来高效地利用计算资源来减少计算机处理。在一个或多个实施例中,图像变换系统仅变换由用户选择的像素线,而不是将栅格图像中的所有检测到的边缘批量转换成贝塞尔曲线。以这种方式,图像变换系统不会通过转换和过度处理用户必须立即移除的许多边缘来浪费计算资源。实际上,图像变换系统将贝塞尔曲线拟合到从通过用户交互选择的边缘生成的像素线,使得计算设备仅处理和拟合对应于用户实际期望的那些边缘的像素线。附加地,图像变换系统所利用的过程和方法是可靠的,并且比传统系统所采用的流线化(例如更简单),进一步减少了将栅格图像变换为向量绘图时所需的计算资源。

如上所述,图像变换系统增加了灵活性并改进了搜索。例如图像变换系统使用户能够选择栅格图像的哪些边缘变换为向量绘图分段而不需要栅格图像中的所有边缘的转换。实际上,图像变换系统使用户能够快速搜索和标识栅格图像中的期望边缘/像素线,并且作为响应,图像变换系统选择性地将像素线变换为向量绘图分段。此外,通过仅搜索和选择要添加到向量绘图分段的所需像素线,图像变换系统消除了寻找和去除不需要的转换向量和/或拟合错误转换的向量所需的计算机处理。

此外,图像变换系统通过采用贝塞尔系数的高速缓存矩阵来减少存储器存储要求。具体地,图像变换系统使用相同的高速缓存矩阵来将多个像素线拟合到各种贝塞尔曲线,而不是每次将像素线转换为贝塞尔曲线时必须生成和存储新的贝塞尔系数矩阵。实际上,通过使用高速缓存的矩阵,图像变换系统提高了处理效率,同时降低了存储器存储要求。

总的来说,因为图像变换系统改进了计算设备的功能以及减少了存储器存储要求,所以大多数计算设备使用图像变换系统来选择性地将栅格图像变换为向量绘图,同时实现高度精确的结果。例如不能转换整个栅格图像的便携式计算设备容易使用图像变换系统将栅格图像变换为向量绘图。实际上,图像变换系统使便携式计算设备能够将高分辨率栅格图像变换成向量绘图。

如前面的讨论所示,本公开使用各种术语来描述图像变换系统的特征和优点。作为参考,现在提供关于这些术语的使用的附加细节。例如如本文所使用的,术语“栅格图像”指的是由像素构成的电子或数字图像。具体地,术语“栅格图像”包括通过对像素网格中的各种像素着色或渐变而描绘的一个或多个栅格元素的图像。栅格图像具有固定的分辨率,并且放大栅格图像通常会导致模糊和数字伪影,因为像素网格被放大而不会引入更多信息。栅格图像文件格式的常见示例包括gif、jpeg、png和tiff文件。

此外,如本文所使用的,术语“栅格元素”指的是在栅格图像中描绘的项目或对象。具体地,栅格元素包括在栅格图像中描绘前景对象/项目或背景对象/项目的像素集合。因此,关于描绘狗的栅格图像,栅格元素将包括描绘狗的像素。

如本文所用,术语“向量绘图”是指包括一系列数学曲线和线的数字图像。术语“向量绘图”包括下面定义的一个或多个向量绘图分段或曲线。因为向量绘图采用数学方程来表示边缘而不是像素网格,所以放大向量绘图不会沿向量绘图分段的边缘引起锯齿或数字伪影。实际上,向量绘图可以调整大小而不会损失颜色或平滑度的质量。向量文件格式的常见示例包括svg,eps和pdf文件。如本文所用,术语“向量绘图”和“增强数字图像”可互换使用。

如上所述,术语“向量绘图分段”是指向量绘图内的基于向量的曲线或线。术语“向量绘图分段”包括向量绘图内的单个可缩放曲线、可缩放曲线的组合或可缩放的直线。向量绘图分段包括能够插入密集的点阵列(例如像素)的任意参数曲线公式。例如向量绘图分段可以包括三次贝塞尔曲线段(例如由四个控制点定义的单个三次曲线)、三次贝塞尔曲线(例如一个或多个三次连接的贝塞尔曲线段)、或贝塞尔路径(例如贝塞尔曲线和直线的组合)。附加地,虽然本文中经常描述贝塞尔曲线段和曲线,但是图像变换系统可以附加地或替代地使用其他形式的参数分段和曲线作为向量绘图分段,诸如hermite曲线、b样条、非均匀有理基准样条、kappa-曲线、catmull-rom样条曲线或其他能够逼近密集系列点的参数曲线。

如本文所用,术语“贝塞尔曲线”是指用于模拟平滑曲线的参数曲线。通常,术语“贝塞尔曲线”包括一个或多个三次贝塞尔曲线段,其中每个贝塞尔曲线段由多个点(例如起点、终点和两个控制点)定义。在替代实施例中,术语“贝塞尔曲线”包括针对任意程度(例如线性、二次、三次等)定义的贝塞尔曲线段。

如本文所使用的,术语“边缘图”指的是栅格图像的检测边缘的数字表示。术语“边缘图”包括定义形成栅格图像边缘的像素的文件、矩阵或数字集合(例如图像或位图)。图像变换系统基于栅格图像内的图像亮度、阴影或颜色的急剧改变来标识边缘。在一个或多个实施例中,图像变换系统采用canny边缘检测来检测栅格图像中的边缘。例如图像变换系统可以利用canny,j.,acomputationalapproachtoedgedetection,ieeetrans.patternanalysisandmachineintelligence,8(6):679–698,1986中描述的canny边缘检测算法,其全部内容通过引用并入本文。在替代实施例中,图像变换系统采用其他边缘检测方法或过程来生成栅格图像的边缘图。在许多实施例中,边缘图包括一个像素宽的边缘。此外,当栅格图像中的边缘(例如栅格元素的线或曲线)比三个像素宽时,边缘图包括边缘的内边缘和/或外边缘。

如本文所使用的,术语“像素线”是指边可以与栅格图像一起显示的缘图内的边缘上的多个像素(例如边缘的像素的子集)。术语“像素线”包括边缘图中的连续、非重叠和非分裂像素集合。附加地,在确定像素线时,图像变换系统将像素线绘制为在相应的栅格图像中叠加,如下所示和所述。

如本文所使用的,术语“连接像素”指的是共享至少一个公共边或角的边缘图中的两个像素。对于给定的连接像素,连接像素是相邻像素(即,共享一边的像素,诸如顶部、底部、左侧或右侧,以及具有给定连接像素的两个角)或对角像素(即,像素共享一个角,但没有给定连接像素的边)。相邻像素和对角像素的示例在图7b中示出。通常,边缘图的边缘上的给定连接像素具有多个相邻像素和/或对角像素。

如上所述,图像变换系统通过沿边缘图中的边缘在连接像素之间步进直到线路终止条件被满足来生成像素线。如本文所使用的,术语“线路终止条件”指的是指示像素线的末端的阈值、规则或状态。术语“线路终止条件”包括步进(或到达)给定像素,而没有被步进或添加到像素线(例如边缘的末端)的其他连接像素。附加地,术语“线路终止条件”包括像素分割(例如边缘分割),其中给定像素包括三个相邻像素或三个对角线像素。附加地,术语“线路终止条件”包括连接像素,如果步进到,则使像素线自身重叠(例如如在闭环边缘的情况下)。下面示出并提供线路终止条件的示例。

如本文所使用的,术语“用户交互”指的是从输入设备接收的用户输入。术语“用户交互”包括在图形用户界面内的一个或多个用户输入,结合将栅格图像的一个或多个边缘变换为向量绘图。在一些实施例中,用户交互包括用户移动光标或提供触摸输入以将注意力吸引到栅格图像中的边缘。在其他实施例中,用户交互包括用户选择在图形用户界面内示出的像素线,其请求图像变换系统将像素线变换为向量绘图分段。下面示出并提供了用户交互的附加示例。

如本文所使用的,术语“贝塞尔系数的高速缓存矩阵”或“高速缓存矩阵”指的是求解用于近似贝塞尔曲线到密集点集合的最佳拟合的等式所必需的系数的数字表示。术语“高速缓存矩阵”包括与像素线中的像素数对应的贝塞尔曲线近似系数的数字表示。高速缓存的数值矩阵的存储采用各种形式,诸如存储器中的数字矩阵、数据库、文本文件或贝塞尔系数的其他数字表示。例如当像素线包括相同数量的像素时,图像变换系统使用相同的贝塞尔系数矩阵来将贝塞尔曲线拟合到不同的像素线。在一些实施例中,如果用于像素线中的特定数量的像素的高速缓存的矩阵不位于高速缓存中,则图像变换系统生成(并且高速缓存)贝塞尔系数的矩阵。

现在参考附图,提供了图像变换系统的一个或多个实施例的附加描述、特征和优点。为了说明,图1包括根据一个或多个实施例的从栅格图像生成向量图的一系列动作100的概述。在一个或多个实施例中,图像变换系统执行一系列动作100。例如实现图像变换系统的客户端设备和/或服务器设备执行一系列动作100以从栅格图像生成向量绘图。

如图1所示,图像变换系统执行生成栅格图像的边缘图的动作102。例如图像变换系统标识具有由用户提供的栅格元素(例如狗)的栅格图像。在一个或多个实施例中,提供栅格图像以供图像变换系统或包括图像变换系统的另一系统(例如图像编辑系统)显示。

如上所述,图像变换系统生成(或接收)栅格图像的边缘图。关于图1,图像变换系统使用图像形式的边缘图,该边缘指示在栅格图像中检测边缘的位置。边缘图不需要在图形用户界面内向用户显示,而是在计算设备的背景中生成和使用。下面结合图2a-2b提供关于生成边缘图的附加细节。

如图1所示,图像变换系统还执行检测与栅格图像中的边缘的第一用户交互的动作104。例如用户将光标(例如经由由计算机鼠标或触摸输入的光标)移动到栅格图像中的边缘。如动作104所示,图像变换系统基于用户在对应于狗的外边缘的栅格图像的边缘附近移动光标来检测第一用户交互。下面结合图2a-2b提供关于检测用户交互的附加细节。

基于第一用户交互,图像变换系统可以生成像素线。为了说明,图1示出了执行使用边缘图来生成像素线的动作106的图像变换系统。更具体地,图像变换系统映射栅格图像中的第一用户交互以标识边缘图中的对应检测到的边缘。作为简单说明,图像变换系统将在动作104中示出的栅格图像中的边缘附近的光标映射到动作106中示出的边缘图,以检测边缘图中的对应边缘。

一旦图像变换系统标识出与用户交互相对应的边缘图中的检测到的边缘,图像变换系统就通过将步进算法应用于边缘图中的检测到的边缘来生成像素线。例如图像变换系统沿边缘图中的检测到的边缘标识连续像素以创建像素线。下面结合图2b-2e和6-7c提供关于产生像素线的附加细节。

附加地,如图1所示,图像变换系统还执行在栅格图像上显示像素线的动作108。例如在从边缘图生成像素线时,图像变换系统在图形用户界面中显示具有栅格图像的像素线。例如在一个或多个实施例中,图像变换系统将像素线映射到在栅格图像上显示的位图(例如图像层)。此外,因为边缘图是从栅格图像生成的,所以像素线显示在与检测到的第一用户交互相关联的栅格图像中的边缘上。为了说明,动作108示出了图像变换系统基于第一用户交互(例如光标的位置接近狗的轮廓边缘)在栅格图像上显示像素线(例如狗的轮廓)。

在一些实施例中,第一用户交互包括在图形用户界面内的栅格图像的边缘之间的光标移动。例如当第一用户交互将光标从栅格图像的第一边缘移动到第二边缘时,图像变换系统为第一边缘生成第一像素线,然后为第二边缘生成第二像素线。附加地,当光标靠近第一边缘时,图像变换系统显示第一像素线,然后,当光标远离第一边缘时,图像变换系统移除第一像素线。在检测到第二边缘附近的光标时,图像变换系统在栅格图像上显示第二像素线。值得注意的是,当响应于第一用户交互在栅格图像上显示像素线时,图像变换系统延迟将像素线变换为向量绘图分段。

如图1所示,图像变换系统还执行绘制拟合到像素线的向量绘图分段的动作110。例如图像变换系统检测用户选择在图形用户界面内(例如在栅格图像上)显示的像素线的第二用户交互。响应于检测到选择像素线的第二用户交互,图像变换系统将诸如三次贝塞尔曲线的向量绘图分段拟合到像素线,并且在图形用户界面中绘制向量绘图分段(例如作为第二个叠加)。下面提供关于将向量绘图分段拟合到像素线的附加细节。

在一个或多个实施例中,在生成向量绘图分段时,图像变换系统检测标识边缘并选择对应像素线的附加用户交互。在大多数实施例中,仅当选择像素线时,图像变换系统才将向量绘图分段拟合到所选择的像素线。以这种方式,图像变换系统使用户能够选择性地标识栅格图像的哪些边缘/像素线变换为向量图,而不需要转换所有边缘或者需要移除不需要的转换边缘。此外,通过不将栅格图像的所有边缘转换成向量图,图像变换系统显著地降低了将栅格图像变换为向量图所需的处理要求。

下图提供了用于从栅格图像生成向量绘图的附加细节。例如图2a-2f示出了根据一个或多个实施例的通过将栅格图像中的基于栅格的元素变换为向量绘图分段来生成增强数字图像的进一步细节。具体地,图像变换系统使用用户交互来将栅格图像的所选部分变换为向量绘图。

如图所示,图2a-2f包括具有图形用户界面202的客户端设备200。在一个或多个实施例中,图像编辑系统提供图形用户界面202以在客户端设备200上显示。在这些实施例中,图像变换系统在图像编辑系统内操作。在替代实施例中,图像变换系统提供图形用户界面202。下面结合图10和11描述图像编辑系统的示例。

如图所示,图形用户界面202包括栅格元素206(例如具有徽标的马克杯)的栅格图像204。栅格图像204表示由用户提供的导入图像,诸如由数码相机捕获或从因特网下载的栅格图像。虽然未示出,但是栅格图像204可以包括多个栅格元素(例如对象或主题)。

栅格图像204内的栅格元素206包括许多边缘。如上所述,图像变换系统基于栅格图像内的图像亮度、阴影或颜色的改变来确定边缘。实际上,在大多数栅格图像中,栅格元素包括将栅格元素(例如前景对象)与图像的背景区分开的边缘。同样,栅格元素通常包括创建边的线、形状、颜色或图案。例如如图2a所示,栅格图像204中的栅格元素206包括多个边缘,包括外边缘和内边缘。

在各种实施例中,图像变换系统基于用户交互将用户选择的一个或多个边缘变换为向量绘图分段。作为上下文,用户交互可以包括通过一个或多个输入设备(例如文本输入设备、指针设备和/或触摸屏)从用户接收的单个交互或交互的组合。在一个或多个实施例中,图像变换系统基于用户提供的光标移动和选择(例如“点击”)(或其他用户输入,诸如触摸、拖动和/或在触摸屏上发布事件)来检测用户与图形用户界面202的交互。

如图2a所示,图形用户界面202包括指示用户交互的位置或地点的光标208(例如数字鼠标指针)。为了便于说明,在许多图中,光标显示在图形用户界面内。然而,图像变换系统可以在不显示光标的情况下执行本文描述的动作。例如图像变换系统使用其他输入(例如触摸屏输入)来检测用户交互,而不是使用光标移动和选择来检测用户交互。实际上,许多移动客户端设备不显示光标。因此,虽然关于检测用户交互来示出和描述光标,但是图像变换系统类似地通过附加或替代方法来检测用户交互。

在一个或多个实施例中,图像变换系统检测光标208在图形用户界面202内的移动(例如从客户端设备200上的操作系统接收光标位置)以及检测光标208的选择(例如“点击”)。例如如图2a所示,图像变换系统检测用户在栅格元素206上的标识的外边缘附近移动光标208。在各种实施例中,图像变换系统使用光标208的位置来检测用户期望向量化(例如,变换为向量绘图分段)的光栅元素206的边缘。

在一个或多个实施例中,在将所选边缘变换为向量绘图分段之前,图像变换系统首先检测栅格元素206的边缘。实际上,在一个或多个实施例中,图像变换系统首先确定在栅格图像204中的哪些像素构成边缘。在各种实施例中,图像变换系统通过生成边缘图来确定栅格图像204中的边缘。

图像变换系统使用边缘检测器算法生成边缘图。例如在一些实施例中,图像变换系统利用canny边缘检测器来生成栅格图像204的栅格位图表示(即,边缘图)。在替代实施例中,图像变换系统利用另一边缘检测器和/或算法来检测光栅图像204内的边缘。无论使用边缘检测器或算法,在生成边缘图时,在一个或多个实施例中,图像变换系统确保栅格图像204中的检测到的边缘被表示为边缘图210中的单像素-宽(即,1像素宽)线。

为了说明,图2b示出了由图像变换系统生成的栅格图像204的边缘图210。边缘图210中的每个检测到的边缘由单像素宽的线表示。在一些情况下,图像变换系统使用多个单像素宽线来表示栅格图像204中的较粗的线或形状(例如至少三个像素宽的线或形状)。当较粗的线或形状出现在栅格图像204中时,图像变换系统标识与线或形状相关联的多个边缘(例如具有内边缘、外边缘的形状或具有两个外边缘的线)。例如因为栅格图像204中的徽标周围的边界较厚,所以图像变换系统在对应的边缘图210中检测外部单像素宽线和内部单像素宽线。

当在栅格图像204中执行边缘的边缘检测时,图像变换系统使用各种边缘检测参数和/或可用像素的像素密度来检测更多或更少的边缘。例如图像变换系统修改一个或多个边缘检测参数以增加在栅格图像204中检测到的边缘的数量(例如检测较弱或较低对比度的边缘)。相反,图像变换系统修改一个或多个边缘检测参数以减少在栅格图像204中检测到的边缘的数量(例如仅检测更强或更高对比度的边缘),以减少高度纹理化的栅格图像中的杂乱。在一些实施例中,如下面参考图5a-5b所述,图像变换系统基于诸如选择操作的附加因素来修改边缘检测参数。

在各种实施例中,图像变换系统生成边缘图210以匹配栅格图像204的分辨率。通过提供具有与栅格图像相同的分辨率的边缘图,变换系统容易地在两个位图(即,栅格图像204和边缘图210)之间映射坐标和像素,如下所述。在替代实施例中,图像变换系统生成边缘图210以具有比栅格图像204更低或更高的分辨率。

在一个或多个实施例中,图像变换系统对栅格图像204执行预处理以改进边缘检测。例如图像变换系统应用一个或多个滤波器,其最小化颜色、降低噪声和/或增加栅格图像204的对比度。例如在一些实施例中,图像变换系统应用双边滤波器以减少噪声,同时在执行边缘检测并生成边缘图210之前保持栅格图像204的边缘清晰度。

在一些实施例中,图像变换系统在接收到来自用户的用于选择性地将栅格图像204上的边缘变换为向量绘图(例如将栅格图像204中的栅格元素206变换为向量绘图分段)的请求时生成边缘图。在替代实施例中,例如在加载栅格图像204或检测特定图像编辑工具的选择时,图像变换系统自动生成边缘图210。

虽然图2b示出了图形用户界面202内的边缘图210,但是在一个或多个实施例中,图像变换系统不向用户显示图形用户界面202内的边缘图210。实际上,图像变换系统在客户端设备200的背景中生成边缘图210作为栅格位图图像。在替代实施例中,图像变换系统显示与栅格图像204相关的边缘图210。例如图像变换系统提供边缘图210作为可以基于用户输入(即,用户交互)来在图形用户界面202内隐藏或显示的层。在另一示例中,图像变换系统将边缘图210显示为栅格图像的叠加。

如上面结合图2a所述,图像变换系统检测来自用户在栅格图像204上移动光标208的用户交互。基于光标208相对于栅格图像204的位置,图像变换系统标识边缘图210内的检测到的边缘。例如图像变换系统将光标208的位置从栅格图像204映射到边缘图210,以标识对应于光标208的位置的检测到的边缘。

更具体地,在一个或多个实施例中,图像变换系统基于光标位置(即,用户交互)来检测栅格图像204的x,y坐标。然后,图像变换系统将栅格图像坐标映射到边缘图210到边缘图210。实际上,当栅格图像204和边缘图210具有相同的分辨率时,存在一对一的像素对应关系。为了便于说明,边缘图210包括映射的光标209,其对应于图2a中的光标208的位置。然而,在许多实施例中,边缘图210不显示或包括光标,而是使用映射的坐标。

使用映射光标209(即,映射坐标),图像变换系统确定边缘图210内的一个或多个检测到的边缘。例如在一个或多个实施例中,图像变换系统确定检测到边缘是否在映射光标的阈值距离内(例如在3个像素、5个像素或10个像素内)。如果多个检测到的边缘在阈值距离内,则图像变换系统标识最接近映射光标209的位置的检测到的边缘。此外,在一些实施例中,图像变换系统标识最接近映射光标209的位置(例如,x,y坐标)的检测到的边缘上的像素。实际上,图像变换系统将映射光标209的坐标或映射坐标与沿检测到的边缘的一个或多个像素的坐标进行比较,以标识最近的像素。

为了说明,响应于检测到来自用户在栅格图像204上移动光标208的用户交互,图像变换系统标识边缘图210内的映射光标209的位置。基于映射光标209,图像变换系统确定检测到的边缘212接近映射的坐标。附加地,图像变换系统沿着检测到的边缘212标识最接近映射光标209的映射坐标的像素。

在标识检测到的边缘时,图像变换系统生成用于检测到的边缘的像素线。例如在一个或多个实施例中,图像变换系统采用步进算法来生成在检测到的边缘上连接像素的连续非终止线。在一些实施例中,当图像变换系统生成像素线时,图像变换系统沿着检测到的边缘存储每个像素的x,y像素坐标,其用于定义像素线。下面参考图6-7c提供关于从边缘图的检测到的边缘生成像素线的图像变换系统的附加描述。

此外,图像变换系统在栅格图像上显示基于边缘图中检测到的边缘生成的像素线。为了说明,图2c示出了第一像素线214,其突出显示在马克杯(即,栅格元素206)上的徽标的外边缘,其对应于所生成的像素线。例如在一个或多个实施例中,图像变换系统将从边缘图210中的检测到的边缘212生成的像素线的存储像素坐标映射到栅格图像204,以绘制第一像素线214。如图所示,第一像素线214是像素的栅格图像而不是向量绘图分段。值得注意的是,图像变换系统暂停向量化第一像素线214,直到检测到附加的用户交互,如下所述。

如上所述,图像变换系统在第一像素线214被绘制为栅格图像204的叠加时突出显示第一像素线214。在各种实施例中,图像变换系统在栅格图像上突出显示或以其他方式强调第一像素线214。例如图像变换系统采用各种颜色,权重,厚度和/或图案来将第一像素线214与栅格图像204进行对比。

在许多实施例中,图像变换系统生成边缘图210,基于用户交互标识边缘图210中的检测到的边缘212,生成第一像素线214,并且在用户与用户界面202交互(例如移动光标)时实时或接近实时地显示第一像素线214。此外,如前所述,图像变换系统通常不向用户显示边缘图210。因此,从用户的角度来看,当他或她将光标208移动到栅格图像204的边缘时,图像变换系统在光标208附近的边缘上近乎瞬时地显示第一像素线214。

在一个或多个实施例中,图像变换系统在光标208靠近第一像素线214的同时保持显示第一像素线214的叠加。例如当光标208在第一像素线214的阈值距离(例如,小于5个像素)内时,图像变换系统显示第一像素线214。然而,在检测到用户交互移动光标208远离第一像素线214时(例如超过阈值距离),图像变换系统从栅格图像204上移除第一像素线214的叠加。实际上,如果检测到的用户交互向图像变换系统发信号通知用户不再对第一像素线214感兴趣,则图像变换系统隐藏或移除第一像素线214。

在移除第一像素线214之后,如果图像变换系统稍后检测到在外徽标边缘上移动光标208的后续用户交互,则图像变换系统可再次绘制第一像素线214。例如图像变换系统搜索所生成的像素线表或像素线位图以确定光标208是否在为第一像素线214存储的像素坐标上(或在阈值数量的像素内以及比另一像素线中的像素更近),并且如果是,则绘制第一像素线214。在替换实施例中,图像变换系统基于后续用户交互来重复标识边缘图210中的检测到的边缘212的步骤,将步进算法应用于检测到的边缘212以生成新的像素线,并将新的像素线绘制为栅格图像204的叠加。

类似地,当图像变换系统确定用户交互将光标208移动到不同边缘时,图像变换系统生成用于光标208的更新位置的第二像素线。为了说明,图2d示出了第二像素线216,其基于光标208被用户移动到栅格图像204内的不同边缘而显示为栅格图像204的叠加。然后,图2e示出了图像变换系统基于检测到在徽标的外边缘的一部分上移动光标208的用户交互,移除第二像素线216并再次显示第一像素线214。

实际上,响应于检测到用户在栅格图像204上移动光标208,图像变换系统检查光标208的坐标与边缘图210的检测到的边缘,以及如果映射光标209的映射坐标在检测到的边缘的像素附近或上方,则图像变换系统通过从所标识的像素向外追踪检测到的边缘来生成像素线。此外,图像变换系统将像素线叠加在栅格图像204中的相应边缘上。然后,如果图像变换系统检测到用户将光标208移动远离检测到的边缘,则图像变换系统从图形用户界面中移除像素线叠加。

在大多数实施例中,图像变换系统仅在栅格图像204上方一次绘制单个像素线。然而,在替代实施例中,图像变换系统一次显示多于一个像素线。例如光标208远离像素线移动之后在移除像素线之前,图像变换系统可以在最小时间量内显示像素线。此外,在保持前一像素线的显示的同时,图像变换系统可以显示新的像素线。

如上所述,图像变换系统绘制第一像素线214而不对第一像素线214进行向量化。实际上,图像变换系统等待将第一像素线214变换为向量绘图分段,诸如贝塞尔曲线,直到用户提供执行变换的指示。例如图像变换系统检测选择(例如点击、按下、按住或按压)在栅格图像204上显示的像素线的用户交互。作为响应,图像变换系统为所选择的像素线生成向量绘图分段。

为了说明,图像变换系统检测选择图2e中的第一像素线214的用户交互。作为响应,图像变换系统为第一像素线214生成向量绘图分段,如图2f所示。具体地,图2f示出了向量绘图分段220来代替第一像素线214。在一个或多个实施例中,图像变换系统在单独的叠加(例如,层)中提供向量绘图分段220,其包括从所选择的像素线(例如,向量绘图层)变换的每个向量绘图分段。

在各种实施例中,图像变换系统通过将贝塞尔曲线拟合到所选像素线来将所选像素线变换为向量绘图分段。例如图像变换系统使用所选像素线的坐标以将贝塞尔曲线拟合到所选像素线。具体地,图像变换系统可以将多个贝塞尔曲线拟合到像素线以确保平滑、准确和紧密配合。关于将贝塞尔曲线拟合到所选像素线的附加描述在下面参考图8-9提供。

附加地,图2f示出了与向量绘图分段220相关的向量控件218(例如控制线和控制点)。在一个或多个实施例中,图像变换系统向用户提供向量控件218以进一步修改向量绘图分段220以适合用户的偏好。在向量绘图分段220由多个贝塞尔曲线组成的实施例中,图像变换系统可以为每个贝塞尔曲线提供向量控制218。此外,在各种实施例中,图像变换系统隐藏用于图形用户界面202的向量控件218,直到用户选择向量绘图分段220和/或显示向量控件218的选项。

在绘制向量绘图分段220时,图像变换系统向用户提供向量绘图。例如图像变换系统为用户提供可选择的选项以移除栅格图像204和/或在单独的图像中显示向量绘图分段220的向量图。为了说明,图2g示出了包括向量绘图分段220的向量绘图222。此外,向量绘图222包括由用户选择并由图像转换系统转换的附加向量绘图分段(例如对应于马克杯的外边缘的像素线)。

如上所述,图像变换系统通过不对像素线进行向量化直到接收到用户输入以将像素线变换为向量绘图分段来提供许多优点。例如与执行批量转换的传统系统不同,仅转换用户期望的边缘,提供传统系统无法实现的灵活性。此外,这种选择性变换不仅通过增加的灵活性来简化和减少了对用户的图像编辑时间,选择性变换还通过不变换用户必须手动移除的不期望的边缘/像素线来减少计算步骤。实际上,图像变换系统通过变换较少的边缘而实现了比传统系统更高的计算效率。这也减少了存储器使用量。

作为另一个优点,图像变换系统通过允许用户验证栅格图像的边缘或边缘的一部分以变换为向量绘图分段来提供比传统系统增加的精度。然而,如果图像变换系统不正确地变换边缘,则图像变换系统提供选项和工具,使用户能够立即消除错误并实现期望的向量绘图分段。

图像变换系统可以通过将边缘的太少(例如太短)或太多(例如太长)变换为向量绘图分段而错误地将边缘的部分变换为向量绘图分段。作为概述,图3a-3b描述了使用户能够容易地放大向量绘图分段。图4a-4f描述了将向量绘图分段修剪为期望的长度。

具体地,图3a-3c示出了根据一个或多个实施例将多个向量曲线连接在一起以形成向量绘图分段。如图所示,图3a-3c包括上面结合图2a-2f描述的客户端设备200、图形用户界面202、栅格图像204和栅格元素206(例如马克杯)。

如上所述,在一些情况下,像素线或向量绘图分段比用户期望的短。为了说明,图3a示出了包围栅格元素206的外边缘的大部分但不是全部的向量绘图分段330。如果用户期望围绕栅格元素206的向量绘图分段,则图像变换系统使用户能够扩展向量绘图分段330或将向量绘图分段330连接到附加向量绘图分段。

为了说明,在图3b中,图像变换系统检测用户交互将光标308移动到马克杯手柄的外边缘(即,栅格元素206)。如上所述,图像变换系统标识对应边缘图(例如边缘图210)内的检测到的边缘,基于检测到的边缘来生成像素线,并且在栅格图像204上绘制像素线。例如如图所示,图像变换系统基于检测到移动光标308的用户交互,在栅格图像204中在马克杯手柄的外边缘上绘制像素线332。

如图所示,图3b包括向量绘图分段330和像素线332。实际上,虽然图像变换系统主要一次显示一个像素线,但是图像变换系统可以显示像素线以及一个或多个向量绘图分段。在检测到选择像素线332的用户交互时,图像变换系统可以将像素线变换为新的向量绘图分段。

附加地,图像变换系统可以连接两个相邻的向量绘图分段,如图3c中的扩展向量绘图分段330'所示。例如在一个或多个实施例中,图像变换系统基于用户提供连接向量绘图分段的指示来连接两个相邻向量绘图分段。例如用户按下修改键或用光标208选择像素线332并在释放光标208之前将其拖动到向量绘图分段330上以向图像变换系统提供将向量绘图分段连接在一起的请求。在替代实施例中,图像变换系统自动连接向量绘图中的相邻向量绘图分段。例如当启用连接选项时,图像变换系统会自动连接相邻的向量绘图分段。此外,图像变换系统可以自动连接不相邻但在彼此的阈值距离(例如3-5个像素)内的向量绘图分段。

在一个或多个实施例中,图像变换系统通过将两个向量绘图分段的末端链接在一起来连接两个相邻的向量绘图分段。例如图像变换系统使用一个或多个锚点将一个向量绘图分段链接到另一个向量绘图分段。在另一个示例中,图像变换系统连接向量绘图分段,确保c1或c2连续性。例如c1连续性是指曲线平滑度的度量,其中两条曲线连接使得两条曲线的切线角在连接处匹配。

在一些实施例中,图像变换系统通过将贝塞尔曲线重新拟合到组合像素线来将两个向量绘图分段连接在一起。例如图像变换系统将第一向量绘图分段所拟合的像素线与用户选择的第二像素线组合。基于组合像素线,图像变换系统重新拟合贝塞尔曲线以生成向量绘图分段。在一些情况下,图像变换系统将单个曲线拟合到组合像素线(或至少跨越两个像素线的连接),导致比连接在一起的多个曲线更美观的曲线或线。

如上所述,图像变换系统使用户能够在生成向量绘图分段时修剪向量绘图分段。为了说明,图4a-4f示出了根据一个或多个实施例的以最小的用户交互高效地修剪向量曲线的示例。如图所示,图4a-4f包括具有图形用户界面402的客户端设备200。如上所述,在一些实施例中,客户端设备200包括提供图形用户界面的图像编辑系统。例如图像编辑系统提供图形用户界面402,其中图像变换系统在图像编辑系统内操作。在备选实施例中,图像变换系统提供图形用户界面402。

如图所示,图形用户界面402包括具有栅格元素(例如跑车)的栅格图像404。在图4a中,图形用户界面402显示向量绘图分段406(例如多个贝塞尔曲线的三次贝塞尔曲线段)。例如图像变换系统基于用户选择对应的像素线来生成向量绘图分段406,如上所述。

为了修剪向量绘图分段406,在一个或多个实施例中,图像变换系统使用户能够选择修剪向量绘图分段406的位置。具体地,如图4a所示,图像变换系统检测到用户沿着向量绘图分段406选择分区点410。例如用户在向量绘图分段406上移动光标408,并选择用户期望修剪向量绘图分段406的分区点410。作为响应,图像变换系统添加示出分区点410的视点或指示。

附加地,在用户选择分区点410时,图像变换系统将向量绘图分段406分割或分离成两个部分。例如图4b示出了第一部分406a和第二部分406b。此外,在设置分区点410时,图像变换系统基于检测到的用户交互来标识要移除的部分。

为了说明,如图4b所示,在设置分区点410时,图像变换系统检测朝向向量绘图分段406的第二部分406b的光标移动。作为响应,图像变换系统在视觉上修改向量绘图分段406的第二部分406b,以向用户示出要修剪向量绘图分段406的哪个部分。例如如图所示,图像变换系统改变向量绘图分段406的第二部分406b的图案,诸如将第二部分406b绘制为虚线或点线。在其他实施例中,图像变换系统突出显示、加粗、颜色、权重、阴影、使得更透明、或隐藏向量绘图分段406的第二部分406b。在替代实施例中,不是在视觉上修改第二部分,而是图像变换系统修改在修剪向量绘图分段时保持的第一部分406a。

在基于用户交互(例如光标408朝向第二部分406b移动)标识向量绘图分段406的哪个部分以进行修剪之后,图像变换系统基于检测到进一步的用户输入来移除所标识的部分。例如在接收到向量绘图分段406的第二部分406b的选择时,图像变换系统修剪向量绘图分段406以仅包括向量绘图分段406的第一部分406a,如图4c所示。如上所述,图像变换系统通过重新拟合贝塞尔曲线来修剪向量绘图分段406。

在一个或多个实施例中,图像变换系统基于单个用户交互来修剪向量绘图分段406。例如图像变换系统检测用户与用户选择分区点410的交互的开始(例如按下鼠标按钮或按下触摸屏)。附加地,在保持选择(例如按住鼠标按钮或触摸屏输入)的同时,图像变换系统检测到光标408朝向量绘图分段406的第二部分406b移动。然后,在检测到用户的交互的结束(例如释放鼠标按钮或抬起触摸屏)时,图像变换系统移除第二部分406b。以这种方式,图像变换系统使用户能够利用单个用户交互(例如点击、拖动和释放)快速且毫不费力地修剪新生成的向量绘图分段406。此外,图像变换系统使用户能够在不改变图形用户界面402内的工具的情况下修剪向量绘图分段。

在替代实施例中,图像变换系统基于检测到多个用户交互来修剪向量绘图分段406。例如图像变换系统检测选择分区点410的第一交互。然后,图像变换系统检测第二交互,第二交互选择向量绘图分段406的第二部分406b以进行移除。

此外,除了修剪新生成的向量绘图分段之外,图像变换系统还可以修剪现有的向量绘图分段(例如贝塞尔曲线)。例如在选择修剪工具或修改器输入(例如按住键盘键或键组合)时,图像变换系统使用户能够选择分区点并修剪向量绘图分段,如前所述。

在一个或多个实施例中,图像变换系统还帮助用户修剪向量绘图分段。例如在检测到光标408接近向量绘图分段的预定距离(例如在5个像素内)并且在用户选择分区点之前,图像变换系统在最接近光标408的向量绘图分段的曲线上绘制斑点。此外,当光标408在预定距离内移动时,图像变换系统通过在最接近光标408的向量绘图分段上显示点来沿着向量绘图分段跟踪光标408。以这种方式,图像变换系统在检测到用户选择时向用户提供将放置分区点的位置的精确反馈。

在附加的实施例中,如图4d所示,图像变换系统在跟踪光标408时优先考虑角。如图所示,向量绘图分段416包括一个角。当沿着向量绘图分段416跟踪光标408时,图像变换系统检测到光标408和/或沿向量绘图分段416的跟踪点在角落的角落阈值距离(例如10个像素或用户-定义的距离)内。作为响应,图像变换系统沿着向量绘图分段416将跟踪点捕捉到角落。

优选角落,因为用户可能更喜欢在角落而不是角落附近修剪向量绘图分段。此外,用于沿着向量绘图分段416跟踪光标408的预定距离和用于将光标捕捉到角落的角阈值距离可以被设置为任意像素距离并且可以基于缩放级别而改变。然而,在大多数实施例中,角落阈值距离应该大于预定距离阈值,以确保图像变换系统优先考虑角点。

如图4d所示,图像变换系统检测到光标408靠近向量绘图分段416的角,并将视觉引导点418放置在向量绘图分段416的角处。如图4e所示,图像变换系统检测选择角作为分区点420的用户交互。例如在视觉引导点418捕捉到角落时,图像变换系统检测到用户交互选择角作为分区420的期望位置。在用户选择角处的分区点时,图像变换系统可以将向量绘图分段416分成两个部分(例如底部和顶部),如上所述。

还如图所示,在图4d中,图像变换系统检测到光标408朝向量绘图分段416的底部移动。图像变换系统基于向量绘图分段416的哪个部分更接近光标408来标识要移除的向量绘图分段416的哪个部分。以这种方式,图像变换系统基于用户移动光标408标识向量绘图分段416的部分以进行移除。此外,仅需要最少的光标移动来发信号通知要移除向量绘图分段416的哪个部分。在一些实施例中,该部分必须在阈值移除距离内,以被标识为要移除的向量绘图分段416的部分。

如上所述,在一个或多个实施例中,图像变换系统延迟移除所标识的部分,直到接收到确认移除所标识的部分的附加用户输入为止。如图4f所示,图像变换系统基于检测到确认移除向量绘图分段416的底部的用户交互(或用户交互的一部分)来移除向量绘图分段416的底部部分。

在一些实施例中,当图像变换系统修剪基于在边缘图中跟踪的像素线生成的向量绘图分段时,图像变换系统在边缘图中标记分区点(向量绘图分段被修剪的点)。以这种方式,基于边缘图生成的未来像素线和/或向量绘图分段也停止在用户指示的分区点处。实际上,图像变换系统在生成与栅格图像404相关的未来像素线和向量绘图分段时实现用户选择的分区点。

在各种实施例中,图像变换系统可以修剪向量绘图分段的子部分。例如图像变换系统使用户能够沿向量绘图分段选择两个分区点,并提供选择以移除分区点之间的向量绘图分段的部分。为了说明,在接收到第一分区点的选择时,如果图像变换系统检测到向量绘图分段上的第二点的选择,则图像变换系统将第二分区点添加到向量绘图分段。在一些实施例中,用户基于按住修改器输入来指示添加第二分区点的期望。在替代实施例中,用户通过在第一分区点按下光标408并在向量绘图分段上方的第二分区点处释放光标408,而不是在向量绘图分段附近但不是上方来释放光标408,来指示期望添加第二分区点,其仅在第一个分割点处修剪向量绘图分段,如上所述。

除了使用户能够放大和修剪向量绘图分段之外,图像变换系统还向用户提供附加的向量绘图分段编辑特征,以更好地帮助用户将栅格图像变换为向量绘图。为了说明,在一个或多个实施例中,图像变换系统使得用户能够将针对栅格图像中的一个边缘绘制的向量绘图分段移动(例如拖动)到另一边缘。该特征对于栅格图像具有彼此接近的较高边缘密度并且用户可能最初选择错误边缘以变换为向量绘图分段是有用的。实际上,图像变换系统使用户能够选择向量绘图分段并在另一边缘上移动向量绘图分段,在该边缘上,图像变换系统将向量绘图分段重新拟合到另一边缘。

更具体地,图像变换系统检测用户交互以及移动向量绘图分段的请求,该用户交互选择在图形用户界面中绘制的向量绘图分段。例如图像变换系统检测用户选择向量绘图分段(例如在向量绘图分段上移动光标并单击鼠标按钮)并移动向量绘图分段,同时保持向量绘图分段的选择(例如在移动光标的同时按住鼠标按钮)。在一些实施例中,图像变换系统确定用户从用户交互本身移动向量绘图分段的请求。在替代实施例中,图像变换系统基于拖动工具或修改器输入的选择将用户交互与用于移动绘制向量绘图分段的请求相关联。

如上所述,用户可能期望将向量绘图分段从生成向量绘图分段的边缘移动到栅格图像中的另一边缘。因此,当图像变换系统在栅格图像中移动向量绘图分段时,图像变换系统检测栅格图像中的其他边缘。例如如上所述,图像变换系统使用边缘图来检测边缘并生成像素线。当所选择的向量绘图分段在栅格图像中的另一边缘附近移动时,图像变换系统可以通过将对应的像素线绘制为叠加来强调(例如突出显示或“点亮”)边缘,如上所述。

在栅格图像上显示像素线(并保持向量绘图分段的选择)的同时,图像变换系统检测释放向量绘图分段的选择的用户交互。作为响应,在一个或多个实施例中,图像变换系统移除所选择的向量绘图分段,并在栅格图像的新边缘上将新的向量绘图分段绘制到像素线(例如拟合或重新拟合),使得它对用户显示所选像素线移动栅格图像中的边缘。

现在转到下一个图,提供了关于从栅格图像的依赖于比例的增强数字图像生成的附加细节。具体地,图5a-5b示出了根据一个或多个实施例的基于图形用户界面的缩放级别修改边缘图的边缘检测(和像素线生成)强度。如图所示,图5a-5b包括具有图形用户界面502的客户端设备200,其可以表示先前描述的一个或多个客户端设备。例如图像编辑系统或图像变换系统可以绘制图形用户界面502。

如图所示,图形用户界面502包括处于第一缩放级别(例如25%缩放)的缩小栅格图像504a。结合缩小的栅格图像504a,图5a包括缩小的边缘输出510a。如上所述,虽然图像变换系统生成并利用边缘图来检测栅格图像内的边缘并生成像素线,但在许多实施例中,边缘图对用户是隐藏的。因此,缩小的边缘输出510a未在图形用户界面内示出。

如缩小边缘输出510a所示,图像变换系统在缩小栅格图像504a中检测较低密度的检测边缘。例如图像变换系统检测缩小栅格图像504a中所示的狗的外边缘512a。图像变换系统还检测栅格图像504b中的其他突出边缘。实际上,在25%缩放时,缩小的边缘输出510a是子采样的像素数,因此被隐式滤波,导致平滑输出检测边缘。

图像变换系统可以提供各种工具或特征,使用户能够增加边缘图中检测到的边缘的密度。例如在一个或多个实施例中,图像变换系统将边缘图中检测到的边缘的密度与栅格图像的缩放级相关联。为了说明,图5b示出了未缩放的栅格图像504b(例如100%缩放)和对应的未缩放的边缘图510b。

如图5b所示,未缩放的边缘图510b包括未包括在图5a的未缩放的510a中的检测到的边缘。例如在图5a的缩小边缘输出510a中示出的狗的外边缘512a变为图5b的未缩放边缘图510b中的多个更短且更详细的检测边缘(即,缩放的外边缘512b)。附加地,未缩放的边缘图510b包括在缩小的边缘外部510a中未包括的附加的检测到的边缘514。实际上,当栅格图像被放大到100%时,恢复在缩小级别(例如25%缩放)处的子采样丢失的图像数据(例如像素),导致更详细的边缘。

在各种实施例中,图像变换系统使用基于不同采样密度的相同边缘检测参数来为不同缩放级别生成新边缘图。在一个或多个实施例中,用户可以向图像变换系统提供输入以修改边缘检测参数。在一些实施例中,在图像变换系统生成新边缘图之前,缩放级别必须改变阈值级别(例如5%)。

通过将边缘图中检测到的边缘的密度与栅格图像的缩放级相关联,图像变换系统为用户提供了控制像素线的细节水平和生成向量绘图分段的简单方式。实际上,图像变换系统向用户提供像素线和对应的向量绘图分段,其具有用于修改和操纵变换边缘的附加曲线和向量控件(例如向量控件218)。

在一个或多个实施例中,图像变换系统在用户放大向量绘图分段并且请求图像变换系统将向量绘图分段重新拟合到更详细的检测到的边缘时重新拟合先前生成的向量绘图分段。例如在绘制外边缘512a然后增加缩放级别之后,图像变换系统使用未缩放的边缘图510b来接收将向量绘图分段重新拟合到缩放的外边缘512b或其一部分的请求。例如当栅格图像处于增大的缩放级别时,图像变换系统检测用户选择和牵引向量绘图分段的用户请求。同样地,如果图像变换系统基于检测到的用户请求以增大的缩放级别绘制向量绘图分段,则图像变换系统可以将向量绘图分段重新拟合到未缩放级别的检测到的边缘,从而导致细节较少的新的向量绘图分段。

在一些实施例中,图像变换系统将边缘图中检测到的边缘的密度与用户可选择的选项相关联。例如图像变换系统提供指示检测到的边缘的密度的图形(例如滑块)或文本边缘检测密度选项。图像变换系统基于边缘检测密度选项的改变来修改边缘检测参数。

例如在附加的实施例中,图像变换系统在用户修改边缘检测密度选项时显示图形用户界面502内的缩小的边缘图510a。具体地,图像变换系统在栅格图像504a上的叠加中显示所有检测到的边缘,使得检测到的边缘与栅格图像504a明亮地对比。因此,当用户增加或减少边缘检测密度时,图像变换系统在栅格图像504a上显示更多或更少的检测到的边缘。当用户达到所需的边缘密度时,图像变换系统隐藏边缘图。在一些实施例中,如上所述,图像变换系统基于用户边缘图可见性选项来揭示或隐藏边缘图。

在一个或多个实施例中,图像变换系统生成对应于栅格图像的所选区域的边缘图。例如图像变换系统使用户能够采用矩形选择、绘图的掩模选择、套索选择、裁剪选择等。在附加的实施例中,图像变换系统使用户能够选择由向量定义的区域。附加地,图像变换系统可以为所选区域生成更高密度的边缘。例如不是检测整个栅格图像的边缘或高密度边缘,而是图像变换系统将边缘检测限制到栅格图像的选定部分,从而保留计算资源。在各种实施例中,图像变换系统延迟生成栅格图像的边缘图,直到接收到用户输入,该用户选择栅格图像的期望区域或检测整个栅格图像的边缘的指示。

现在转向图6,提供了关于在边缘图内跟踪像素线的附加细节。图6示出了基于用户与图形用户界面中的栅格图像的交互从边缘图生成像素线的概述。在各种实施例中,图像变换系统执行一系列动作600。例如实现图像变换系统的客户端设备和/或服务器设备执行一系列动作600以在边缘图中生成像素线。

如图6中所示,图像变换系统执行检测边缘图中的边缘上的像素的动作602。如前所述,图像变换系统将与图形用户界面内的栅格图像的用户交互(例如光标移动)映射到边缘图。例如如上所述,图像变换系统使用栅格图像的光标坐标来确定边缘图中是否存在检测到的边缘,以及检测到的边缘上是否存在像素。

附加地,如图6所示,图像变换系统执行沿检测到的边缘步进到连接像素直到满足线终止条件的动作604。例如图像变换系统标识连接到第一像素的第二像素,然后步进到第二像素。图像变换系统沿着检测到的边缘重复步进到连接的像素的过程,直到满足线终止条件。线终止条件的示例包括检测不再连接的像素(例如边缘的末端),检测像素分割(例如分割为多个边缘的边缘),或步进到相同的像素两次(例如循环回到本身上的边缘)。

如下面进一步描述的,在一个或多个实施例中,如果第一像素处于检测到的边缘的中间,则图像变换系统在两个方向上步进以标识最初错过的检测到的边缘的任意部分。附加地,图像变换系统使用优先化方案来高效地分析(例如步进通过)检测到的边缘。例如在一个或多个实施例中,图像变换系统相对于对角像素优先使用相邻像素。实际上,如果给定连接像素包括相邻像素和对角像素,作为步进的潜在下一个像素,在各种实施例中,图像变换系统步进到连接相邻像素,步进到对角线连接像素。在替代实施例中,图像变换系统接下来在步进到相邻连接像素之前步进到连接对角线像素。下面结合图7a-7c提供关于当沿着检测到的边缘步进时相对于对对角像素优先使用相邻像素的附加细节。

如图6所示,图像变换系统还执行存储沿着检测到的边缘被跟踪像素的坐标的动作606。例如图像变换系统存储在沿着检测到的边缘步进时标识的每个像素的像素坐标。在各种实施例中,图像变换系统通过组合所跟踪的像素的坐标来生成像素线。例如图像变换系统将坐标存储在像素线表中,该像素线表指示哪些像素与给定像素线相关联。

一旦生成像素线,图像变换系统就向像素线生成向量绘图分段,诸如贝塞尔曲线。作为生成向量绘图分段的一部分,在一些实施例中,图像变换系统执行沿像素线检测角的可选动作608。如下面结合图8进一步描述的,图像变换系统标识像素线中的角像素,使图像变换系统能够更好地向量化像素线。

如图6所示,图像变换系统还执行基于坐标(和角像素)将向量绘图分段拟合到像素线的动作610。例如图像变换系统基于为像素线存储的坐标生成贝塞尔曲线。如果贝塞尔曲线不能精确地拟合像素线,则图像变换系统将像素线分成两部分并将贝塞尔曲线重新拟合到每个部分以实现更精确的拟合,如下所述。

附加地,作为将向量绘图分段拟合到像素线的动作610的一部分,图像变换系统生成并使用贝塞尔系数的高速缓存矩阵,以改进用向量绘图分段拟合像素线的效率。关于贝塞尔系数的高速缓存矩阵的附加描述在下面结合图9提供。

如上所述,图7a-7c描述了利用优先化方案从检测到的边缘高效地生成像素线的图像变换系统。具体地,图7a-7c示出了根据一个或多个实施例的步进通过边缘图中的检测到的边缘以生成像素线。如上所述,图像变换系统基于用户与图形用户界面内的栅格图像的交互来检测边缘图内的边缘。此外,如上所述,图像变换系统可以将生成的像素线绘制为图形用户界面内的栅格图像上的叠加。

为了说明,图7a示出了具有栅格图像(例如具有徽标的马克杯)的各种检测到的边缘的边缘图710。如上所述,图像变换系统生成具有单个像素(1像素)宽边缘的边缘图,使得图像变换系统能够从边缘图高效地生成像素线。附加地,图7a示出了包括检测到的边缘712的像素网格706。

此外,出于解释的目的,像素网格706包括第一像素708。第一像素708对应于栅格图像中光标的映射位置,如先前所解释的。在一个或多个实施例中,图像变换系统通过将栅格图像中的光标的位置坐标映射到边缘图710来标识第一像素708。如下所述,图像变换系统可以从第一像素708开始跟踪检测到的边缘712。

在各种实施例中,图像变换系统通过从第一像素708沿着边缘步进到连接像素来从检测到的边缘712生成像素线。连接像素可包括给定像素的相邻像素和对角像素。为了说明,图7b示出了相邻像素714和对角像素716的示例位置。相邻像素714包括给定像素的上方、下方、左侧或右侧的连接像素。对角像素716是给定像素的左上、右上、左下或右下的像素。

如图7b所示并且出于解释的目的,图像变换系统将从0-8索引给定像素周围的像素,从右开始并且顺时针方向进行。图像变换系统还可以利用替代的索引方案,诸如以逆时针方式索引连接像素,从另一个连接像素开始,或者使用字母和数字的组合来索引围绕给定像素的像素。索引的附加示例包括在对角像素716编号之前对相邻像素714进行编号(或反之亦然)或基于边缘图内的步进方向和/或检测到的边缘的取向为给定像素索引连接像素。

在优先化步进算法中利用相邻像素714和对角像素716,图像变换系统可以生成像素线。为了说明,图7c示出了上面提到的像素网格706,包括检测到的边缘712和第一像素708。如图所示,第一像素708也标记为“a”。如进一步所示,第一像素708包括围绕第一像素708索引(即,从0-8)的像素。

在一个或多个实施例中,在标识第一像素708时,图像变换系统沿检测到的边缘712检查连接像素。通过检查连接像素,图像变换系统可以验证是否存在要步进的至少一个周围像素。此外,当标识出多个连接像素时,图像变换系统标识相邻像素的数量以及对角像素的数量。

通常,边缘图中的检测到的边缘包括多于一个像素。因此,图像变换系统标识围绕第一像素708的至少一个连接像素。否则,如果没有检测到连接像素,则图像变换系统确定第一像素708是孤立像素。如果仅检测到一个连接像素,则图像变换系统步进连接像素而无需进一步处理。如果第一像素708仅具有单个连接像素,则第一像素708是边缘图710中的检测到的边缘712的一端。

当图像变换系统确定存在针对第一像素708的多于一个连接像素时,图像变换系统确定下一步步进到哪个像素。在一个或多个实施例中,作为确定下一步步进到哪个像素的一部分,图像变换系统标识哪个连接像素是相邻像素并且哪个是对角像素。例如如图7c所示,在像素网格706中,图像变换系统标识两个相邻像素,包括索引0(右)处的第一相邻像素和索引6(顶部)处的第二相邻像素。附加地,图像变换系统标识两个对角像素,包括索引1(右下)的第一对角像素和索引5(左上)的第二对角像素。

在各种实施例中,图像变换系统基于像素是相邻像素还是对角像素来确定下一步步进到哪个连接像素。例如在各种实施例中,图像变换系统相对于对角像素(索引1和5)优先使用相邻像素(索引0和6)。实际上,如果相邻像素和对角像素连接到给定像素,则图像变换系统接下来步进到相邻像素。为了说明,如图7c所示,图像变换系统确定步进到相邻像素之一(例如索引0处的第一相邻像素或索引6处的第二相邻像素)而不是对角像素716中的一个。

图像变换系统继续步进到连接像素,直到满足线终止条件。例如如图所示,图像变换系统检查沿着检测到的边缘712的第二像素718的连接像素,标识左侧和底部的相邻像素以及左上角和右下角的对角像素,并且确定下一步步进到具有较高索引的相邻像素(即,左相邻像素)。

图像变换系统忽略或取消先前步进像素以及与先前步进像素相邻的像素作为下一像素的候选者的资格。为了说明,如上所述,图像变换系统从第一像素708步进到第二像素718。当确定要下一步要步进到哪个像素时,图像变换系统忽略第一像素708以及与第一像素相邻的任意像素(例如像素720)。通过忽略先前步进方向上的像素,所示检测边缘712中的连接像素的数量减少到一个相邻像素和一个对角像素。实际上,通过忽略先前步进方向上的像素,八个连接像素中的多达三个被消除作为下一步要步进到的候选像素。

如上所述,图像变换系统通过相对于对角线像素优先使用相邻像素并且忽略前一步骤方向上的像素来继续沿着检测到的边缘712步进直到满足线终止条件。当满足线终止条件时,图像变换系统确定到达像素线的末端并且停止沿着检测到的边缘712步进。线终止条件的一个示例是沿着检测到的边缘712没有剩余像素(例如,图像变换系统在不向后步进的情况下不能步进到相邻像素或对角像素)。

线路终止条件的第二示例是当检测到的边缘712环回到其自身上时。例如当沿着检测到的边缘712步进时,图像变换系统步进到像素两次。在该示例中,图像变换系统不能步进到前一像素。因此,步进到相同像素两次表示检测到的边缘712形成与其自身交叉或相遇的环(例如栅格元素的轮廓)。

线终止条件的第三示例是当图像变换系统确定围绕给定像素(包括前一步骤方向上的像素)的至少三个相邻像素或至少三个对角线像素时。当三个或更多个相邻像素或对角像素围绕像素时,检测到的边缘712分割或分支成多个检测到的边缘,并且图像变换系统停止步进。在替代实施例中,图像变换系统继续步进,直到满足前两个线路终止条件中的一个。

为了说明像素分割线终止条件,图7c示出了从第一像素708(即,像素a)步进到像素b的图像变换系统,如上所述。在步进到像素b时,图像变换系统标识三个相邻的连接像素(例如底部、左侧和顶部),这使得图像变换系统在当前方向上终止沿着检测到的边缘712的步进。

在一个或多个实施例中,在触发线终止条件时,图像变换系统返回到第一像素708并开始沿相反方向步进,直到在第二方向上满足线终止。例如图像变换系统在第一像素708处开始,步进到右相邻像素(即,在索引0处的像素720),并且继续在第二方向上步进直到满足线终止。以这种方式,图像变换系统每次沿边缘标识相同的像素,而不管步进过程沿检测到的边缘712从哪里开始。

附加地,当在第二方向上重复步进过程时,图像变换系统首先检查来查看在第二方向步进之前是否满足线终止。为了说明,假设图像变换系统最初在像素b处开始,如图7c所示,并且步进到顶部相邻像素并连接像素,直到满足线第一终止(例如第一方向)。然后,在返回到像素b以沿第二方向中检测到的边缘712步进时,图像变换系统确定像素b满足第二线终止条件(例如像素分割),因此像素b是检测到边缘的末端。

如刚才所述,图像变换系统可以首先检查以查看在第二方向步进之前是否满足线终止。当最初以第一方向(例如开始从第一像素追踪检测到的边缘)步进时,图像变换系统忽略线终止条件,直到像素线包括至少两个像素。实际上,如果第一像素位于检测到的边缘的末端,则图像变换系统通过从检测到的边缘的第一端步进到第二边缘来生成像素线。

虽然上面提供了选择下一个像素以沿着检测到的边缘712步进的示例方法,但是图像变换系统可以使用上述方案的替代方案和/或变型。例如在一些实施例中,相对于相邻像素,图像变换系统优先使用对角像素。

在通过沿着来自第一像素708的连接像素步进分析检测到的边缘712时,图像变换系统将第一像素708和连接像素添加到像素线。例如在一个或多个实施例中,图像变换系统标识步进到的每个像素的x,y坐标,并记录与像素线相关联的表或位图中的每个像素的坐标。

如上所述,图像变换系统将图形用户界面内的像素线显示为用于栅格图像的叠加。例如图像变换系统在栅格图像上显示的位图中绘图像素线中的像素的坐标。如果图像变换系统检测到选择像素线的用户交互(例如用光标点击像素线或者提供轻敲像素线的触摸输入),则图像变换系统将像素线变换为向量绘图分段。否则,如果用户将光标移离像素线,则图像变换系统隐藏显示像素线的叠加。

在将像素线变换为向量绘图分段之前,在各种实施例中,图像变换系统标识角像素,图像变换系统使用该角像素以更好地将贝塞尔曲线拟合到像素线。为了说明,图8示出了根据一个或多个实施例的检测像素线内的角像素。如图所示,图8包括像素网格806,其具有使用步进过程从边缘图中的检测到的边缘标识的像素线802(例如记录的像素),如上所述。

为了标识对应于尖角的角像素,在一个或多个实施例中,图像变换系统将像素线802划分为小的像素组。如图8所示,图像变换系统每组从像素线中选择四个像素,包括像素组804a-804d,其中一组中的最后一个像素与下一组中的第一像素重叠。在替代实施例中,图像变换系统每组选择更多或更少的像素和/或不包括重叠像素。

值得注意的是,随着组中包括更多像素,第一像素和最后像素之间的距离增加,并且图像变换系统更好地标识组中的角像素。然而,如果组中包括太多像素,则图像变换系统可能错误地标识角像素。理想地,图像变换系统选择三个和十个像素之间的一组像素(即,[3–8]),尽管图像变换系统可以选择更多像素(例如基于经由用户可选择选项的用户输入)。

为了标识角像素,图像变换系统为像素组中的每一个创建线段。例如图8示出了连接第一像素组804a、第二像素组804b、第三像素组804c和第四像素组804d中的像素的线段。如图所示,因为像素组包括重叠像素,所以线段在像素组之间彼此连接。在一个或多个实施例中,图像变换系统在确定附加线段之前一次确定两个相邻线段。

使用两个相邻的线段,在各种实施例中,图像变换系统通过比较两个相邻线段之间的曲率并确定曲率是否超过角曲率阈值来确定角点像素的存在。在一些实施例中,图像变换系统计算并比较每对线段的门格尔曲率。

为了说明,图像变换系统选择第一线段的第一端点作为p1并且将第一线段的第二端点选择为p2,如图8中关于第三像素组804c所示。此外,图像变换系统选择第二线段的第一端点作为p2,将第二线段的第二端点选择为p3,如图8中关于第四像素组804d所示。值得注意的是,因为第一线段的第二端点和第二线段的第一端点是相同的像素,所以都标记为p2。实际上,p2表示第一线段和第二线段之间的连接。

接下来,使用三个点(即p1、p2和p3),在各种实施例中,图像变换系统确定线段对的曲率(即,k)。如果曲率k超过曲率值(例如如果对于四像素线段k>0.35),则图像变换系统将中点p2指定为角像素。因为像素组包括少量像素,所以在将贝塞尔曲线拟合到像素线的角像素时,指定与真实角像素相距一个或两个像素的角像素将提供相同水平的增强和精度。

为了说明,以下等式提供用于确定线段对的曲率k的公式。

如等式1-5所示,图像变换系统基于跨两个相邻线段上的三个点(即,p1、p2和p3)确定曲率k。在等式1-3中,图像变换系统采用平方根来标准化距离,使得像素组的比例不会不利地影响曲率计算。

图7a-7c和图8描述了在边缘图中生成像素线的各种实施例。因此,结合图7a-7c和图8描述的动作和算法提供了用于基于用户交互、栅格图像的边缘图和优先化步进算法来执行用于确定边缘的像素线的步骤的示例结构。

基于以上描述,图像变换系统标记像素线中的角像素。例如图像变换系统在像素线表或位图中设置每个角落像素附近的标记,该像素线表或像素图存储像素线中的每个像素的坐标。然后,使用像素线的端点和角像素,图像变换系统将像素线精确地变换为向量绘图分段,如下所述。

为了说明,图像变换系统最初基于像素线的端点以及沿着线的各种像素(在使用角检测算法之前)将贝塞尔曲线拟合到像素线。

在一个或多个实施例中,在初始将贝塞尔曲线拟合到像素线时,图像变换系统测量拟合的精度。例如图像变换系统比较沿像素线的点与初始贝塞尔曲线之间的距离,以确定距离是否大于距离阈值。如果像素线上的像素与初始贝塞尔曲线之间的距离超过距离阈值,则图像变换系统细分像素线并用附加的贝塞尔曲线重新拟合该线。图像变换系统重复测量和细分的过程,直到平滑的曲线段(即,向量绘图分段)被创建。

在一个或多个实施例中,图像变换系统使用贝塞尔曲线拟合算法将贝塞尔曲线拟合到像素线。例如图像变换系统利用最小二乘拟合方法来计算像素线坐标的平滑段的最佳曲线表示,如boemet.al.,“asurveyofcurveandsurfacemethodsincagd”,computeraidedgeometricdesign,volume1,issue1,july1984,p.21所描述,其全部内容通过引用并入本文。

图像变换系统使用贝塞尔曲线拟合算法为端点(包括角像素和附加添加的端点)之间的每组像素生成贝塞尔曲线。例如在一个或多个实施例中,图像变换系统采用以下公式来近似来自像素线中的采样点的贝塞尔曲线段,如等式6所示。

p=(btb)-1*(bts)(6)

在等式6中,p表示贝塞尔曲线的控制点,并且s表示像素线或者与贝塞尔曲线拟合的像素线的一部分中的n个像素坐标(例如像素采样点的数量)。附加地,b表示等间隔点的三次贝塞尔系数的矩阵,并且如下定义

bi,j=bj(ui)(9)

如等式6-9所示,图像变换系统通过使用三次贝塞尔系数的矩阵,使用最小二乘拟合方法将贝塞尔曲线拟合到像素线,其中j是0.3。

附加地,因为图像变换系统采用均匀的步进量(例如1像素宽的边缘),所以贝塞尔系数的矩阵(即,bt和(btb)-1)对于具有相同数量(即n)的像素的像素线是恒定的。例如如果图像变换系统标识出5像素长的多个像素线,则图像变换系统生成贝塞尔系数矩阵一次并重新使用贝塞尔系数矩阵以将贝塞尔曲线拟合到五个像素的每个后续像素线,即使每条像素线的方向、形状或曲率都不同。

为了进一步说明,图9示出了根据一个或多个实施例的用于高速缓存用于将贝塞尔曲线拟合到像素线的贝塞尔系数矩阵的一系列动作900的流程图。例如当将贝塞尔曲线拟合到像素线时,图像变换系统遵循一系列动作900。

如图9所示,图像变换系统执行标识像素线中的像素数量的动作902。例如图像变换系统对像素线(或像素线的子部分)中的像素数进行计数。图像变换系统计算两个标记的端点之间的像素数,包括角像素。

附加地,如图9所示,图像变换系统执行确定像素数量是否超过每条线像素数量的动作904。例如如果图像变换系统确定像素线中的像素数量超过每条线像素数量,则图像变换系统划分像素线(即,通过执行动作906)直到每个划分的像素线低于每条线像素数量。然后,图像变换系统将每个划分的像素线视为单独的像素线。此外,如果图像变换系统将像素线除以因子2,则图像变换系统对每个划分的像素线重用贝塞尔系数矩阵,如下所述。

实际上,通过设置每条线像素限制,图像变换系统降低了客户端设备生成大贝塞尔系数矩阵所需的计算要求以及存储大贝塞尔系数矩阵所需的存储空间。实际上,随着像素线中像素数量的增加,对应贝塞尔系数矩阵的大小和复杂度呈指数增长。因此,通过将像素线中的像素数量限制为每条线像素数量(例如50、100、500或1000像素),并划分更大的像素线,图像变换系统通过使用不太复杂的贝塞尔系数矩阵,并且在许多情况下,重新使用先前计算的贝塞尔系数矩阵来减少整体计算机处理。

当像素线中的像素数低于每条线像素数量时,图像变换系统确定是否存在针对像素线中的像素数量的高速缓存矩阵,如动作908所示。例如图像变换系统将像素线中的像素数量与高速缓存的贝塞尔系数矩阵的数据库进行比较,以确定是否先前由图像变换系统生成了给定数量的像素的贝塞尔系数矩阵。

如果图像变换系统标识对应于像素线中的像素数量的高速缓存贝塞尔系数矩阵,则图像变换系统使用矩阵将贝塞尔曲线拟合到像素线,如动作912所示。通过使用高速缓存的贝塞尔系数矩阵,图像变换系统仅需要应用简单算术(例如乘法和加法循环)而不是经历生成重复贝塞尔系数矩阵的复杂过程。

否则,图像变换系统针对像素线中的像素数生成贝塞尔系数矩阵,如动作910所示。在为像素线中的像素数量生成贝塞尔系数矩阵时,在各种实施例中,图像变换系统将贝塞尔系数矩阵存储或缓存在贝塞尔系数矩阵的数据库中。在一些实施例中,数据库被存储在客户端设备上并在经过时间或触发事件(例如用户关闭向量绘图和/或图像编辑程序)之后被擦除。

现在转到图10,提供了关于根据一个或多个实施例的图像变换系统的能力和组件的附加细节。具体地,图10示出了计算设备1000的示意图,该计算设备1000包括图像编辑系统1002和栅格图像选择变换系统1004(即,上述图像变换系统的示例性实现)。在一个或多个实施例中,栅格图像选择变换系统1004(或简称为“图像变换系统1004”)的一些或所有组件与图像编辑系统1002分开实现。此外,计算设备1000包括各种不同的设备。例如在一些实施例中,图像变换系统1004的一些或所有组件在客户端设备和/或服务器设备上实现。

如图所示,图像变换系统1004位于计算设备1000上的图像编辑系统1002内。通常,计算设备1000表示各种类型的客户端设备。例如在一些实施例中,客户端是移动设备,例如笔记本计算机、平板计算机、移动电话、智能电话等。在其他实施例中,计算设备1000是非移动设备,诸如台式机或服务器,或其他类型的客户端设备。关于计算设备1000的其他细节将在下面以及关于图14进行讨论。

通常,图像编辑系统1002促进应用内的数字图像的创建、修改、共享和/或删除。例如图像编辑系统1002在计算设备1000上提供与图像创建和编辑(例如图像绘制、编辑和向量化)有关的各种工具。附加地,图像编辑系统1002访问附加的本地或远程存储的栅格图像存储库。此外,在一些实施例中,图像编辑系统1002与计算设备1000分开放置(例如在服务器设备上)并与图像变换系统1004通信。

此外,图像编辑系统1002结合一个或多个应用操作以促进栅格图像在计算设备1000上的向量化。例如在一个或多个实施例中,图像编辑系统1002包括诸如应用套件的与图形内容有关的多个应用、功能以及操作、基于web的应用和/或计算设备1000上的系统操作。

如图所示,图10中的图像变换系统1004包括用于执行本文描述的过程和特征的各种组件。例如图像变换系统1004包括栅格图像管理器1006、边缘图生成器1008、用户交互管理器1010、像素线生成器1012、贝塞尔曲线拟合器1014、图形绘制器1020和存储管理器1022。下面进一步描述这些组件中的每一个。

如上所述,图像变换系统1004包括栅格图像管理器1006。通常,栅格图像管理器1006促进标识、访问、接收、获得、生成、导入、导出、复制、修改、移除和/或组织栅格图像。在一个或多个实施例中,栅格图像管理器1006结合图像编辑系统1002操作以访问和加载栅格图像。此外,如图所示,栅格图像管理器1006与存储管理器1022通信以存储和/或访问栅格图像1024。

还如图所示,图像变换系统1004包括边缘图生成器1008。例如在一个或多个实施例中,边缘图生成器1008创建、生成和/或检测栅格图像的边缘图或其部分。在一些实施例中,边缘图生成器1008通过基于边缘检测参数和/或像素采样密度来检测栅格图像中的边缘来生成边缘图,其中边缘是一个像素宽,如先前所解释的。在各种实施例中,边缘图生成器1008采用canny边缘检测来检测栅格图像中的边缘。此外,如图所示,边缘图生成器1008与存储管理器1022通信以存储和/或访问边缘图1026。

如图10中所示,图像变换系统1004包括用户交互管理器1010。在一个或多个实施例中,用户交互管理器1010检测、标识、接收、标识和/或解释用户的交互。如前所述,用户交互管理器1010检测图形用户界面内的用户交互。如上所述,用户交互包括使用光标或触摸输入的移动、点击、拖动、选择或取消选择。

在一些实施例中,用户交互管理器1010通过向边缘图生成器1008提供用户交互的坐标来与边缘图生成器1008通信。例如当用户在图形用户内的栅格图像上移动光标时,用户交互管理器1010向边缘图生成器1008提供坐标,如前所述。类似地,在各种实施例中,当用户交互管理器1010检测到用户交互时,诸如用户选择像素线,用户交互管理器1010向贝塞尔曲线拟合器1014提供像素线选择的指示。

如图所示,图像变换系统1004包括像素线生成器1012。通常,像素线生成器1012接收用户与栅格图像的交互的位置(例如坐标)并基于该用户交互来标识像素边缘,如前所述。附加地,如前所述,像素线生成器1012通过使用优先化步进功能从检测到的边缘上的像素步进到连接像素来生成像素线。

如图所示,图像变换系统1004还包括具有矩阵生成器1016和像素线分割器1018的贝塞尔曲线拟合器1014。通常,如前所述,贝塞尔曲线拟合器1014通过将一个或多个贝塞尔曲线拟合到像素线来生成向量绘图分段。例如在一些实施例中,贝塞尔曲线拟合器1014使用贝塞尔曲线拟合算法将贝塞尔曲线拟合到像素线。如图所示,贝塞尔曲线拟合器1014与存储管理器1022通信以存储和访问为像素线生成的向量绘图分段。

如上所述,贝塞尔曲线拟合器1014包括矩阵生成器1016和像素线分离器1018。在一个或多个实施例中,矩阵生成器1016生成并高速缓存贝塞尔系数的矩阵,其由贝塞尔曲线拟合器1014使用以将贝塞尔曲线拟合到像素线。如上所述,贝塞尔系数矩阵对应于像素线中的特定数量的像素,并且贝塞尔曲线拟合器1014对具有相同像素数的像素线多次重复使用相同的贝塞尔系数矩阵。如图所示,矩阵生成器1016与存储管理器1022通信以存储和访问高速缓存的矩阵1030。

在一些实施例中,像素线分割器1018检测贝塞尔曲线何时不紧密地拟合像素线。例如像素线分割器1018确定像素线上的像素与初始拟合贝塞尔曲线之间的距离超过距离阈值。当像素线分割器1018检测到超过距离阈值时,像素线分割器1018将像素线分割成两个分段,并将贝塞尔曲线重新拟合到像素线中的每一个。

如图所示,图像变换系统1004还包括图形绘制器1020。通常,图形绘制器1020提供和/或绘制显示栅格图像的一个或多个图形用户界面。附加地,图形绘制器1020提供和/或绘制包括像素线和/或向量绘图分段的叠加。例如图形绘制器1020提供和/或绘制向量绘图的图像层,其包括从栅格图像中的边缘变换的一个或多个向量绘图分段,如上所述。

图像变换系统1004的组件1006-1030包括软件、硬件或两者。例如组件1006-1030包括存储在计算机可读存储介质上并且可由诸如客户端设备或服务器设备的一个或多个计算设备的处理器执行的一个或多个指令。当由一个或多个处理器执行时,图像变换系统1004的计算机可执行指令可以使计算设备执行本文描述的特征学习方法。替代地,组件1006-1030可以包括硬件,诸如用于执行特定功能或功能组的专用处理设备。替代地,图像变换系统1004的组件1006-1030可包括计算机可执行指令和硬件的组合。

此外,图像变换系统1004的组件1006-1030例如被实现为一个或多个操作系统、被实现为一个或多个独立应用、被实现为应用的一个或多个模块、被实现为一个或多个更多插件、被实现为一个或多个库函数或其他应用调用的函数、和/或被实现为云计算模型。因此,组件1006-1030可以被实现为独立应用,诸如桌面或移动应用。此外,组件1006-1030可以被实现为托管在远程服务器上的一个或多个基于web的应用。组件1006-1030还可以在一套移动设备应用或“应用”中实现。为了说明,组件1006-1030可以在应用中实现,包括但不限于after软件。“adobe”、“illustrator”、“photoshop”和“aftereffects”是adobesystemsincorporated在美国和/或其他国家/地区的注册商标或商标。

图11示出了环境1100的示意图,其中可以根据一个或多个实施例实现栅格图像选择变换系统1004(或简称为“图像变换系统1004”)。在一个或多个实施例中,环境1100包括各种计算设备,包括客户端设备1102和服务器设备1104。此外,环境1100包括网络1108。网络1108可以是计算设备可以通过其进行通信的任意合适的网络。以下关于图14更详细地讨论示例网络。

如图11所示,环境1100包括客户端设备1102。客户端设备1102可以包括任意计算设备,例如下面结合图14描述的计算设备。如图所示,客户端设备包括图像编辑系统1002和图像变换系统1004,如前所述。例如如上所述,图像变换系统1004基于用户交互和用户选择来将栅格图像中的边缘变换为向量绘图分段。此外,图像变换系统1004采用优先化步进算法来生成像素线,图像变换系统1004使用该像素线将栅格图像中的边缘变换或转换成向量绘图分段,如前所述。

此外,环境1100包括服务器设备1104,其可以包括任意计算设备,诸如以下关于图14描述的一个或多个计算设备。服务器设备1104可以生成、存储、接收和传输任意类型的数据,包括图形内容,诸如栅格图像、像素线和/或向量绘图分段。如图所示,服务器设备1104包括与在客户端设备1102上的图像编辑系统1002通信的图像编辑服务器系统1106。例如图像编辑服务器系统1106将图形内容发送到客户端设备1102,其使客户端设备1102能够在客户端设备1102的图形用户界面内绘制像素线和/或向量绘图分段。值得注意的是,虽然仅示出了单个服务器设备,但是图像编辑服务器系统1106可以跨多个服务器设备实现。

虽然未示出,但是在一个或多个实施例中,服务器设备1104还可以包括图像变换系统1004的全部或一部分,诸如在图像编辑服务器系统1106内。例如当位于服务器设备1104中时,图像变换系统1004可以包括在服务器设备1104上运行的应用或者可以下载到客户端设备1102的软件应用的一部分。例如图像转换系统1004包括网络托管应用,允许客户端设备1102与来自托管在服务器设备1104上的图像编辑服务器系统1106的内容交互。以这种方式,服务器设备1104基于提供给客户端设备1102的图形用户界面内的用户交互来生成像素线和/或向量绘图分段。

尽管图11示出了服务器设备1104、客户端设备1102和网络1108的特定布置,但是各种附加布置是可能的。例如虽然图11示出了经由网络1108与服务器设备1104通信的一个或多个客户端设备1102,但是在一个或多个实施例中,单个客户端设备可以绕过网络1108来直接与服务器设备1104通信。

类似地,尽管图11的环境1100被描绘为具有各种组件,但是环境1100可以具有附加或替代组件。例如图像变换系统1004可以在多个计算设备上实现。具体地,图像变换系统1004可以由服务器设备1104整体实现,或者图像变换系统1004可以由客户端设备1102整体实现。替代地,图像变换系统1004可以跨多个设备或组件实现(例如,利用服务器设备1104和一个或多个客户端设备1102)。

图1-11,对应的文本和示例提供了根据一个或多个实施例的图像变换系统1004的若干不同系统、方法、技术、组件和/或设备。除了以上描述之外,还可以根据包括用于实现特定结果的动作的流程图来描述一个或多个实施例。例如图12和图13示出了根据一个或多个实施例的示例性动作序列的流程图。附加地,图12和图13可以用更多或更少的动作来执行。此外,可以以不同的顺序执行动作。附加地,本文描述的动作可以彼此并行地重复或执行,或者与相同或类似动作的不同实例并行地执行。

尽管图12和图13示出了根据特定实施例的一系列动作,但是替代实施例可以省略、添加、重新排序和/或修改所示的任意动作。可以执行图12和图13的一系列动作作为方法的一部分。替代地,非暂态计算机可读介质可包括指令,当由一个或多个处理器执行时,使计算设备(例如客户端设备和/或服务器设备)执行图12和图13的一系列动作。在更进一步的实施例中,系统执行图12和图13的动作。

为了说明,图12示出了根据一个或多个实施例的用于通过将栅格图像中的基于栅格的元素变换为向量绘图分段来生成增强数字图像的一系列动作1200的流程图。如图所示,一系列动作1200包括标识图形用户界面内的栅格图像的动作1210。动作1210涉及标识描绘栅格元素的图形用户界面内的栅格图像。在一个或多个实施例中,动作1210包括接收或加载栅格图像以在客户端设备的图形用户界面中显示。在各种实施例中,栅格图像包括具有多个边缘的栅格元素。

如图12所示,一系列动作1200还包括通过检测栅格图像中的边缘来生成边缘图的动作1220。具体地,动作1220涉及通过检测在图形用户界面上显示的栅格图像内的多个边缘来生成边缘图。在各种实施例中,边缘图包括与栅格图像中的栅格元素的多个边缘相对应的多个检测到的边缘。此外,在一些实施例中,边缘图的分辨率与栅格图像的图像分辨率匹配。

一系列动作1200还包括基于第一用户交互来标识边缘图内的第一边缘的动作1230。具体地,动作1230涉及基于显示栅格图像的图形用户界面内的第一用户交互来标识边缘图内的栅格元素的多个边缘的第一边缘。在一些实施例中,动作1230还包括通过确定显示图形用户界面的图形用户界面内的第一用户交互的坐标,并将第一用户交互的坐标映射到边缘图,以标识边缘图内的光栅元素的多个边缘的第一边缘,来标识边缘图内的栅格元素的多个边缘的第一边缘。

如图所示,一系列动作1200还包括显示与栅格图像中的边缘对应的像素线的动作1240。具体地,动作1240涉及响应于第一用户交互来生成对应于第一边缘的第一像素线,用于显示为图形用户界面中栅格图像中栅格元素的第一个叠加。在一些实施例中,第一像素线对应于第一边缘的连续的非交叉部分。在各种实施例中,动作1240涉及在图形用户界面内将第一像素线绘制为栅格图像中的多个边缘的第一边缘的叠加,而不生成对应于第一边缘的贝塞尔曲线。

附加地,在一个或多个实施例中,动作1240包括响应于第一用户交互来突出显示栅格图像中的第一像素线,其中第一像素线对应于栅格图像中的栅格元素的边缘,并且其中在栅格元素的对应边缘上仅显示单个像素线。此外,在一些实施例中,动作1240包括基于检测到远离栅格图像中的栅格元素的对应边缘的附加用户交互来移除第一像素线的突出显示和/或移除第一像素线。

如图12所示,一系列动作1200还包括标识在图形用户界面内选择第一像素线的第二用户交互的动作1250。具体地,动作1250涉及标识图形用户界面内的第二用户交互,其指示第一像素线的选择。在各种实施例中,动作1250包括检测用户选择第一像素线,同时在图形用户界面内的栅格图像上绘制第一像素线。

如图所示,一系列动作1200还包括生成拟合到像素线的向量绘图分段的动作1260。具体地,动作1260涉及响应于检测到选择第一像素线的用户交互来生成拟合到第一像素线的向量绘图分段(例如贝塞尔曲线)。在一些实施例中,动作1260包括将向量绘图分段延迟拟合到第一像素线,直到检测到选择第一像素线的第二用户交互之后。

如图12所示,一系列动作1200还包括响应于用户选择像素线而显示拟合到像素线的向量绘图分段的动作1270。具体地,动作1270涉及响应于选择第一像素线的第二用户交互,将向量绘图分段拟合到第一像素线,用于显示作为用于图形用户界面内的栅格图像中的栅格元素的第二叠加。此外,在一些实施例中,动作1270涉及将拟合到第一像素线的向量绘图分段(例如,贝塞尔曲线)连同光栅图像一起绘制在图形用户界面内。在一个或多个实施例中,动作1270包括在提供包括用于显示的向量绘图分段的第二叠加之前从用户界面移除具有第一像素线的第一叠加。

在一个或多个实施例中,一系列动作1200包括附加动作。例如在一些实施例中,一系列动作1200包括将拟合到不同像素线的向量绘图分段连接在一起的动作。附加地,一系列动作1200可以包括以下动作:在图形用户界面内基于接收包括沿向量绘图分段的点的选择的第二用户交互来在向量绘图分段的点处将向量绘图分段视觉分离成两个部分;在保持对第二用户交互的选择的同时,基于与第二用户交互相对应的移动信息来标识要移除的两个部分的第一部分;并且基于标识用于移除的第一部分并检测选择的结束来移除向量绘图分段的第一部分。

在各种实施例中,一系列动作1200包括以下动作:标识在图形用户界面上显示的栅格图像的缩放级别;基于在图形用户界面上显示的栅格图像的缩放级别来确定像素密度;并且基于由缩放级别确定的像素密度来生成边缘图。

如上所述,图13示出了一系列动作1300的示例流程图,用于通过将栅格图像中的基于栅格的元素变换为向量绘图分段来生成增强的数字图像。如图所示,一系列动作1300包括生成具有栅格元素的栅格图像的边缘图的动作1310。具体地,动作1310涉及生成包括栅格图像中的栅格元素的多个边缘的边缘图。

在各种实施例中,动作1310包括标识在图形用户界面内显示的栅格图像的第一部分,并生成特定于所显示的栅格图像的第一部分的边缘图。在附加的实施例中,动作1310包括标识缩放操作,该缩放操作在图形用户界面内以与第一部分不同的缩放级别显示栅格图像的第二部分,基于不同的缩放级别来检测修改的像素密度,以及基于修改的像素密度来生成栅格图像的第二边缘图。

一系列动作1300还包括基于栅格图像中的用户交互来标识边缘图中的边缘的像素的动作1320。具体地,动作1320可以涉及基于用户与栅格图像的交互来标识边缘图的多个边缘的第一边缘的第一像素。在一些实施例中,动作1320通过将基于光标的位置的栅格图像的坐标映射到边缘图来标识第一像素。

附加地,一系列动作1300包括通过从像素步进通过边缘的连接像素直到满足线终止条件来为边缘生成像素线的动作1330。此外,动作1330可以涉及通过从第一像素步进通过第一边缘的多个连接像素直到满足线终止条件以及通过相对于对角线像素优先使用相邻像素并将第一像素和多个连接像素添加到第一像素线来为第一边缘生成第一像素线。

在一个或多个实施例中,动作1330包括通过从多个连接像素的第一连接像素步进到多个连接像素的第二连接像素来相对对角像素上优先选择相邻像素;检测第二连接像素的相邻像素和第二连接像素的对角像素;并且从第二连接像素步进到相邻像素,而不是从第二连接像素步进到对角像素。在一些实施例中,动作1330包括:通过忽略与第一像素相邻的第一边缘的一个或多个像素,从第一像素步进到多个连接像素的第一连接像素,并从第一连接像素步进到多个连接像素的第二连接像素。

在一个或多个实施例中,动作1330包括:通过基于像素线内的像素的数量超过每条线像素数量来检测与多个连接像素对应的重复像素,或者通过标识从第一像素线的连接像素分割的像素,来检测线终止条件。在附加的实施例中,动作1330包括:通过标识第一像素线的连接像素的三个相邻像素或三个对角像素来检测像素分割。在各种实施例中,动作1330包括通过存储指示第一像素和多个连接像素的位置的多个边缘图坐标来将第一像素和多个连接像素添加到第一像素线。

在一些实施例中,动作1330包括从第一像素通过多个连接像素沿第一方向步进。此外,在各种实施例中,动作1330还包括:通过以下各项来生成第一边缘的第一像素线:(在忽略通过在第一方向上步进而标识的多个连接像素中的一个或多个像素时)从第一像素从第二方向中的第一像素步进通过第一边缘的第二多个连接像素,直到满足第二线路终止条件,并且将第二多个连接像素添加到第一像素线,使得第一像素线包括第一像素、多个连接像素和第二多个连接像素。

此外,一系列动作1300包括标识贝塞尔系数的高速缓存矩阵的动作1340。具体地,动作1340涉及标识与像素线中的多个像素相对应的贝塞尔系数的高速缓存矩阵。在一个或多个实施例中,动作1340包括为先前像素线生成贝塞尔系数矩阵,其中先前像素线包括像素数,高速缓存贝塞尔系数矩阵,并基于像素线中的像素数与先前像素线的像素数相同来标识贝塞尔系数的高速缓存矩阵。

附加地,一系列动作1300包括通过将贝塞尔曲线拟合到像素线来生成向量绘图分段的动作1350。具体地,动作1350涉及通过将贝塞尔曲线拟合到第一边缘的第一像素线来基于栅格图像来生成包括向量绘图分段的增强数字图像。在替代实施例中,动作1350可以涉及通过利用贝塞尔系数的高速缓存矩阵将贝塞尔曲线拟合到像素线来生成包括基于向量的元素的增强数字图像。

在一个或多个实施例中,动作1350包括通过将贝塞尔曲线拟合到第一像素线的多个边缘图坐标来生成具有向量绘图分段的增强数字图像。在附加的实施例中,动作1350包括通过以下各项来将贝塞尔曲线拟合到第一边缘的第一像素线:确定第一像素线的多个边缘图坐标的一个或多个边缘图坐标超过距贝塞尔曲线的距离阈值,并且基于确定一个或多个边缘图坐标超过距离阈值,将贝塞尔曲线划分为被拟合到一个或多个边缘图坐标的多个贝塞尔曲线。

在各种实施例中,动作1350包括通过以下项来将贝塞尔曲线拟合到边缘的像素线:基于比较像素线的至少三个连接像素的组,以确定曲率值超过最大曲率阈值来确定像素线内的角像素,并且拟合像素线的第一端点和角像素之间的第一贝塞尔曲线以及像素线的第二端点和角像素之间的第二贝塞尔曲线。

本文使用的术语“数字环境”通常是指例如作为独立应用(例如在计算设备上运行的个人计算机或移动应用)、作为应用的元件、作为应用的插件、作为库函数或函数、作为计算设备和/或作为云计算系统来实现的环境。如本文所述,数字媒体环境允许图像变换系统编辑数字图像。

本公开的实施例可以包括或利用包括计算机硬件的专用或通用计算机,诸如例如一个或多个处理器和系统存储器,如下面附加详细讨论的。本公开范围内的实施例还包括用于携带或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。具体地,本文描述的一个或多个处理可以至少部分地实现为在非暂时性计算机可读介质中体现并且可由一个或多个计算设备(例如本文描述的媒体内容访问设备中的任意一个)执行的指令。通常,处理器(例如微处理器)从非暂时性计算机可读介质(例如存储器等)接收指令,并执行那些指令,从而执行一个或多个处理,包括本文描述的处理中的一个或多个。

计算机可读介质可以是可由通用或专用计算机系统访问的任意可用介质。存储计算机可执行指令的计算机可读介质是非暂时性计算机可读存储介质(设备)。携带计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,本公开的实施例可以包括至少两种截然不同的计算机可读介质:非暂时性计算机可读存储介质(设备)和传输介质。

非暂态计算机可读存储介质(设备)包括ram、rom、eeprom、cd-rom、固态驱动器、闪存、相变存储器、其他类型的存储器、其他光盘存储器、磁盘存储器或其他磁存储设备、或用于以计算机可执行指令或数据结构的形式来存储所需程序代码部件并且可由通用或专用计算机访问的任何其他介质。

计算机可执行指令包括例如指令和数据,当由处理器执行时,使得通用计算机、专用计算机或专用处理设备执行特定功能或功能组。在一些实施例中,通用计算机执行计算机可执行指令以将通用计算机转变为实现本公开的元素的专用计算机。计算机可执行指令可以是例如二进制文件、诸如汇编语言的中间格式指令、或甚至是源代码。尽管用结构特征和/或方法专用的语言描述了本主题,但应理解,所附权利要求书中定义的主题不必限于上述的所述特征或动作。相反,所描述的特征和动作被公开为实现权利要求的示例形式。

本领域技术人员将理解,本公开可以在具有许多类型的计算机系统配置的网络计算环境中实践,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持设备、多处理器。系统、基于微处理器或可编程的消费电子产品、网络pc、小型计算机、大型计算机、移动电话、pda、平板计算机、寻呼机、路由器、交换机等。本公开还可以在分布式系统环境中实施,其中通过网络链接(通过硬连线数据链路、无线数据链路或通过硬连线和无线数据链路的组合)的本地和远程计算机系统都执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备中。

本公开的实施例还可以在云计算环境中实现。在本说明书中,“云计算”被定义为用于能够实现对可配置计算资源的共享池的按需网络访问的模型。例如可以在市场中采用云计算,以供应对可配置计算资源的共享池的普遍且方便的按需访问。可配置计算资源的共享池可以经由虚拟化快速供应,并以低管理工作量或服务提供商交互发布,然后相应地进行扩展。

云计算模型可以由各种特征组成,诸如例如按需自助服务、广泛网络访问、资源池、快速弹性、测量服务等。云计算模型还可以暴露各种服务模型,例如软件即服务(“saas”)、平台即服务(“paas”)和基础设施即服务(“iaas”)。还可以使用不同的部署模型部署云计算模型,诸如私有云、社区云、公共云、混合云等。在本说明书和权利要求书中,“云计算环境”是采用云计算的环境。

图14示出了示例性计算设备1400的框图,该计算设备1400可以被配置为执行上述处理中的一个或多个。可以理解,诸如计算设备1400的一个或多个计算设备可以表示上述客户端设备200、1102、服务器设备1104和计算设备1000。在一个或多个实施例中,计算设备1400可以是移动设备(例如移动电话、智能电话、pda、平板计算机、膝上型计算机、相机、跟踪器、手表、可穿戴设备等)。在一些实施例中,计算设备1400可以是非移动设备(例如台式计算机或其他类型的客户端设备)。此外,计算设备1400可以是包括基于云的处理和存储能力的服务器设备。

如图14所示,计算设备1400可以包括一个或多个处理器1402、存储器1404、存储装置1406、输入/输出(“i/o”)接口1408和通信接口1410,其可以通过通信基础设施(例如总线1412)通信地耦合。虽然图14中示出了计算设备1400,但是图14中示出的组件并非旨在进行限制。在其他实施例中可以使用附加或替代组件。此外,在某些实施例中,计算设备1400包括比图14中所示的组件更少的组件。现在将更详细地描述图14中所示的计算设备1400的组件。

在特定实施例中,处理器1402包括用于执行指令的硬件,诸如构成计算机程序的指令。作为示例而非通过限制的方式,为了执行指令,处理器1402可以从内部寄存器、内部高速缓存、存储器1404或存储设备1406检索(或获取)指令并解码和执行他们。

计算设备1400包括存储器1404,其耦合到处理器1402。存储器1404可以用于存储数据、元数据和程序以供处理器执行。存储器1404可以包括易失性和非易失性存储器中的一个或多个,诸如随机存取存储器(“ram”)、只读存储器(“rom”)、固态盘(“ssd”)、闪存、相变存储器(“pcm”)或其他类型的数据存储。存储器1404可以是内部或分布式存储器。

计算设备1400包括存储设备1406,其包括用于存储数据或指令的存储装置。作为示例,但不作为限制,存储设备1406可以包括上述的非暂时性存储介质。存储设备1406可以包括硬盘驱动器(hdd)、闪存、通用串行总线(usb)驱动器或这些或其他存储设备的组合。

如图所示,计算设备1400包括一个或多个i/o接口1408,其被提供以允许用户向计算设备1400提供输入(例如用户数字笔画),从计算设备1400接收输出,以及以其他方式向计算设备1400传送数据并从计算设备1400传送数据。这些i/o接口1408可以包括鼠标、小键盘或键盘、触摸屏、相机、光学扫描仪、网络接口、调制解调器、其他已知的i/o设备或这些i/o接口的组合1408。触摸屏可以用触控笔或手指激活。

i/o接口1408可以包括用于向用户呈现输出的一个或多个设备,包括但不限于图形引擎、显示器(例如显示屏)、一个或多个输出驱动器(例如显示驱动程序)、一个或多个音频扬声器、以及一个或多个音频驱动程序。在某些实施例中,i/o接口1408被配置为向显示器提供图形数据以呈现给用户。图形数据可以代表一个或多个图形用户界面和/或可以用于特定实现的任意其他图形内容。

计算设备1400还可以包括通信接口1410。通信接口1410可以包括硬件、软件或两者。通信接口1410提供用于计算设备与一个或多个其他计算设备或一个或多个网络之间的通信(诸如例如基于分组的通信)的一个或多个接口。作为示例而非通过限定的方式,通信接口1410可以包括:网络接口控制器(nic)或网络适配器,用于与以太网或其他基于有线的网络通信;或无线nic(wnic)或无线适配器,用于与诸如wi-fi的无线网络进行通信。计算设备1400还可以包括总线1412。总线1412可以包括将计算设备1400的组件彼此连接的硬件、软件或两者。

在前述说明中,已经参考本发明的特定示例性实施例描述了本发明。参考本文讨论的细节描述了本发明的各种实施例和方面,并且附图示出了各种实施例。以上描述和附图是对本发明的说明,而不应解释为限制本发明。描述了许多具体细节以提供对本发明的各种实施例的透彻理解。

在不脱离本发明的精神或基本特征的情况下,本发明可以以其他特定形式实施。所描述的实施例在所有方面都应被视为仅是说明性的而非限制性的。例如本文描述的方法可以用更少或更多的步骤/动作来执行,或者步骤/动作可以以不同的顺序执行。附加地,本文描述的步骤/动作可以彼此并行地重复或执行,或者与相同或相似的步骤/动作的不同实例并行地执行。因此,本发明的范围由所附权利要求而不是前面的描述表示。在权利要求的等同含义和范围内的所有改变都涵盖在其范围内。

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