图形处理器中的连接组件标记转让专利

申请号 : CN201510075296.8

文献号 : CN104915191B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : A·埃尔达N·泰奥米A·马内维特奇A·戈尔德曼L·阿本佐尔O·韦塞尔R·凯勒曼

申请人 : 英特尔公司

摘要 :

系统和方法可以规定获得与图像相关联的数据并且使用图形处理器中的多个线程对所述数据进行单指令多数据(SIMD)扫描。此外,系统和方法可以规定基于所述SIMD扫描生成与所述多个线程相对应的多个连接表。在一个示例中,所述图形处理器中的多个线程用于将所述多个连接表单级合并到针对所述图像的全局连接组件标记(CCL)表上。

权利要求 :

1.一种用于标记连接组件的系统,包括:

用于呈现图像的显示器;

共享存储器;以及

图形处理器,包括,

扫描模块,用于使用所述图形处理器中的多个线程对与图像相关联的数据进行单指令多数据SIMD扫描,所述扫描模块包括快速子模块和通用子模块,所述快速子模块用于针对所述多个线程中的每一个,如果关于所述图像的区域检测到同构情况,则对所述图像的所述区域使用第一扫描过程;并且所述通用子模块用于针对所述多个线程中的每一个,如果关于所述图像的所述区域没有检测到同构情况,则对所述图像的所述区域使用第二扫描过程,其中,所述第一扫描过程比所述第二扫描过程要快;

本地表模块,用于基于所述SIMD扫描生成与所述多个线程相对应的多个连接表,以及合并模块,用于使用所述图形处理器中的多个线程将所述多个连接表单级合并到针对所述图像的全局连接组件标记CCL表中,其中所述合并模块用于使用一个或多个原子操作,使用所述图像的组件之间的一个或多个新连接更新所述共享存储器中的所述全局CCL表。

2.根据权利要求1所述的系统,其中,所述图形处理器进一步包括平整模块,所述平整模块用于在第一平整阶段期间将所述全局CCL表中的一个或多个标记以信号形式作为根标记来发送,并且在第二平整阶段期间将所标记的根标记转换为一个或多个全局递增标记。

3.根据权利要求1所述的系统,进一步包括用于获得与所述图像相关联的数据的数据模块。

4.根据权利要求3所述的系统,其中,所述数据包括前景数据和部分标记数据。

5.一种标记连接组件的方法,包括:

使用处理器中的多个线程对与图像相关联的数据进行单指令多数据SIMD扫描,所述SIMD扫描包括:如果关于所述图像的区域检测到同构情况,则对所述图像的所述区域使用第一扫描过程;并且如果关于所述图像的所述区域没有检测到同构情况,则对所述图像的所述区域使用第二扫描过程,其中,所述第一扫描过程比所述第二扫描过程要快;

基于所述SIMD扫描生成与所述多个线程相对应的多个连接表;并且

使用所述处理器中的多个线程将所述多个连接表单级合并为针对所述图像的全局连接组件标记CCL表,其中所述单级合并包括使用一个或多个原子操作来使用所述图像的组件之间的一个或多个新连接更新共享存储器中的所述全局CCL表。

6.根据权利要求5所述的方法,进一步包括:

在第一平整阶段期间,将所述全局CCL表中的一个或多个标记以信号形式作为根标记来发送;并且在第二平整阶段期间,将所标记的根标记转换为全局递增标记。

7.根据权利要求5所述的方法,进一步包括获得与所述图像相关联的数据。

8.根据权利要求7所述的方法,其中,所述数据包括前景数据和部分标记数据。

9.一种用于标记连接组件的装置,包括:

扫描模块,用于使用处理器中的多个线程对与图像相关联的数据进行单指令多数据SIMD扫描,所述扫描模块包括快速子模块和通用子模块,所述快速子模块针对所述多个线程中的每一个,如果关于所述图像的区域检测到同构情况,则对所述图像的所述区域使用第一扫描过程,并且所述通用子模块针对所述多个线程中的每一个,如果关于所述图像的所述区域没有检测到同构情况,则对所述图像的所述区域使用第二扫描过程,其中,所述第一扫描过程比所述第二扫描过程要快;

本地表模块,用于基于所述SIMD扫描生成与所述多个线程相对应的多个连接表;以及合并模块,用于使用所述处理器中的多个线程将所述多个连接表单级合并为针对所述图像的全局连接组件标记CCL表,其中所述合并模块用于使用一个或多个原子操作来使用所述图像的组件之间的一个或多个新连接更新共享存储器中的所述全局CCL表。

10.根据权利要求9所述的装置,进一步包括平整模块,所述平整模块用于:在第一平整阶段期间,将所述全局CCL表中的一个或多个标记以信号形式作为根标记来发送,并且在第二平整阶段期间,将所标记的根标记转换为一个或多个全局递增标记。

11.根据权利要求9所述的装置,进一步包括用于获得与图像相关联的数据的数据模块。

12.根据权利要求11所述的装置,其中,所述数据将包括前景数据和部分标记数据。

13.一种用于标记连接组件的装置,包括:

用于使用处理器中的多个线程对与图像相关联的数据进行单指令多数据SIMD扫描的单元,用于进行所述SIMD扫描的单元包括:用于如果关于所述图像的区域检测到同构情况,则对所述图像的所述区域使用第一扫描过程的单元,以及用于如果关于所述图像的所述区域没有检测到同构情况,则对所述图像的所述区域使用第二扫描过程的单元,其中,所述第一扫描过程比所述第二扫描过程要快;

用于基于所述SIMD扫描生成与所述多个线程相对应的多个连接表的单元;以及用于使用所述处理器中的多个线程将所述多个连接表单级合并为针对所述图像的全局连接组件标记CCL表的单元,用于进行单级合并的单元包括:用于使用一个或多个原子操作来使用所述图像的组件之间的一个或多个新连接更新共享存储器中的所述全局CCL表的单元。

14.根据权利要求13所述的装置,进一步包括:

用于在第一平整阶段期间将所述全局CCL表中的一个或多个标记以信号形式作为根标记来发送的单元;以及用于在第二平整阶段期间将所标记的根标记转换为全局递增标记的单元。

