具体实施方式
图形对象通常由图形对象分类系统(或分类系统)基于图形对象的模板来进行分类。即,为了对图形对象进行分类,将该图形对象与一组模板进行比较,所述一组模板中的每一个与图形对象的类别(或类型)相关联。如果图形对象匹配(或满足)模板,则将该图形对象分类在与该模板相关的类别中。
然而,由于例如在显示器的分辨率、图形用户界面的参数和/或图像的色彩反转中的改变,可以更改图形对象的外观。此外,图形对象的外观可以暂时地或动态地改变。例如,图形对象的外观可以在用户与图形对象交互时或者基于与图形对象相关联的状态而改变。作为具体的示例,当用户将鼠标指针移动在图形对象上方时,当用户用鼠标指针选定图形对象(例如,在图形对象上点击)时或者当与图形对象相关联的功能不可得时,图形对象的色彩、浓淡或其它属性可以改变。作为另一个示例,当来自与图形对象相关联的软件应用的通知或消息可得时,图形对象的外观可以改变。具体地,例如,当在电子邮箱中存在未读消息时,与电子邮箱软件应用相关联的图形对象的外观(例如,图标)可以改变。
由于在外观或变换中的这种改变,在图形对象的变换之后基于模板对图形对象进行分类可能是不可靠的。此外,针对图形对象的每个可能的变换或外观生成模板由于数据存储约束和/或可能变换的数量而可能是不实际且效率低的。
本文中讨论的实施方式基于那些图形对象的外观不变签名对图形对象进行分类。例如,外观不变签名可以基于图形对象的表示(例如,位图表示或基于像素值的矩阵的表示)来生成。这样的表示可以被称作图形对象表示。然后,在分类模块处使用外观不变签名来对图形对象进行分类。即,外观不变签名是在图形对象的分类期间的针对图形对象的代理。
外观不变签名具有响应图形对象的外观中的改变(例如,由于变换而导致的改变)而几乎不变化的属性或特性。由此,在图形对象的变换之前或之后,可以将图形对象分类到相同的类别中。换一种说法,在变换之前通过使用从图形对象的表示生成的外观不变签名来将图形对象分类到的类别与在变换之后通过使用从图形对象的表示生成的另一个外观不变签名所分类到的类别相同。
这样的分类系统可以用在各种各样的环境中。例如,这样的分类系统可以用来对包括在诸如图形用户界面或其它包括图标的图像的人造或人工图像内的图标(即,图形对象)进行分类。即,分类系统可以用来分析图像并确定在该图像内包括什么样的类别(或类型)的图标。
作为具体的示例,这样的分类系统对于软件自动化可以特别有利。例如,软件自动化工具可以被配置为在图形用户界面(“GUI”)内执行一些任务。即,软件自动化工具通过操纵(例如,点击或模仿鼠标点击)GUI的控件来执行任务。因为GUI的外观可以改变(即,由于GUI的皮肤或新视觉分层的应用而被变换),所以,使用外观不变签名的GUI的控件(即,GUI的图形对象)的分类可以在外观的改变之后减轻或防止分类中的改变。
如本文中使用的,单数形式“一”、“一个”和“该”包括复数项,除非上下文清楚地另外指明。由此,例如,术语“图形对象”旨在表示一个或多个图形对象或者图形对象的组合的意思。此外,如本文中使用的,术语“模块”指的是硬件(例如,处理器或电路)和/或存储在存储器处并在处理器处进行执行和解释(或运行)的软件(例如,固件、程序、机器或处理器可执行的指令、命令或代码)。换句话说,模块可以是硬件和/或软件的组合,所述软件被存储在对硬件而言可访问的存储器中。
图1是根据实施方式的一组图形对象的分类的图示。图形对象111-116均被提供给分类系统120,在所述分类系统120处将图形对象111-116分类到类别(或对象类别)131、133和/或135中。例如,可以将图形对象111-116提供给分类系统120。分类系统120基于例如图形对象111-116的属性(例如,特征、特性和/或性质)通过使用外观不变签名111-116来对图像对象进行分类。即,图形对象111-116中的每个图形对象与具有与该图形对象相同的类似属性的其它图形对象相关联(例如,分组或相关)。由此,图形对象111-116的一些图形对象被分类到类别131中,图形对象111-116的另一些图形对象被分类到类别133中,并且图形对象111-116的又另一些图形对象被分类到类别135中。
分类系统可以识别类别131、133和135的类别,通过使用各种方法将来自图形对象111-116的每个图形对象分类到类别131、133和135的类别中。例如,分类系统120可以在诸如与该类别中的图形对象相关联(或为该类别中的图形对象指定的)数据库表或文件系统目录的数据存储的一部分处存储在共同类别中的图形对象(或共同类别的图形对象或具有共同类别的图形对象)。作为另一个示例,分类系统120可以对每个图形对象进行注释或者施加水印,以指明或识别其中包括该图形对象的类别。作为又另一个示例,如在本文中更详细讨论的,分类系统120例如可以在分类系统120处对该图形对象进行处理或分析之后(例如,向显示设备,经由通信链路,向数据库或向文件)输出其中包括该图形对象的类别的标识符。在一些实施方式中,分类系统120可以输出图形对象的标识符(例如,姓名或图形对象的尺寸减小的副本(即缩略图))和其中包括该图形对象的类别的标识符。
图形对象是图像的部分。例如,图形对象可以是图像内的图标。图标是图像内表示资源和/或功能的图像的部分或子图像。作为具体的示例,GUI内的控件是表示经由GUI可得的或可访问的资源和/或功能的图标。这样的控件的示例包括控制按钮(例如下压按钮和单选按钮)、复选框、编辑框、列表(例如,滚动列表和下拉列表)、应用访问控件(例如,表示软件应用的图标)、文件访问控件(例如,表示文件的图标)和资源访问控件(例如,表示诸如经由通信链路可访问的服务的资源的图标)。
作为GUI内的控件的图形对象的具体示例,图2是根据实施方式的在图形用户界面处的一组控件的分类的图示。图2所示的图形用户界面170包括带有三个单选按钮控件(标记为“选项1”、“选项2”和“选项3”)的单选按钮组171、带有三个复选框控件(标记为“选定1”、“选定2”和“选定3”)的复选框组172、下拉列表控件173(包括条目“数值1”、“数值2”和“数值3”)、编辑框控件174和下压按钮控件175和176。在其它实施方式中,图形用户界面170可以包括相比图2所示的空间额外的或更少的控件。例如,图形用户界面170可以排除编辑框控件174并可以包括应用访问控件(例如,图标),所述应用访问控件表示应用并使应用在运行图形用户界面170的计算设备处被执行。
分类系统120访问在图形用户界面170处的控件171-176(或其表示),并且将控件171-176分类到类别131-135中。类别131与单选按钮控件相关联。由此,分类系统120将单选按钮组171的每个单选按钮控件分类到类别131中。在一些实施方式中,分类系统120也将单选按钮组171分类到类别131中。即,分类系统120将各个单选按钮控件(即每个单选按钮及相关联的文本)和单选按钮组171(即独立的单选按钮控件的集合)分类到共同的类别中。在其它实施方式中,分类系统120将各个单选按钮控件和单选按钮组171分类到不同的类别中。
类似地,分类系统120将复选框组172的每个复选框控件分类到类别132中。类别132与复选框控件相关联。在一些实施方式中,分类系统120也将复选框组172分类到类别132中。即,分类系统120将各个复选框控件(即每个复选框及相关联的文本)和复选框组172(即各个复选框控件的集合)分类到共同的类别中。在其它实施方式中,分类系统120将各个复选框控件和复选框组172分类到不同的类别中。
分类系统120将下拉列表控件173分类到类别133中。类别133与下拉列表控件相关联。分类系统120将编辑框控件分类到类别134中。类别134与编辑框控件相关联。分类系统120将下压按钮175和176分类到类别135中。类别135与下压按钮控件相关联。
换一种说法,分类系统120基于控件171-176的(或控件171-176的表示的)属性通过使用外观不变签名来将图形用户界面170处的控件171-176分类到各种类别中,使得类别131-135的每个类别中的控件享有共同的属性。在一些实施方式中,与图2所示的相比,分类系统120可以将控件分类到额外的、更少的和/或其它的类别中。
图3是根据实施方式的分类系统的图示。分类系统300包括采集模块310、签名生成模块320和分类模块330。通常,与图形对象的分类相关的数据集(或信息)流过图3所示的分类系统300。此外,在一些实施方式中,分类系统300包括诸如数据库、文件系统、通信接口模块或者显示界面的输出模块,分类系统300可以经由所述输出模块输出类别的标识符,在所述标识符中包括输入到分类系统300和/或在分类系统300处访问的图形对象。
采集模块310包括用来访问图形对象的表示的诸如处理器或专用集成电路(“ASIC”)的硬件、存储在存储器处并在处理器处从存储器执行的软件、或者其组合。例如,采集模块310可以是在处理器处运行的视图抓取应用(例如,软件应用)。签名生成模块320包括用来生成图形对象的外观不变签名的诸如处理器或ASIC的硬件、存储在存储器处并在处理器处从存储器执行的软件、或者其组合。分类模块330包括用来基于那些图形对象的外观不变签名对图形对象进行分类的诸如处理器或ASIC的硬件、存储在存储器处并在处理器处从存储器执行的软件、或者其组合。例如,分类模块330可以是包括在处理器处运行的图形代码的分类软件库。
图4是根据实施方式的用来对图形对象进行分类的过程的流程图。可以将过程400实施为硬件模块、在计算设备处运行的软件模块和/或硬件模块和软件模块的组合。例如,可以将过程400实施为专用电路或者包括指令的软件模块,所述指令被存储在存储器处,并在与存储器通信的处理器处执行。更具体地,例如,可以在诸如分类系统300的分类系统处实施过程400。
在块410处访问诸如GUI控件的图形对象的表示。例如,采集模块310可以接收GUI的位图表示。作为具体的示例,在运行GUI的计算设备处运行分类系统300,并且采集模块310生成GUI的截图。然后,采集模块310可以解析截图,以访问在GUI处的控件的位图表示。例如,采集模块310可以施加边缘检测滤波器到GUI,并且选定边缘检测滤波器针对其生成矩形特征的GUI的部分。然后,使用所选定的部分(例如,GUI截图的部分)作为在GUI处的控件的表示。更具体地,在该示例中,通过采集模块310来访问作为控件的位图表示的GUI截图的部分。
作为另一个示例,可以经由例如分类系统300的通信接口模块或应用程序接口(“API”)将诸如图形对象的位图表示的表示提供给采集模块310。此外,各个图形对象的表示在数据存储(即,数据存储设备,数据存储服务或者其组合)处对分类系统300而言可以是可访问的,并且采集模块310可以在该数据存储处访问图形对象的表示。
然后,在块420处从图形对象的表示生成图形对象的外观不变签名。例如,采集模块310提供图形对象的表示到签名生成模块320,并且签名生成模块320生成图形对象的外观不变签名。图形对象的外观不变签名是用来对图形对象进行分类的数值或数值的集(即,向量),并且包括(或具有)响应图形对象中的变化而不显著改变的属性。即,从图形对象的表示生成图形对象的外观不变签名,并且图形对象的外观不变签名包括基本上与从变换后的所述图形对象的表示生成另一个外观不变签名相同或一致的属性。
换一种说法,两个外观不变签名在分类系统内(或对于诸如分类模块330的分类系统)彼此相同或一致。如果分类模块将由两个(或多个)外观不变签名表示的图形对象分类到相同的类别中,则两个(或多个)外观不变签名基本上相同或一致。即,如果分类模块针对每个外观不变签名产生共同的分类结果,则外观不变签名基本上相同或一致。换一种说法,如果针对每个外观不变签名将图形对象分类到相同的类别中,则基于变换的图形对象的外观不变签名基本上与基于原始的图形对象(即,变换的图形对象在它被变换之前)的外观不变签名相同或一致。
如果图形对象被更改或改变以具有不同的外观,则变换图形对象。即,图形对象的变换是图形对象的色彩、形状、尺寸、定向或者其它属性中的改变。作为示例,施加新的皮肤或视觉分层到GUI可以变换GUI的控件。即,更改控件的外观,但是那些控件的功能保持相同。图5-8图示了各种变换之前和之后的图形对象。
图5是根据实施方式的图2的图形用户界面的图示。控件171-176类似于与图2相关的上述控件,并且图5中的图形用户界面的图示可以被称作图形用户界面170的原始(或未变换的)状态。
图6是根据实施方式的变换后的图2的图形用户界面的图示。如图6所示,图形用户界面170已经经历、经受或遭受色彩变换。具体如图6所示,控件171-176的色彩已经被反转。
图7是根据实施方式的变换后的图2的图形用户界面的图示。如图7所示,控件171-176的形状已经被更改。换一种说法,皮肤或不同的视觉分层已经被施加到图形用户界面170。作为图形用户界面170的外观的结果改变的具体示例,单选按钮组171的单选按钮控件已经被从圆形更改为方形。此外,控件172-176的拐角已经被弄成圆形。
图8是根据实施方式的变换后的图2的图形用户界面的图示。如图8所示,图形用户界面170和控件171-176已经被放大。例如,图形用户界面170和控件171-176可以响应显示器的分辨率中的改变而被放大,所述显示器输出图形用户界面170。
如图5-8所示,GUI的控件可以由于显示器的分辨率、视觉分层、色彩选项和/或其它参数中的改变而具有更改的外观。此外,其它图形对象的外观可以由于这些和/或其它参数而改变。作为这样的改变的结果,在图形对象的变换之后基于模板(即,在更早时间处访问的且与特别的类别相关联的图形对象)对图形对象进行分类可能是不可靠的。此外,针对图形对象的每个可能的变换或外观生成模板由于数据存储限制和/或可能变换的数量而可能是不实际且效率低的。相应地,外观不变签名可以用来对图形对象进行分类以防止或减轻在该图形对象已经被变换之后的该图形对象在分类中的改变。
参考图4,然后,在块430处使用外观不变签名对图形对象进行分类。在参考图3的情况下,签名生成模块320提供图形对象的外观不变签名到分类模块330,并且分类模块330将该图像对象分类到类别中,即,分类模块330基于图形对象的外观不变签名确定图形对象将被分类到哪一个类别中。换一种说法,分类模块330可以确定或识别享有共同的属性的外观不变签名,并且将那些外观不变签名(或与其相关的图形对象)分组或分类到类别中。
作为具体的示例,分类模块330可以实施支持向量机(“SVM”),这样的SVM利用高斯核。换句话说,分类模块330可以是基于支持向量机的分类模块。在一些实施方式中,SVM或SVM核已经提前被训练。例如,已经可以通过使用监督的训练过程来配置SVM,在所述监督训练过程中,将针对各种类别的每一个的外观不变签名的组提供给SVM。然后,SVM生成或定义支持向量,SVM使用该支持向量来区别来自那些类别的图形对象的外观不变签名(即,识别与那些类别相关联的外观不变签名的属性),以便对图形对象进行分类。
可替换地,可以通过使用非监督训练方法来配置SVM,在所述非监督训练方法中,将一组外观不变签名提供给SVM,并接着,SVM生成或定义用来将外观不变签名分到SVM确定为显著(例如,通过诸如统计的、几何的或欧几里德的度量来区别)的类别(或组)中的支持向量。在其它实施方式中,可以使用其它分类模块和/或训练方法。
在其它实施方式中,分类模块330可以是不同类型的分类模块。例如,分类模块330可以基于K均值聚类、均值移动聚类或者GrabCut聚类。
与图4所示的块相比,过程400可以包括额外的或更少的块。例如,过程400可以包括额外的块,在该块处,可以将图形对象被分类到的类别的标识符输出例如到日志文件,到显示器处的用户或者经由通信链路。作为另一个示例,多外观不变签名可以用来对图形对象进行分类。换句话说,可以重复块420以生成多外观不变签名,并且可以基于两个或更多的外观不变签名对图形对象进行分类。例如,在用户与图形对象交互时或基于与图形对象相关联的状态,例如,一些图形对象的外观可以临时地或动态地改变。更具体地,例如,当用户将鼠标指针移动到图形对象上方时或当用户用鼠标指针选定图形对象时,图形对象的色彩、浓淡或其它属性可以改变。在用户与图形对象交互之前可以生成外观不变签名,并且在用户与图形对象交互的同时可以生成另一个外观不变签名。然后,两个外观不变签名均可以用来对图形对象进行分类。
作为具体的示例,GUI处的按钮可以具有默认的外观(或状态)、当鼠标指针在按钮上方(即悬停在上方)时为阴影的外观和当选定按钮时为按下的外观。可以生成针对按钮的每个外观(或状态)的外观不变签名,并且可以使用每个外观不变签名对按钮进行分类。即,可以将每个外观不变签名提供给分类模块以对按钮进行分类。
此外,可以重新布置过程400的一个或多个块。例如,可以针对诸如GUI处的控件的多图形对象重复过程400。此外,虽然上文参考分类系统内的示例环境讨论了过程400,但是,过程400在其它环境内是可应用的。
图9是根据实施方式的用来生成图形对象的外观不变签名的过程的流程图。可以将过程900实施为硬件模块、在计算设备处运行的软件模块和/或硬件模块和软件模块的组合。例如,可以将过程900实施为专用电路或者包括指令的软件模块,所述指令被存储在存储器处,并在与存储器通信的处理器处执行。更具体地,例如,可以在签名生成模块处实施过程900。
图9是用来生成图形对象的外观不变签名的示例方法。如图9所示,外观不变签名可以是从图形对象的多维(此处,二维)表示生成的合成签名(即签名包括多部分)。例如,图形对象的多维表示可以是图形对象的二维位图。更具体地,针对图形对象的表示,在910处生成第一签名向量(即,外观不变签名的第一组分或部分),并且在块920处生成第二签名向量。第一和第二签名向量也可以被称作信号。由此,外观不变签名可以包括多信号。
在块911处通过沿着图形对象的表示的第一维进行积分来生成第一签名向量。然后,在块912处沿着图形对象的表示的第二维确定(或求)积分的结果向量(或信号)的导数。例如,图形对象的表示的二维位图可以沿着y轴被积分,并接着可以求结果的沿着x轴的导数。
然后,在块913处将导数的结果向量变换到不同的域中。例如,导数的结果向量可以被变换到对数域。此外,也可以结合或取代到对数域的变换而执行结果向量的其它变换。作为具体的示例,对导数的结果向量执行傅立叶变换并丢弃相组分(即仅保留傅立叶变换的幅度组分)。然后,将傅立叶变换的结果向量变换到对数域。最终,对对数域变换的结果向量执行傅立叶变换并丢弃相组分(即仅保留傅立叶变换的幅度组分)。块913的结果向量是在块910处生成的第一签名向量。
类似地,在块921处通过沿着图形对象的表示的第二维进行积分来生成第二签名向量。然后,在块922处沿着图形对象的表示的第一维求积分的结果向量的导数。例如,图形对象的表示的二维位图可以沿着x轴被积分,并接着可以求结果的沿着y轴的导数。即,在块921处沿着在块912处求导数所沿的维度求积分,并且在块922处沿着在块911处求积分所沿的维度求导数。
然后,在块923处将导数的结果向量变换到不同的域中。例如,导数的结果向量可以被变换到对数域。此外,也可以结合或取代到对数域的变换而执行结果向量的其它变换。作为具体的示例,对导数的结果向量执行傅立叶变换并丢弃相组分。然后,将傅立叶变换的结果向量变换到对数域中。最终,对对数域变换的结果向量执行傅立叶变换并丢弃相组分。块923的结果向量是在块920处生成的第二签名向量。
图形对象的外观不变签名也可以包括额外的组分或信号。如图930所示,可以生成(或计算出)在外观不变签名处包括的与图形对象相关的梯度信息。作为示例,可以从图形对象的表示计算出图形对象的梯度角的直方图。直方图可以是包括在外观不变签名内的另一个向量(或信号或组分)。
此外,在块940处可以从图形对象的表示生成(或计算出)与图形对象相关的色彩信息。例如,可以确定在色彩数值(即表示色彩的图形对象的表示内的数值)的范围内的图形对象的百分比(即表示百分比的数值)。在一些实施方式中,在块940处可以生成表示在色彩数值的各种范围内的图形对象的百分比的一组数值。这样的一个数值或多个数值是包括在外观不变签名内的另一个向量(或信号或组分)。
在块950处集合(或组合)过程900处生成的向量(例如,块910、920、930和940的结果),以定义外观不变签名。在一个实施方式中,级联(按顺序生成)第一签名向量、第二签名向量、梯度信息和色彩信息,以定义外观不变签名。换句话说,外观不变签名是第一签名向量、第二签名向量、梯度信息和色彩信息的合成。
与图9所示的块相比,过程900可以包括额外或更少的块。此外,可以重新布置一个或多个块。例如,可以在可操作用于生成并行的多签名向量的签名生成模块处实施过程900,并且第一签名向量和第二签名向量是同时生成的。此外,虽然上文参考包括签名生成模块的示例环境讨论了过程900,但是,过程900在其它环境内是可应用的。
图10是根据实施方式的作为分类系统被配置的计算设备的示意框图。即,分类系统可以在计算设备1000处运行(即,被实施为如下代码:当在计算设备处被执行时使计算设备—或计算设备的一个或多个处理器—执行例如过程400以对图形对象进行分类)。计算设备1000当运行分类系统时可以被称作分类系统。如图10所示,计算设备1000包括通信接口模块1020、处理器1010、存储器1030和非易失性(即,非瞬态)处理器可读介质1040。处理器1010可操作地耦合至通信接口模块1020、存储器1030和非易失性处理器可读介质1040。
处理器1010是各种处理器中的任意一种。例如,处理器1010可以是通用处理器或专用处理器,并且可以被实施为硬件和/或在硬件处运行的软件。硬件是例如微处理器、微控制器、专用集成电路(“ASIC”)、诸如现场可编程门阵列(“FPGA”)的可编程逻辑设备(“PLD”)和/或执行操作的其它电路。软件例如是存储在存储器处并在处理器处执行(或运行)的处理器可执行指令、命令、代码、固件和/或程序。软件可以使用诸如JavaTM、C++、C、汇编语言、硬件描述语言和/或其它合适的程序设计语言中的一个或多个程序语言来定义。例如,处理器可以是在包括微处理器和存储器的计算机服务器处运行的虚拟机。
在一些实施方式中,处理器1010可以包括多处理器。例如,处理器1010可以是包括多处理引擎(例如,计算、算法和多线程核心)的微处理器。作为另一个示例,处理器1010可以是包括带有共享的时钟、存储器总线、输入/输出总线和/或其它共享的资源的多处理器的计算设备。此外,处理器1010可以是分布式处理器。例如,处理器1010可以包括多处理设备,每个处理设备包括处理器,彼此经由诸如计算机网络的通信链路进行通信。
存储器1030可以是与处理器1010分开的,并且可以是外部的且对处理器1010而言可访问的。通常,如图10所示,存储器1030包括定义在计算设备1010的操作期间由处理器1010执行的软件的处理器可执行指令或代码(例如,计算机代码或对象代码)。例如,存储器1030可以是包括定义操作系统1031、设备驱动器1032和分类系统1033的处理器可执行指令(例如,实施诸如过程400的过程的软件应用)的随机访问存储器(“RAM”)。换句话说,在存储器1030处存储为处理器可执行指令(未示出)并在处理器1010处执行的操作系统1031、设备驱动器1032、分类系统1033和其它软件在计算设备1000(或在处理器1010)处被运行。分类系统1033可以包括诸如:例如,采集模块、签名生成模块和分类模块的部件。分类系统1033的部件可以被实施为子程序、函数、软件函数库(例如,静态链接函数库和/或动态链接或加载函数库)和/或分类系统1033的其它模块。
通常,将操作系统1031、设备驱动器1032、分类系统1033、其它软件应用(即,当在处理器处运行时实施软件应用的处理器可执行代码或指令)和/或数据数值被存储在非易失性处理器可读介质1040处。在一些实施方式中,处理器1010在计算设备1000的启动序列的初始化期间将操作系统1031、设备驱动器1032、分类系统1033、其它软件应用和/或数据数值传送或加载到存储器1030中,并且操作系统1031、设备驱动器1032、分类系统1033、其它软件应用和/或数据数值在计算设备1000的操作期间从存储器1030被访问或执行。即,非易失性处理器可读介质1040可以用作用于存储器1030处的在计算设备1000操作期间存储的代码、指令、数据数值和/或其它信息的持续的或非瞬态的数据存储或存储器。由此,存储器1030和非易失性处理器可读介质1040可以通用地被称作计算设备1000的存储器。
处理器可读介质的示例包括但不限于:诸如硬盘、软盘和/或磁带的磁存储介质;诸如光盘(“CD”)、数字视频光盘(“DVD”)、光盘只读存储器(“CD-ROM”)和/或全息设备的光学存储介质;磁光存储介质;诸如只读存储器(“ROM”)、可编程只读存储器(“PROM”)、可擦除可编程只读存储器(“EPROM”)、电可擦除只读存储器(“EEPROM”)和/或闪存存储器的非易失性存储器;以及RAM。换句话说,处理器可读介质是处理器可以从中访问信息(例如,处理器可执行指令或代码和/或数据数值)的介质。由此,非易失性处理器可读介质1040是处理器可读的存储器,并且存储器1030也是处理器可读的介质。
处理器可执行代码或指令(例如,计算机代码或指令)的示例包括但不限于:诸如由编译器产生的微代码或微指令、机器指令以及包含由计算机使用解释器执行的更高级指令的文件。例如,实施方式可以通过使用JavaTM、C++、脚本解释器或者其它面向对象的程序设计语言和开发工具来实现或实施。处理器可执行代码的额外的示例包括但不限于:脚本指令、加密代码和压缩代码。
非易失性处理器可读介质1040可以是例如计算设备1000内的硬盘,所述硬盘包括从诸如DVD或CD的另一个处理器可读介质加载或复制到非易失性处理器可读介质1040的软件。在一些实施方式中,非易失性处理器可读介质1040可以是计算设备1000外部的或者可以是从计算设备1000可移除的。例如,非易失性处理器可读介质1040可以包括通用串行总线TM(“USB”)接口(或接口模块),并且非易失性处理器可读介质1040可以是带有USB接口的闪存存储器设备。在其它实施方式中,非易失性处理器可读介质1040可以与处理器1010集成。在又其它实施方式中,非易失性处理器可读介质1040可以远离计算设备1000,并且计算设备1000可以经由通信链路(例如,计算机网络)访问非易失性处理器可读介质1040。作为具体的示例,非易失性处理器可读介质1040可以是(或处于)经由操作地耦合到通信接口模块1020的通信链路而可访问的数据存储或数据存储服务。计算设备1000可以通过如下步骤进行启动:经由通信接口模块1020从非易失性处理器可读介质1040向存储器1030复制处理器可执行代码或指令,以及在处理器1010处执行处理器可执行代码或指令。
通信接口模块1020是可访问处理器1010的接口,用于经由通信链路与其它处理器和/或计算设备通信(即发送表示数据的符号到其它处理器和/或计算设备通信并且从其接收这样的符号)。换句话说,通信接口模块1020可以从处理器1010接收数据,并且经由通信链路发送表示那些数据的符号。在一些实施方式中,分类系统1033经由通信接口模块1020输出与图形对象的分类相关的信息。
此外,通信接口模块1020可以经由通信链路从其它通信接口模块接收符号,并且向处理器1010发出由那些符号表示的数据。例如,通信接口模块1020可以是电话网络接口、双绞线网络接口、同轴网络接口、光纤网络接口、诸如无线局域网络(“WLAN”)或蜂窝网络的无线网络接口、和/或一些其它网络或通信接口模块。
在一些实施方式中,计算设备1000可以包括额外的模块或部件。例如,计算设备1000可以包括用来向显示器提供信号以输出与图形对象的分类相关的信息的图形接口模块(未示出)。即,计算设备1000可以输出例如分类系统1033将图形对象分类在其中的类别的标识符。
图11是根据实施方式的用来对图形对象进行分类的过程的流程图。可以将过程1100实施为硬件模块、在计算设备处运行的软件模块和/或硬件模块和软件模块的组合。例如,可以将过程1100实施为专用电路或者包括指令的软件模块,所述指令被存储在存储器处,并在与存储器通信的处理器处执行。
在块1110处访问图形对象的表示。然后,在块1120处将图形对象的表示与图形对象的表示的一组模板进行比较,以确定图形对象的表示是否匹配(或满足)模板。如果图形对象的表示匹配模板,则将图形对象分类在与所述模板相关联的类别中。即,模板与类别相关联,并且如果图形对象的表示匹配模板,则将图形模板分类到与模板相关联的类别中。
如果在块1120处图形对象的表示不匹配(满足)模板,则过程1100进行到块1130,在块1130处,生成图形对象的表示的外观不变签名。例如,外观不变签名可以如与图4相关的上文讨论的那样生成。然后,在块1140处基于外观不变签名对图形对象进行分类。例如,分类模块基于图形对象的外观不变签名确定图形对象将被分类到哪一个类别中。
与图11所示的那些块相比,过程1100可以包括添加的或更少的块。此外,可以重新布置一个或多个块。此外,过程1100可应用在许多环境内。例如,过程1100可以在配置为运行分类系统的包括多处理器并与各种处理器可读介质通信的计算设备处实施。
作为包括一个或多个处理器和处理器可读存储介质的系统的示例,图12是根据实施方式的包括处理器和存储介质的系统1200的示意框图。如图12所示,系统1200包括操作地耦合到存储介质1221、存储介质1222和存储介质1223的一个或多个处理器1210。一个或多个处理器1210可以访问在存储介质1221、存储介质1222和存储介质1223处的指令或代码。存储介质1221、1222和1223可以是任何处理器可读介质和/或用来访问处理器存储介质的相关设备。例如,存储介质1221可以是包括磁存储介质的硬盘驱动,存储介质1222可以是诸如DVD驱动的光驱,并且可以接受其上可以存储诸如实施报告生成工具的处理器可读指令的处理器可读指令的DVD存储介质,并且存储介质1223可以是带有通用串行总线(“USB”)接口的闪存存储器驱动。在一些实施方式中,存储介质1221、1222和/或1223可以是对一个或多个处理器1210而言本地的(例如,耦合到共同的计算设备)。在一些实施方式中,存储介质1221、1222和/或1223可以远离一个或多个处理器1210(例如,耦合到分开的计算设备),并且经由通信链路与一个或多个处理器1210通信。此外,存储介质1221、1222和/或1223可以是对一个或多个处理器1210而言本地的,并且存储介质1221、1222和/或1223的剩余部分的一个或多个可以远离一个或多个处理器1210。
作为更具体的示例,一个或多个处理器1210可以被包括在诸如具有由存储介质1221表示的内部硬盘驱动数据存储以及由存储介质122表示的诸如安全数字高容量(“SDHC”)存储卡的可移除固态数据存储的通信设备的计算设备内。计算设备也可以包括用来与由存储介质1223表示的USB闪存存储器驱动通信的USB主机控制器。一个或多个处理器1210可以在存储介质1221、1222和/或1223的任意一个处访问诸如实施操作系统的处理器可读指令的处理器可读指令、诸如分类系统的软件应用和/或一个或多个进程。换一种说法,一个或多个处理器1210可以经由存储介质1221、存储介质1222和/或存储介质1223在处理器可读介质处解释或执行指令。例如,计算设备可以执行存储在远程存储介质处的分类系统。
可替换地,例如,存储介质1221和1222可以远离包括一个或多个处理器1210的计算设备,并且存储介质1223可以是对该计算设备而言本地的。包括一个或多个处理器1210的计算设备可以经由诸如通信网络的通信链路从远程存储介质1221或1222之一或两者下载分类系统到本地存储介质1223,并且从本地存储介质1223执行分类系统。
在一些实施方式中,系统1200可以包括诸如RAM的一个或多个存储器,所述RAM针对在一个或多个存储介质1221、存储介质1222和/或存储介质1223处存储(或可访问)的指令或代码用作在一个或多个存储介质1221、存储介质1222和/或存储介质1223与一个或多个处理器1210之间的缓存。
虽然上文已经示出并描述了特定的实施方式,但是可以做出在形式和细节方面的各种改变。例如,已经描述的与一个实施方式和/或过程相关的一些特征可以与其它实施方式相关。换句话说,描述的与一个实施方式相关的过程、特征、部件和/或属性在其它实施方式中可以是有用的。作为具体的示例,讨论的与图形用户界面、图形用户界面的控件和/或软件自动化相关的实施方式对其它环境而言是可应用的。此外,应当理解的是,本文中描述的系统和方法可以包括描述的不同实施方式的部件和/或特征的各种组合和/或子组合。由此,参考一个或多个实施方式描述的特征可以与本文中描述的其它实施方式组合。