15.根据权利要求13所述的装置,进一步包括用于获得与所述图像相关联的数据的单元。

16.根据权利要求15所述的装置,其中,所述数据将包括前景数据和部分标记数据。

说明书 :

图形处理器中的连接组件标记

背景技术

[0001] 计算机视觉应用可以涉及面部、手势以及图像和/或视频中的其它对象的自动识别。利用连接组件标记(Connected Component Labeling,CCL)可以便于实现识别,CCL标识图像/帧中属于相同对象的部分。传统地,CCL解决方案可能已经在中央处理单元(CPU)上实现,其中基于CPU的解决方案可能已经遭遇了低效率及功率消耗挑战。尽管更多最近的CCL解决方案可能已经使用通用图形处理单元(GPGPU)技术来解决这些关注中的一些,但是仍然存在相当大的改进空间。

附图说明

[0002] 通过阅读随后的说明书和所附的权利要求书,并且通过参考随后的附图,实施例的各个优点对于本领域的技术人员而言将变得显而易见,其中:
[0003] 图1是对根据实施例的连接组件标记(CCL)结果的示例的说明。
[0004] 图2是根据实施例的图形处理器CCL解决方案的示例的框图;
[0005] 图3是根据实施例标记连接组件的方法的示例的流程图;
[0006] 图4A-4C是根据实施例的进行单指令多数据(SIMD)扫描的方法的示例的流程图;
[0007] 图5是对根据实施例的快速扫描场景的示例的说明;
[0008] 图6是对根据实施例的通用扫描场景的示例的说明;
[0009] 图7是根据实施例的合并连接表的方法的示例的流程图;
[0010] 图8是对根据实施例的标记联合场景的示例的说明;
[0011] 图9是根据实施例将全局CCL表联合到共享存储器的方法的示例的流程图;
[0012] 图10是根据实施例的表平整过程的示例的状态图;
[0013] 图11A和11B是根据实施例的表平整阶段的示例的流程图;
[0014] 图12和图13是根据实施例的系统的示例的框图;以及
[0015] 图14是根据实施例的具有小形状因子的系统的示例的框图。

具体实施方式

[0016] 图1示出了连接组件标记(CCL)结果20,其中将图像标记为包含背景部分22以及与图像中的不同组件(例如,对象)相对应的多个其它部分24、26。例如,第一前景部分24可以与图像中描绘的个体的一个身体部分(例如,面部)相对应,而第二前景部分26可以与图像中描绘的个体的另一身体部分(例如,手部)相对应。所标记的组件可以与例如以建筑物、交通工具、景观项目(例如,树、山、地平线)等等或其任意组合为例的对象相对应。如将更详细讨论的,CCL结果20可以完全由使用提供了提高的效率、更少的处理开销、减少的功率消耗、延长的电池寿命等等的方法的图形处理器来生成。
[0017] 现在转向图2,示出了图形处理器CCL解决方案,其中获得与图像相关联的数据28(例如,前景数据、部分标记数据)。在所说明的示例中,图形处理器中的多个线程30(30a-30n)(例如,图形处理单元/GPU线程)用于进行数据28的单指令多数据(SIMD)扫描32。在此方面,图形处理器可以包括能够针对CCL过程提供实质的并行操作的相对大数量的执行单元。而且,使用SIMD扫描32能够使单个调用激活函数的多个实现,其中函数的每一个实现可以针对图像的区域/带/片(例如,2x16片)生成连接表34(34a-34n)。可以将可以与多个线程
30相对应(例如,与可用线程1:1相对应)的多个连接表34组合到单级合并过程35中以形成全局CCL表36。结合多个线程30使用单级合并过程35可以通过利用图形处理器中的所有可用线程来进一步提高效率。
[0018] 全局CCL表36通常可以包含针对图像的每一个像素的数值标记,其中上述标记可以具有分层数据结构。例如,诸如第一前景部分24(图1)的特定部分的像素标记可以全部被链接到被分配给该部分中的像素中的一个或多个的“根”标记,其中诸如第二前景部分26(图1)的另一部分可以全部被链接到被分配给该部分中的像素中的一个或多个的不同的根标记。此外,经由高效率的平整过程37,全局CCL表36可以被转换为具有全局递增标记(例如,在根标记当中进行连续标记)的经平整的全局CCL表38(图2)。经平整的全局CCL表38的全局递增标记可以使随后的计算机视觉处理能够更加有效率。
[0019] 图3示出了标记连接组件的方法40。方法40可以被实现为存储在诸如随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、闪存等等的机器或者计算机可读存储介质中的逻辑指令的集合,被实现在例如以可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)为例的可配置逻辑中,被实现在使用例如以专用集成电路(ASIC)、CMOS或晶体管-晶体管逻辑(TTL)技术或其任意组合为例的固定功能的逻辑硬件中。例如,可以以一种或多种编程语言的任意组合来编写用于执行在方法40中示出的操作的计算机程序代码,上述编程语言包括诸如C++等等的面向对象的编程语言以及诸如“C”编程语言或者类似的编程语言的常规过程编程语言。而且,可以使用本文中提及的电路技术中的任意一种来实现方法40。
[0020] 所说明的处理块42规定获得与图像相关联的数据,其中该数据可以例如包括前景数据(例如,指示每一个像素是前景像素还是背景像素的映射/遮蔽)、部分标记数据(例如,仅针对区域/片的最上面的行和最左边的列的组件标记)等等、或者其任意组合。数据可以例如从计算机视觉管线中的较前级获得。可以在框44处使用图形处理器中的多个线程来对数据进行SIMD扫描。
[0021] SIMD扫描
[0022] 图4A例示了可以在框54处做出的关于正在被操作的区域是否是同构的(例如,同构情况是否存在)的确定。如已经指出的,每一个CPU线程可以对诸如包含像素的顶行和底行的2x16片的图像的子集进行操作。如果该区域是同构的,则可以在框56处对该区域使用快速扫描过程以生成针对该区域的本地连接表。否则,所说明的框58对该区域使用通用扫描过程以生成本地连接表。
[0023] 图4B和图5例示了快速扫描过程可以涉及在框60处针对具有顶行和底行的区域确定在底行中是否已经标识任何新的连接信息。该新的连接信息可以被认为是标识新组件和/或在组件的像素之间的新关系的信息。更具体地说,如果确定针对底行的前景遮蔽(例如,使用“1”指定前景像素并且使用“0”指定背景像素)与针对顶行的前景遮蔽基本类似,则可以推断在该底行中还没有标识新的连接信息。在这样的情况下,框62可以将标记从顶行拷贝到底行中。例如,如在图5的“情况1”场景64中最佳示出的,由于相对应的前景数据不包含新的连接信息(例如,基本类似),因此可以将标记“3、0、4、4、4、4”从顶行拷贝到底行。
[0024] 另一方面,如果新的连接信息存在于底行中,则可以在框66处做出关于底行中的所有像素是否都是前景像素(即,在前景遮蔽中使用“1”来指定)的确定。如果为是,则所说明的框68在该区域/片中发现最小标记,其中可以在框70处将该最小值分配到该区域/片中的所有前景像素。在该方面,可以使用分层数据结构,其中将被链接到像素的最低标记认为是针对正在讨论的像素的“根”标记。
[0025] 因而,在图5的“情况2”场景72中,可以将标记“3”识别为该区域中的最小标记并且将其分配到所有前景像素(即,在前景遮蔽中使用“1”指定的像素)。框74可以在该区域的标记和根标记之间形成联合(例如,关联/链路)。因此,所说明的方案可以是向图像的像素分配标记的相对快速的方案。如果在所说明的框66处确定底行中的所有像素都不是前景像素,则可以将该区域看作是非同构的,并且扫描过程可以在没有成功地标记该区域中的所有像素的情况下终止。
[0026] 下面所注释的代码片段示出了实现快速扫描过程的一个方案。
[0027]
[0028]
[0029] 如已经指出的,如果该区域不是同构的,则可以对该区域使用通用扫描过程以生成本地连接表。图4C和图6例示了一种使用迭代邻域搜索的方案,其中当没有发现新的最小值时,搜索结束。更具体地说,框76可以规定将顶行中的新根初始化为针对该顶行的标记,其中在框78处可以将底行中的像素设置到唯一高标记(例如,0xffffff00、0xffffff01、…0xffffff0f)。所说明的框80将先前的新根设置到当前的新根,并且在说明的框82处将当前的新根设置到邻域最小值。如在图6的邻域最小值场景84中示出的,可以将每一行与其自身的备份(例如,右移位、没有移位、左移位)进行比较以发现邻域中的最小标记值。
[0030] 可以在框86处做出关于该根是否已经聚集(例如,新根停止改变)的确定。如果为否,则可以在框82处重复该邻域最小值搜索。否则,所说明的框88向具有在框78处被分配的高标记值的剩余像素分配有效标记,其中在框90处可以在先前的新根与当前的新根之间形成联合。
[0031] 下面所注释的代码片段示出了实现通用扫描过程的一个方案。
[0032]
[0033] 此外,为了避免最小标记经过背景像素(例如,使用最大标记值)的不正确传播,在每一次最小值计算之后可以重置背景像素。下面所注释的代码片段示出了重置背景像素的一种方案。
[0034] calcmin_single(matrix<2,16>labels,offset_labels,fg_mask)
[0035] {
[0036] labels=pointwise_min(labels,offset_labels);
[0037] //将bg像素保持到最大值以避免最小传播
[0038] //在bg像素之上
[0039] labels.merge(labels,0xffffffff,fg_mask);
[0040] }
[0041] 单级合并
[0042] 现在返回图3,可以在框46处基于SIMD扫描生成与多个线程相对应的多个连接表。因此,连接表可以包含针对图像中的每一个像素的标记,其中可以认为被链接到层次结构中的相同根标记的像素代表图像中的相同组件。而且,所说明的框48规定使用图形处理器中的多个线程来进行多个连接表到针对该图像的全局CCL表中的单级合并。
[0043] 例如,图7例示了每一个线程可以负责合并来自SIMD扫描的两个相邻连接表并且将结果更新到共享存储器(例如,主机存储器、系统存储器)。一旦所有的线程完成了其各自的合并操作,结果可以是针对整个图像的例如以全局CCL表36(图2)为例的单个全局CCL表。更具体地说,在框92处,可以将针对“接缝”的顶连接表和底连接表从共享存储器装载到本地高速缓存。接缝可以被认为是图像中相邻的片/区域之间的水平边界。所说明的框94确定两个连接表是否都位于正在被标记的图像内侧。如果为否,则合并过程可以终止。
[0044] 否则,框96可以从被标记的图像中读取当前接缝区域(例如,接缝框),其中在框98处可以针对所述区域构建前景遮蔽。此外,在框100,可以使用迭代邻域最小值方法针对前景遮蔽中的新连接进行搜索。因此,框100可以与已经讨论的关于邻域最小值场景84(图6)描述的功能类似。所说明的框102规定使用一个或多个原子操作来使用来自框100的新连接更新共享存储器中的全局CCL表,其中可以在框104处使用来自共享存储器的当前根标记更新本地高速缓存表。
[0045] 下面所注释的代码片段示出了进行单级合并的一种方案。
[0046]
[0047] 继续参照图8和图9,示出了更新共享存储器中的全局表的一种方案。例如,所说明的框106将每一个标记与其本地根进行比较和交换并且在偏移标记处得到旧值。因而,通过底层硬件可以实现框106,该底层硬件有条件地交换新的根标记。因此,框108可以基于返回的值确定底层硬件是否已经交换了标记。如果在框108处确定标记的当前值与旧值相匹配,则该比较和交换原子操作已经设置了新的根标记,并且到共享存储器过程的联合可以终止。否则,所说明的框110计算要在下一轮中进行设置的地址和标记值,并且可以重复框106。
[0048] 例如,图8例示了可以涉及具有被链接到根标记(例如,标记“50”)的标记(例如,标记“60”、“70”、“80”、“90”)的几个像素的预联合分层场景112。虚线箭头可以代表由于标记不是根标记而没有修改共享存储器中的全局CCL的原子操作尝试(例如,尝试“1”到“3”以此顺序)。然而,最后成功的尝试(例如,尝试“4”)可以最终统一两个相对应的标记树,如后联合的分层场景114中示出的。下面所注释的代码片段示出了使用原子操作来更新共享存储器中的全局CCL表的一种方案。
[0049]
[0050] 有效率的平整
[0051] 现在返回图3,所说明的框50在第一平整阶段期间将全局CCL表中的一个或多个标记以信号形式发送为根标记,其中,在框52处,在第二平整阶段期间,可以将所标记的根标记转换为一个或多个全局递增标记。
[0052] 例如,图10的状态图例示了全局CCL表的标记可以在索引状态116中退出单级合并过程。根标记可以经历将其转换到以信号形式发送的根状态120的第一平整阶段118,而以信号形式发送的根标记和非根标记可以经历将其转换到全局递增状态124(例如,在根级别处被连续标记)的第二平整阶段122。
[0053] 图11A例示了第一平整阶段可以涉及在框126处确定正在被处理的标记是否位于当前段中,其中段可以被认为是由单一线程处理的连接表的连续部分(例如,如果100个线程可用,则线程﹟1可以处理表段条目0-127,线程﹟2可以处理表段条目128-255,等等)。如果为是,则在框128处可以做出关于该标记是否是根标记的确定。如果该标记是根标记,则所说明的框130将标记以信号形式发送为根标记(例如,通过向该标记分配唯一且相对高的偏移值),其中框126处的确定可以重复。在另一方面,如果该标记不是根标记,则框132可以在标记分层中朝向根标记遍历一个步长。可以在框134处做出关于该标记是处于索引状态中还是已经被以信号形式发送为根标记的确定。如果为否,则可以在框132处重复上述遍历。否则,可以重复框126处的确定。如果在框126处确定正在被处理的根不在当前段中,则所说明的框136存储所识别的唯一根标记的数量并且第一平整阶段可以终止。所识别的唯一根的数量可以在下文详细讨论的第二平整阶段中使用。下面所注释的代码片段示出了实现第一平整阶段的一种方案。
[0054]
[0055]
[0056] 图11B例示了第二平整阶段可以涉及基于在第一平整阶段中识别的唯一根的数量而在框138处计算积分和,其中可以在框140处做出关于正在被处理的标记是否处于当前段中的确定。如果为是,则可以在框142处做出关于该标记是否处于索引状态中的确定。如果为否,则所说明的框144使用全局递增标记来替换该标记并且可以重复在框140处的确定。否则,在框146处从索引中重新读取该标记的值,其中该重新读取的值应该是被以信号形式发送的根标记或者全局递增标记。如果在框148处确定该标记处于全局递增状态中,则可以重复框140处的确定。否则,框144可以使用全局递增标记来替换该标记。如果在框140处确定正在被处理的标记不在当前段中,则所说明的平整阶段可以终止。下面所注释的代码片段示出了实现第二平整阶段的一种方案。
[0057]
[0058]
[0059] 现在转到图12,示出了计算系统150,其中,系统150可以是诸如膝上型电脑、可佩戴式计算机、移动互联网设备(MID)、个人数字助理(PDA)、媒体播放器、成像设备等等的移动平台,诸如智能电话、平板计算机、智能TV(电视)等等的任意智能设备,或其任意组合的一部分。系统150也可以是诸如个人计算机(PC)、服务器、工作站等等的一部分。所说明的系统150包括中央处理单元(CPU、例如,主机处理器)152,其具有提供对系统存储器156进行存取的集成存储器控制器(iMC)154,该系统存储器156可以例如包括双数据速率(DDR)同步动态随机存取存储器(SDRAM,例如DDR3SDRAM JEDEC标准JESD79-3C,2008年4月)模块。系统存储器156的模块可以例如被并入到单进线存储器模块(SIMM)、双进线存储器模块(DIMM)、小型DIMM(SODIMM)等等中。
[0060] CPU 152也可以具有一个或多个处理器核心(未示出),其中每一个核心可以是功能完善的,其具有指令获取单元、指令解码器、一级(L1)高速缓存、执行单元等等。CPU 152可以可选地经由互连系统150中的每一个组件的前端总线或点对点结构与也被称为北桥的iMC 154的片下变化进行通信。CPU 152也可以执行操作系统(OS)158。
[0061] 所说明的CPU 152经由总线与也被称为南桥的输入/输出(IO)模块160进行通信。iMC 154/CPU 152和IO模块160有时被称为芯片集。CPU 152也可以经由网络端口经过IO模块160和各种其它控制器162操作性地连接到网络(未示出)。因而,其它控制器162可以为诸如有线通信或无线通信的各种目的而提供脱离平台的通信功能,上述目的包括但不限于蜂窝电话(例如,宽带码分多址、W-CDMA(通用移动电信系统/UMTS)、CDMA2000(IS-856/IS-
2000)等等)、Wi-Fi(无线保真,例如,电气与电子工程师协会/IEEE 802.112007版)、蓝牙(例如,IEEE 802.15.1-2005、无线个域网)、WiMax(例如,IEEE 802.16-2004)、全球定位系统(GPS)、扩频(例如,900MHz)、以及其它无线射频(RF)技术目的。IO模块160也可以与显示器164进行通信,以便规定视频、图像等等的视觉输出。其它控制器162也可以与IO模块160进行通信,以便为诸如键盘、鼠标等等的用户接口设备(未示出)提供支持,以允许用户与系统150互动并且感知来自系统150的信息。
[0062] IO模块160也可以具有诸如USB(通用串行总线,例如,USB规范2.0、USB应用者论坛)、串行ATA(SATA,例如,SATA发布版3.0规范、2009年5月27日,SATA国际组织/SATA-IO)、高清音频、以及其它控制器的内部控制器。所说明的IO模块160也耦合到存储设备,该存储设备可以包括硬驱166、固态盘/SSD、只读存储器(ROM)、光盘、闪存(未示出)等等。
[0063] 所说明的系统150也包括耦合到专用图形存储器170的专用图形处理单元(GPU,例如图形处理器)168。专用图形存储器170可以例如包括GDDR(图形DDR)或DDR SDRAM模块,或者适合于支持图形渲染的任何其它存储器技术。GPU 168和图形存储器170可以被安装在图形/视频卡上,其中GPU 168可以经由诸如PCI Express图形(PEG,例如,外围组件互连/PCI Express x16图形150W-ATX规范1.0、PCI特殊利益集团)总线、或者加速图形端口(例如,AGP V3.0接口规范,2002年9月)总线的图形总线172与CPU 152进行通信。图形卡可以被集成到系统母板上、主CPU152裸片中、被配置为母板上的分立卡等等。GPU 168也可以包括用于存储指令和其它数据的内部高速缓存174。
[0064] 所说明的GPU 168包括被配置为标记图像中的连接组件的逻辑单元176(176a-176e)。通常,逻辑单元176的工作负荷可以通常在提供高级别并行性的多个执行单元(未示出)之间进行分配。在所说明的示例中,数据模块176a被配置为获得与图像相关联的数据,其中该数据可以包括前景数据、部分标记数据等等,或者其任意组合。扫描模块176b可以使用GPU168中的多个线程进行数据的SIMD扫描,并且本地表模块176c可以基于SIMD扫描生成与多个线程相对应的多个连接标记。
[0065] 而且,扫描模块176b可以包括快速子模块178,针对多个线程中的每一个,如果关于图像的区域检测到同构情况,则该快速子模块178对该图像的区域使用第一扫描过程。此外,针对多个线程中的每一个,如果关于该图像的区域没有检测到同构情况,则通用子模块180可以对该图像的区域使用第二扫描过程。在一个示例中,第一扫描过程比第二扫描过程要快。
[0066] 逻辑单元176也可以包括用于使用图形处理器中的多个线程来将多个连接表单级合并到针对该图像的全局CCL中的合并模块176d。合并模块176d可以使用一个或多个原子操作来更新位于例如以专用图形存储器170或系统存储器156为例的共享存储器中的全局CCL表。此外,平整模块176e可以在第一平整阶段期间将全局CCL中的一个或多个标记以信号形式发送为根标记,并且在第二平整阶段期间将所标记的根标记转换为一个或多个全局递增标记。需要特别指出的是,所说明的逻辑单元176可以在没有CPU152参与的情况下生成全局CCL表。结果,针对连接组件标记,可以避免与在GPU 168和CPU 152之间的计算转换相关联的处理开销。
[0067] 图13说明了根据实施例可以标记图像中的连接组件的系统700的实施例。在实施例中,系统700可以是媒体系统,尽管系统700不局限于这一上下文。例如,系统700可以被并入到个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板计算机、触摸板、便携式计算机、手持计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如,智能电话或智能电视)、移动互联网设备(MID)、消息传送设备、数据通信设备、游戏控制台等等中。
[0068] 在实施例中,系统700包括耦合到显示器720的平台702。平台702可以从诸如内容服务设备730或内容递送设备740或其它类似的内容源的内容设备接收内容。包括一个或多个导航特征的导航控制器750可以用于例如与平台702和/或显示器720进行交互。下面更详细地描述这些组件中的每一个。
[0069] 在实施例中,平台702可以包括芯片集705、处理器710、存储器712、存储设备714、图形子系统715、应用716和/或无线电设备718的任意组合。芯片集705可以提供在处理器710、存储器712、存储设备714、图形子系统715、应用716和/或无线电设备718之间的相互通信。例如,芯片集705可以包括能够提供与存储设备714的相互通信的存储适配器(未描绘)。
[0070] 处理器710可以被实现为复杂指令集计算机(CISC)或精简指令集计算机(RSIC)处理器、x86指令集兼容处理器、多核心、或任何其它微处理器或中央处理单元(CPU)。在实施例中,处理器710可以包括双核处理器、双核移动处理器等等。
[0071] 存储器712可以被实现为例如但不局限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、或静态RAM(SRAM)的易失性存储器设备。
[0072] 存储设备714可以被实现为例如但不局限于磁盘驱动、光盘驱动、磁带驱动、内部存储设备、附接存储设备、闪存、电池备份的SDRAM(同步DRAM),和/或网络可存取的存储设备的非易失性存储设备。在实施例中,例如,存储设备714可以包括用于当包括多个硬驱时增加对有价值的数字媒体的存储性能增强保护的技术。
[0073] 图形子系统715可以执行对诸如静止图像或视频的图像的处理,用于进行显示。例如,图形子系统715可以是图形处理单元(GPU)或视觉处理单元(VPU)。可以使用模拟或数字接口来通信地耦合图形子系统715和显示器720。例如,该接口可以是高清多媒体接口、显示器端口、无线HDMI、和/或无线HD兼容技术中的任意一种。图形子系统715可以被集成到处理器710或芯片集705中。图形子系统715可以是通信地耦合到芯片集705的独立的卡。在一个示例中,图形子系统715的功能类似于GPU 168(图12)并且处理器710的功能类似于CPU 152(图12),GPU 168和CPU 152这二者均已经讨论过。因此,图形子系统715可以被配置为在不涉及处理器710的情况下标记图像中的连接组件。
[0074] 本文描述的图形和/或视频处理技术可以在各种硬件架构中实现。例如,图形和/或视频功能可以被集成到芯片集中。可选地,可以使用分立的图形和/或视频处理器。作为再一实施例,图形和/或视频功能可以由包括多核处理器的通用处理器实现。在进一步的实施例中,可以在消费类电子设备中实现上述功能。
[0075] 无线电设备718可以包括能够使用各种适当的无线通信技术来发送和接收信号的一个或多个无线电设备。这样的技术可以涉及跨一个或多个无线网络的通信。示例性的无线网络包括(但不局限于)无线局域网(WLAN)、无线个域网(WPAN)、无线城域网(WMAN)、蜂窝网络、以及卫星网络。在跨这样的网络的通信中,无线电设备718可以根据任意版本的一个或多个适用的标准进行操作。
[0076] 在实施例中,显示器720可以包括任何电视类型的监视器或显示器。显示器720可以例如包括计算机显示屏、触摸屏显示器、视频监视器、类似电视的设备、和/或电视。显示器720可以是数字的和/或模拟的。在实施例中,显示器720可以是全息显示器。并且,显示器720可以是可以接收视觉投影的透明表面。这样的投影可以传送各种形式的信息、图像和/或对象。例如,这样的投影可以是用于移动增强现实(MAR)应用的视觉覆盖。在一个或多个软件应用716的控制下,平台702可以在显示器720上显示用户界面722。
[0077] 在实施例中,例如,内容服务设备730可以由任意国内的、国际的和/或独立的服务托管,并且因而可以经由互联网对于平台702可访问。内容服务设备730可以耦合到平台702和/或耦合到显示器720。平台702和/或内容服务设备730可以耦合到网络760以传送(例如,发送和/或接收)去往和来自网络760的媒体信息。内容传送设备740也可以耦合到平台702和/或耦合到显示器720。
[0078] 在实施例中,内容服务设备730可以包括有线电视盒、个人计算机、网络、电话、能够传送数字信息和/或内容的具有互联网能力的设备或电器、以及能够经由网络760或者直接地在内容提供商和平台702和/显示器720之间单向或双向传送内容的任何其它类似的设备。将明白的是,可以经由网络760单向和/或双向地在系统700和内容提供商中的组件中的任意一个处来回地传送上述信息。内容的示例可以包括任何媒体信息,上述媒体信息例如包括视频、音乐、医疗和游戏信息等等。
[0079] 内容服务设备730接收诸如包括媒体信息、数字信息、和/或其它内容的有线电视节目的内容。内容提供商的示例可以包括任何有线或卫星电视或无线电或互联网内容提供商。所提供的示例并不意在限制实施例。
[0080] 在实施例中,平台702可以从具有一个或多个导航特征的导航控制器750接收控制信号。例如,控制器750的导航特征可以用于与用户界面722进行交互。在实施例中,导航控制器750可以是指向设备,该指向设备可以是允许用户将空间(例如,连续且多维)数据输入到计算机中的计算机硬件组件(具体地为人类接口设备)。诸如图形用户界面(GUI)以及电视和监视器的许多系统允许用户使用身体姿势来控制数据并且向计算机或电视提供数据。
[0081] 通过指针、光标、聚焦环、或显示在显示器上的其它视觉指示器,控制器750的导航特征的移动可以在例如以显示器720为例的显示器上得到回响。例如,在软件应用716的控制下,位于导航控制器750上的导航特征可以被映射到例如在用户界面722上显示的虚拟导航特征。在实施例中,控制器750可以不是单独的组件而是被集成到平台702和/或显示器720中。然而,实施例不局限于在本文示出或描述的元件或在本文示出或描述的上下文中。
[0082] 在实施例中,例如,驱动器(未示出)可以包括使用户能够在按钮被启用时,在初始的引导之后,利用按钮的触摸立即打开或关闭类似电视的平台702的技术。程序逻辑单元可以在平台702被“关闭”时允许该平台702向媒体适配器或其它内容服务设备730或内容递送设备740流式传送内容。此外,芯片集705可以例如包括针对5.1环绕立体声音频和/或高清7.1环绕立体声音频的硬件和/或软件支持。驱动器可以包括针对集成图形平台的图形驱动器。在实施例中,图形驱动器可以包括外围组件互连(PCI)Express图形卡。
[0083] 在各个实施例中,可以集成在系统700中示出的组件中的任意一个或多个。例如,可以集成平台702和内容服务设备730,或者可以集成平台702和内容递送设备740,或者可以例如集成平台702、内容服务设备730、和内容递送设备740。在各个实施例中,平台702和显示器720可以是集成单元。例如,显示器720和内容服务设备730可以被集成,或者显示器720和内容递送设备740可以被集成。这些示例并不意在限制实施例。
[0084] 在各个实施例中,系统700可以被实现为无线系统、有线系统、或这二者的组合。当被实现为无线系统时,系统700可以包括适合在无线共享介质上进行通信的组件和接口,该无线共享介质例如是一个或多个天线、发射机、接收机、收发机、放大器、滤波器、控制逻辑单元等等。无线共享介质的示例可以包括诸如RF频谱等等的无线频谱的部分。当被实现为有线系统时,系统700可以包括适合在有线通信介质上进行通信的组件和接口,该有线通信介质例如是输入/输出(I/O)适配器、用于将I/O适配器与相对应的有线通信介质进行连接的物理连接器、网络接口卡(NIC)、磁盘控制器、视频控制器、音频控制器等等。有线通信介质的示例可以包括电线、电缆、金属引线、印刷电路板(PCB)、背板、交换光纤、半导体材料、双绞线、同轴电缆、光纤等等。
[0085] 平台702可以建立一个或多个逻辑或物理信道以传送信息。上述信息可以包括媒体信息和控制信息。媒体信息可以指代代表用于用户的内容的任何数据。内容的示例可以例如包括来自语音对话、视频会议、流视频、电子邮件(“email”)消息、语音邮件消息、字母数字符号、图形、图像、视频、文本等等的数据。来自语音对话的数据可以例如是语音信息、安静时段、背景噪声、舒适噪声、音调等等。控制信息可以指代代表用于自动系统的命令、指令或控制字的任何数据。例如,控制信息可以用于经过系统路由媒体信息,或者指示节点按照预定的方式处理媒体信息。然而,实施例不局限于在图13中示出或描述的元件或在图13中示出或描述的上下文中。
[0086] 如上文描述的,可以按照不同的物理样式或形状因子来体现系统700。图14说明了可以在其中体现系统700(图13)的小形状因子设备800的实施例。在实施例中,例如,设备800可以被实现为具有无线能力的移动计算设备。例如,移动计算设备可以指代具有处理系统和例如以一个或多个电池为例的移动电源或功率源的任意设备。
[0087] 如上文描述的,移动计算设备的示例可以包括个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板电脑、触摸板、便携式计算机、手持计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如,智能电话、智能平板或智能电视)、移动互联网设备(MID)、消息传送设备、数字通信设备等等。
[0088] 移动计算设备的示例也可以包括被布置为由个人佩戴的计算机,例如手腕计算机、手指计算机、戒指计算机、眼镜计算机、皮带扣计算机、臂环计算机、鞋子计算机、衣服计算机以及其它可佩戴的计算机。在实施例中,例如,移动计算设备可以被实现为能够执行计算机应用以及语音通信和/或数据通信的智能电话。尽管通过示例的方式可以使用被实现为智能电话的移动计算设备描述了一些实施例,但是可以明白的是,也可以使用其它无线移动计算设备来实现其它实施例。
[0089] 如在图14中示出的,设备800可以包括壳体802、显示器804、输入/输出(I/O)设备806、以及天线808。设备800也可以包括导航特征812。显示器804可以包括用于显示适合于移动计算设备的信息的任意适当的显示单元。I/O设备806可以包括用于将信息输入到移动计算设备中的任意适当的I/O设备。用于I/O设备806的示例可以包括字母数字键盘、数字键区、触摸板、输入键、按钮、开关、摇臂开关、麦克风、扬声器、语音识别设备以及软件等等。也可以通过麦克风的方式将信息输入到设备800中。可以由语音识别设备来对这样的信息进行数字化。实施例不局限于这一上下文。
[0090] 额外的备注和示例:
[0091] 示例1可以包括用于标记连接组件的系统,包括:用于呈现图像的显示器以及图形处理器,该图形处理器包括用于使用所述图形处理器中的多个线程对与图像相关联的数据进行单指令多数据(SIMD)扫描的扫描模块,用于基于所述SIMD扫描生成与多个线程相对应的多个连接表的本地表模块,以及用于使用所述图形处理器中的多个线程将多个连接表单级合并到针对该图像的全局连接组件标记(CCL)表中的合并模块。
[0092] 示例2可以包括示例1的系统,其中,所述扫描模块包括快速子模块,用于针对所述多个线程中的每一个,如果关于图像的区域检测到同构情况,则对所述图像的区域使用第一扫描过程,以及通用子模块,用于针对所述多个线程中的每一个,如果关于所述图像的区域没有检测到同构情况,则对所述图像的区域使用第二扫描过程,其中所述第一扫描过程比所述第二扫描过程要快。
[0093] 示例3可以包括示例1的系统,其中,所述合并模块用于使用一个或多个原子操作,使用所述图像的组件之间的一个或多个新连接来更新共享存储器中的全局CCL表。
[0094] 示例4可以包括示例1的系统,其中,所述图形处理器进一步包括平整模块,其用于在第一平整阶段期间将所述全局CCL表中的一个或多个标记以信号形式发送为根标记,并且在第二平整阶段期间将所标记的根标记转换为一个或多个全局递增标记。
[0095] 示例5可以包括示例1至4中的任意一个的系统,进一步包括用于获得与所述图像相关联的数据的数据模块。
[0096] 示例6可以包括示例5的系统,其中,所述数据将包括前景数据和部分标记数据。
[0097] 示例7可以包括标记连接组件的方法,包括使用处理器中的多个线程来对与图像相关联的数据进行单指令多数据(SIMD)扫描,基于所述SIMD扫描生成与所述多个线程相对应的多个连接表,以及使用所述处理器中的多个线程将所述多个连接表单级合并到针对所述图像的全局连接组件标记(CCL)表中。
[0098] 示例8可以包括示例7的方法,其中,针对所述多个线程中的每一个,所述数据的所述SIMD扫描包括:如果关于所述图像的区域检测到同构情况,则对所述图像的区域使用第一扫描过程,并且如果关于所述图像的区域没有检测到同构情况,则对所述图像的区域使用第二扫描过程,其中,所述第一扫描过程比所述第二扫描过程要快。
[0099] 示例9可以包括示例7的方法,其中,所述单级合并包括使用一个或多个原子操作来使用所述图像的组件之间的一个或多个新连接更新共享存储器中的全局CCL表。
[0100] 示例10可以包括示例7的方法,进一步包括在第一平整阶段期间,将所述全局CCL表中的一个或多个标记以信号形式发送为根标记,以及在第二平整阶段期间,将所标记的根标记转换为全局递增标记。
[0101] 示例11可以包括示例7至10中的任意一个的方法,进一步包括获得与所述图像相关联的数据。
[0102] 示例12可以包括示例11的方法,其中,所述数据包括前景数据和部分标记数据。
[0103] 示例13可以包括至少一个计算机可读存储介质,包括一组指令,当由计算设备执行时,所述指令使所述计算设备使用处理器中的多个线程对数据进行单指令多数据(SIMD)扫描,基于所述SIMD扫描生成与所述多个线程相对应的多个连接表,并且使用所述处理器中的多个线程将所述多个连接表单级合并到针对所述图像的全局连接组件标记(CCL)表中。
[0104] 示例14可以包括示例13的至少一个计算机可读存储介质,其中,当执行所述指令时,针对所述多个线程中的每一个,所述指令使计算设备执行如下操作:如果关于图像的区域检测到同构情况,则对所述图像的区域使用第一扫描过程,并且如果关于所述图像的区域没有检测到同构情况,则对所述图像的区域使用第二扫描过程,其中所述第一扫描过程比所述第二扫描过程要快。
[0105] 示例15可以包括示例13的至少一个计算机可读存储介质,其中,当执行所述指令时,所述指令使计算设备使用一个或多个原子操作来使用所述图像的组件之间的一个或多个新连接更新共享存储器中的所述全局CCL表。
[0106] 示例16可以包括示例13的至少一个计算机可读存储介质,其中,当执行所述指令时,所述指令使计算设备在第一平整阶段期间,将所述全局CCL表中的一个或多个标记以信号形式发送为根标记,并且在第二平整阶段期间,将所标记的根标记转换为一个或多个全局递增标记。
[0107] 示例17可以包括示例13至16中的任意一个的至少一个计算机可读存储介质,其中,当执行所述指令时,所述指令使计算设备获得与所述图像相关联的数据。
[0108] 示例18可以包括示例17的至少一个计算机可读存储介质,其中,所述数据包括前景数据和部分标记数据。
[0109] 示例19可以包括用于标记连接组件的装置,包括:扫描模块,用于使用处理器中的多个线程来对与图像相关联的数据进行单指令多数据(SIMD)扫描;本地表模块,用于基于所述SIMD扫描生成与所述多个线程相对应的多个连接表;以及合并模块,用于使用所述处理器中的多个线程将所述多个连接表单级合并到针对所述图像的全局连接组件标记(CCL)表中。
[0110] 示例20可以包括示例19的装置,其中,所述扫描模块包括快速子模块,用于针对所述多个线程中的每一个,如果关于图像的区域检测到同构情况,则对所述图像的区域使用第一扫描过程;以及通用子模块,用于针对所述多个线程中的每一个,如果关于所述图像的区域没有检测到同构情况,则对所述图像的区域使用第二扫描过程,其中,所述第一扫描过程比所述第二扫描过程要快。
[0111] 示例21可以包括示例19的装置,其中,所述合并模块用于使用一个或多个原子操作来使用所述图像的组件之间的一个或多个新连接更新共享存储器中的所述全局CCL表。
[0112] 示例22可以包括示例19的装置,进一步包括在平整模块,用于在第一平整阶段期间,将所述全局CCL表中的一个或多个标记以信号形式发送为根标记,以及在第二平整阶段期间,将所标记的根标记转换为一个或多个全局递增标记。
[0113] 示例23可以包括示例19至22中的任意一个的装置,进一步包括用于获得与图像相关联的数据的数据模块。
[0114] 示例24可以包括示例23的装置,其中,所述数据包括前景数据和部分标记数据。
[0115] 示例25可以包括用于标记连接组件的装置,包括用于执行示例7至12中的任意一项的方法的模块。
[0116] 可以使用硬件元件、软件元件、或二者的组合来实现各个实施例。硬件元件的示例可以包括处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体设备、芯片、微芯片、芯片集等等。软件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或其任意组合。确定实施例是使用硬件元件和/或软件元件来实现可以根据任意数量的因素而不同,该因素例如是期望计算速率、功率级别、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其它设计或性能约束条件。
[0117] 至少一个实施例的一个或多个方面可以通过存储在计算可读介质上的、代表处理器内的各种逻辑的代表性指令来实现,当由机器读取时,所述指令使所述机器制造用于执行本文描述的技术的逻辑。这样的被称为“IP核”的代表可以被存储在有形的、机器可读介质上,并且被提供给各个消费者或制造工厂以将其装载到实际制造该逻辑或处理器的制造机器中。
[0118] 实施例适用于与所有类型的半导体集成电路(“IC”)芯片一起使用。这些IC芯片的示例包括但不局限于处理器、控制器、芯片集组件、可编程逻辑阵列(PLA)、存储器芯片、网络芯片等等。此外,在一些附图中,用线来表示信号传导线。一些可能不同,以指示更多的组成信号路径,具有数字标记,指示多个组成信号路径,和/或在一端或多端具有箭头,以指示基本信息流方向。然而,这不应该以限制性的方式进行解释。相反,可以结合一个或多个示例性实施例来使用这样增加的细节,以便更容易地理解电路。所表示的任何信号线,无论其是否具有额外的信息,都可以实际上包括可以在多个方向上行进的一个或多个信号,并且可以使用任何适当类型的信号方案来实现,例如,使用差分对、光纤线、和/或单端线路实现的数字或模拟线路。
[0119] 已经给出了示例尺寸/模型/值/范围,但是实施例不局限于这些。随着制造技术(例如,光刻)随着时间变得成熟,可以预期的是能够制造具有更小尺寸的设备。此外,为了说明和讨论的简单起见,并且为了不混淆实施例的某些方面,在附图中可能示出或者未示出到IC芯片和其它组件的公知的电源/接地连接。进而,为了避免混淆实施例,而且鉴于关于这样的框图布置的实现细节高度依赖于实施例在其内实现的平台的事实,即,这样的细节应该是在本领域技术人员的范围之内,可以以框图形式示出装置。在阐释具体细节(例如,电路)以描述示例实施例的情况下,本领域的熟练技术人员应该明白的是,可以在没有这些具体细节或利用这些具体细节的变化的情况下来实施这些实施例。从而,应该将这些描述认为是说明性的而不是限制性的。
[0120] 例如,可以使用可以存储指令或指令集的机器或有形的计算机可读介质或制品来实现一些实施例,如果由机器执行,所述指令可以使所述机器执行根据所述实施例的方法和/或操作。这样的机器可以例如包括任何适当的处理平台、计算平台、计算设备、处理设备、计算系统、处理系统、计算机、处理器等等,并且可以使用硬件和/或软件的任何适当组合来实现。机器可读介质或制品可以例如包括任何适当类型的存储器单元、存储器设备、存储器制品、存储器介质、存储设备、存储制品、存储介质和/或存储单元,例如,存储器、可移除或不可移除介质、可擦除或不可擦除介质、可写入或可重写介质、数字或模拟介质、硬盘、软盘、压缩盘只读存储器(CD-ROM)、可记录式压缩盘、可重写压缩盘(CD-RW)、光盘、磁介质、磁-光介质、可移除存储卡或盘、各种类型的数字多功能盘(DVD)、磁带、盒式磁带等等。上述指令可以包括任何适当类型的代码,例如源代码、经编译的代码、经解释的代码、可执行代码、静态代码、动态代码、经加密的代码等等,其使用任何适当的高级、低级、面向对象的、可视的、经编译的和/或经解释的编程语言来实现。
[0121] 除非以其它方式明确指出,可以明白的是,诸如“处理”、“计算”、“运算”、“确定”等等的词语指代计算机或计算系统或者类似的电子计算设备的动作和/或处理,其将计算系统的寄存器和/或存储器中被表示为物理量(例如,电子)的数据操控和/或转换为被类似地表示为该计算系统的存储器、寄存器或其它这样的信息存储装置、传输或显示设备中的物理量的其它数据。实施例不局限于这一上下文。
[0122] 在本文中可以使用术语“耦合”来指代所讨论的组件之间的任何类型的关系,直接的或间接的,并且其可以应用于电气的、机械的、流体的、光学的、电磁的、机电的或其它的连接。此外,在本文中可以使用术语“第一”、“第二”等等仅用于便于讨论,并且除非以其它方式进行了指示,否则其不承载特定的时间或按时间顺序的意义。此外,应该理解的是,非限定性词语“一”或“一个”承载“一个或多个”或者“至少一个”的含义。
[0123] 本领域的技术人员根据前面的描述将明白的是,可以按照各种形式来实现实施例的广泛技术。因此,尽管已经结合实施例的特定示例描述了这些实施例,但是实施例的真正保护范围不应该受此限制,这是因为对于熟练的实施者而言,在研究附图、说明书和随后的权利要求书之后,其它修改将变得显而易见。