技术领域
[0001] 本发明涉及图像的分割,具体地,但不排他地,涉及视频信号的图像的分割。
相关背景技术
[0002] 对于许多数字图像处理技术来说,图像的分割是重要的处理过程。例如,图像分割可被使用于生成用于三维成像的深度图、对象识别、人工着色等等。由操作员进行有效的交互式图像分割在例如数字照片和图像处理中、或在对于视频或数字图像的后期制作工作中都是重要的。例如,为具有立体效果的视频创建深度图或双眼像差异图需要对象边界的详细说明,以便精确地指派深度或差异。
[0003] 用于执行图像的交互式分割的方法的例子可以在Carsten Rother, Vladimir Kolmogorov, Andrew Blake的论文“GrabCut-Interactive Foreground Extraction using Iterated Graph Cuts”,2004年8月, SIGGRAPH(图形学和交互技术方面的专门兴趣组 )2004( 在 http://research.microsoft.com/vision/Cambridge/papers/siggraph04.pdf上可得到)中找到。
[0004] 当前存在有用来基于放置所谓的‘涂鸦(scribbles)’以便粗略地识别感兴趣的对象所处何处而有效地进行分割的方法。涂鸦典型地是由用户在图像上手工地画出的曲线,用来规定已知是属于特定对象的像素,即由用户指出这些像素属于相同的图段(segment)。例如,涂鸦可以被画在图像对象内,用来规定在下面的(underlying)像素是图像对象的一部分。被分割的区域然后可以从该涂鸦伸展开,让相邻的像素被指派给相同的图段,直至估计要达到对象的边缘为止(例如,由于检测到颜色过渡)。替换地或附加地,涂鸦可被画成识别由用户指出不属于特定对象的多个像素,因此,其不应当被包括在图像对象图段中(典型地,等同于定义应当被包括在对该图像对象图段的互补图段中的多个像素的涂鸦)。
在这种情形下,相同的方法可被使用来将像素指派给与对应于该图像对象的图段不同的图段,直至检测到过渡为止。例如,对象外面的涂鸦可被使用来定义背景像素,而对象里面的涂鸦可被使用来定义用于前景对象的前景像素。具有这样的涂鸦的图像例子示于图1。
[0005] 然而,虽然这样的方法可以帮助图像的分割,但其对于许多图像可能提供次最佳性能。例如,如果在相邻对象之间的颜色过渡非常小或不存在,则该算法常常不会导致在不同图段之间的最佳和清晰分离。虽然分割精确性的这种降级可以通过放置另外的、更精确和详细的涂鸦而被减轻,但这大大地增加了所需要的用户交互,并导致麻烦的和费力的过程。
[0006] 对于交互式分割提出的另一个方法是让用户直接定义在不同对象之间的边缘。例如,用户可以跟踪图像对象的特定轮廓,且分割可以通过将轮廓一侧的像素指派给一个图段和将轮廓另一侧的像素指派给另一个图段,而使用这个轮廓作为在不同图段之间的边界的定义。然而,这个方法对于用户而言往往很费力,并且费时,以及需要用户手工地跟踪许多(或甚至全部)轮廓以便提供分割。因此,该分割方法是非常费力和麻烦的。而且,最终得到的分割常常是次最佳的,因为用户输入的轮廓可能并不是精确地匹配于在下面的对象边缘。另外,倘若在轮廓一侧描绘了一个以上的图段,则可能很难精确地识别一个个像素属于哪些图段。具有用户定义的轮廓的图像的例子图示于图2。
[0007] 因此,图像分割的改进的方法将是有利的,具体地,允许有增加的灵活性、减小的复杂性、减少的用户交互、改进的分割和/或改进的性能的系统将是有利的。
具体实施方式
[0047] 以下的描述集中在本发明的实施例,这些实施例可应用于图像的分割,以便生成表示对于不同的图像对象或区域的不同深度水平(特别是前景和背景深度)的深度图。然而,应意识到,本发明不限于这种应用,而是可应用于许多其它类型和其它用途的图像分割。
[0048] 图3图示按照本发明的一些实施例的、用于对图像进行分割的设备的例子。
[0049] 该设备包括:用户输入301,其可以接收来自用户的输入;以及显示器303,其可以显示被分割的图像。在特定的例子中,显示器是触敏显示器,具有对应于显示器装置的触敏部分的用户输入301。应意识到,在其它实施例中,可以使用其它类型的用户输入,包括例如鼠标、触控板或图形输入板等。用户输入被耦合到图段处理器305和边界处理器307,这两个处理器都被耦合到分割处理器309,分割处理器309又被耦合到显示器303。
[0050] 分割处理器309还被耦合到图像源311,图像源311将要被分割的图像提供给分割处理器309。在特定的例子中,图像是视频序列的图像,并且具体地可以是视频信号的帧。然而,应意识到,在其它的例子中,可以对于诸如数字照片之类的单个图像进行分割。
[0051] 分割处理器309可以将被分割的图像呈现在显示器303上,用户可以提供用户输入以帮助分割。具体地,用户可以输入指示被认为落入相同的图段内(或替换地落到外部)的特定像素的数据,以及输入指示在不同图段之间的边界或边缘的信息。
[0052] 操作员可以输入图段指示,其指示应当属于特定的图段类别的一组像素。具体地,对图像的分割是将图像划分成不同的图段,让每个图段属于特定的图段类别,以及全都属于相同图段类别的一组像素可以由一个图段指示来识别。
[0053] 以下的描述将集中在其中对图像的分割是分成多个图段的例子,其中每个图段可以属于两个图段类别之一。在所述例子中,执行二元深度分割(binary depth segmentation),一个图段类别对应于图像的背景,而另一个图段类别对应于图像的前景。因此,对图像的分割仅仅是分成前景图像对象和背景图像区域。然而,应意识到,在其它实施例中,分割可以是分成两个以上的图段类别,且分割可以是打算用于其它目的且考虑其它特性的分割。例如,这个办法可被使用于通过与每个图像对象相关联的单独的图段类别来识别单独的图像对象(例如,用于运动估计)。
[0054] 由用户提供的图段指示用来指示被认为属于相同图段类别的一组像素。例如,用户可以指示必须被包括在前景图段中的一组前景像素。类似地,用户可以指示必须被包括在背景图段中的一组背景像素。
[0055] 作为具体的例子,用户可以首先选择图段类别,比如像前景图段类别。随后,用户可以手工地指示应当属于该图段类别的某些像素,即,可以指示某些前景像素。在图3的系统中,这个指示通过如下方式而被提供,即用户将触针直接施加到触敏显示器上并且画出例如指示前景像素的直线或曲线。
[0056] 用户可以输入多个图段指示,包括用于相同图段(或图段类别)的、或用于不同图段类别的几个图段指示。
[0057] 在一些实施例中,图段指示可以替换地或另外地定义应当不属于给定的图段类别的一组像素。例如,用户可以选择前景图段类别,然后选择反映所选像素不是所选图段类别的组成部分的选项。因此,用户可以替换地或另外地输入图段指示,其识别像素不是前景像素。这样的指示可以对应于对属于另一个图段类别的像素的识别(例如,对于仅仅前景和背景的分割,否定的前景指示对应于肯定的背景指示),但不一定这样做。例如,对于背景、中间地带(middle ground)和前景图段类别的分割,分割指示可以指示不是前景像素的像素,但不用规定它们是背景像素还是中间地带像素。
[0058] 当用户输入图段指示时,用户输入被馈送到图段处理器305,该图段处理器着手生成定义对于所选图段类别的所选那组像素位置的数据。这个数据然后被转发到分割处理器309,以便在对图像进行分割时使用。
[0059] 系统的操作员还可以输入边界指示,其用来指示在属于不同图段类别的像素之间的边界。因此,用户可以定义在属于不同图段的图像对象之间的边缘,该不同图段是属于不同的图段类别。具体地,操作员可以定义在前景图像对象与背景图像区域之间的边界。
[0060] 作为具体的例子,用户可以首先选择输入边界指示的选项。随后,用户可以手工地指示分隔开两个图段(和图段类别)的某些位置。在图3的系统中,这个指示通过如下方式而被提供,即用户将触针直接施加到触敏显示器上并且画出例如一条指示在两个图段之间的边界的直线或曲线。
[0061] 用户可以输入多个边界指示。而且,边界指示可以具有零宽度(即,该边界指示可以被确定为处在像素之间),或可以具有一个或多个像素的宽度(因此导致某些像素是边界像素)。以下的描述将把焦点集中于处在像素之间的边界指示(即,把焦点集中于其中没有边界像素的例子)。
[0062] 在图3的设备中,当用户输入边界指示时,用户输入被馈送到边界处理器307,该边界处理器着手生成定义为边界选择的那组像素间位置的数据。这个数据然后被转发到分割处理器309,以便在对图像进行分割时使用。
[0063] 应意识到,用户可以通过特定地在图像上画一条用来识别属于特定图段类别的一组位置的直线或曲线而提供图段指示。这常常被称为“涂鸦”。然而,也应意识到,可以使用其它的用户输入,包括例如使用画笔工具,指示属于图段类别的单独的区域(例如,对应于对应当被包括在图段或图段类别中的各种区域“盖印”)。
[0064] 类似地,应意识到,用户可以通过特定地在图像上画一条用来识别分隔开属于不同图段类别的两个图段的一组位置的直线或曲线而提供边界指示。这常常被称为“轮廓”。然而,也应意识到,可以使用其它的用户输入。
[0065] 作为具体的例子,图3的系统可以按两个用户输入模式运行:涂鸦模式:在这个模式下,用户可以将涂鸦放置在任意对象的内部。涂鸦被链接到特定的图段类别。涂鸦不应当跨越对象边界。
[0066] 轮廓模式:在这个模式下,用户可以将轮廓放置在两个对象之间的过渡处。具体地,可以选择在过渡处的多个点,并可以把它们组合起来形成曲线。
[0067] 图4指示包括两个图像对象A和B的图像的一部分的例子,其中A是前景对象,而B是背景对象。在本例中,用户已输入背景涂鸦401、前景涂鸦403和轮廓405,轮廓405定义在对应于两个图像对象的图段之间的边界。
[0068] 分割处理器309通过使用所提供的图段和边界指示而对图像进行分割。在本系统中,分割同时受到图段指示和边界指示约束。因此,可以在分割期间,在没有任何用户输入的情况下执行图像的自动分割(但使用以前提供的用户输入)。然而,自动分割受到所提供的图段与边界指示约束,它基本上被执行成使得图段指示的所有像素属于相关联的图段类别,以及使得在图段类别之间的边界存在于由边界指示所指示的地方。由分割处理器309进行的自动分割可以具体地基于图像的可视特性(例如,基于颜色变化)。
[0069] 在图3的例子中,实施迭代操作。因此,自动分割的结果由分割处理器309呈现在显示器上(例如,通过在显示图像上覆上指示图段边缘的线条)。用户然后可以例如通过用户选择想要的操作并直接画在触敏显示器上,而提供一个或多个分割和/或边界指示的另外的输入。在输入新的图段或边界指示后(或例如当用户特别地请求它时),分割被更新,以及新的分割可以呈现在显示器上。因此,从分割结果,用户可以确定其中分割失败的临界区域(例如,其中由于在对象之间缺少明显的颜色过渡,而致使仅仅基于图段指示的分割失败的地方)。用户然后可以将手工用户输入集中在这样的临界区域,以及可以特别地切换到轮廓模式来输入边界指示,由此手工地定义图段之间的边缘。
[0070] 这种迭代可以重复进行,直至操作员对结果满意,并指示对于图像的分割操作已结束为止。这种迭代方法可以提供改进的交互式分割,并且可以例如使得用户能够将交互限制到仅仅是所需要数目的输入。第一次显示的分割结果可以是完全自动的分割的结果,而不用考虑任何图段或边界指示。
[0071] 在图3的例子中,由分割处理器309执行的分割是基于扩张算法,其中表示像素多半属于哪个图段类别的值通过在相邻像素之间的扩张而被散布在图片上。扩张可以特定地从图段指示发起,并从图段指示的像素扩散/扩张到相邻像素,以及从这些相邻像素扩散/扩张到它们的相邻像素等等。在所述例子中,扩张依赖于像素的可视特性,这样,在具有类似的可视特性的像素之间的扩张较强,而在具有非常不同的可视特性的像素之间的扩张较弱。而且,在所述方法中,值的扩张在由边界指示所指示的边界处被阻挡(或被衰减)。
[0072] 更详细地,该算法可以是基于图段类别链接值,该值表示在像素区域与图段类别之间的链接。在所述例子中,每个像素具有对于每个可能的图段类别的图段类别链接值,即,在特定的例子中,每个像素具有背景图段类别链接值和前景图段类别链接值。而且,在所述例子中,图段类别链接值表示像素应当被指派给那个图段类别的概率,因此,每个图段类别链接值属于区间[0,1],其中0表示像素肯定不属于该图段类别,而1表示像素肯定属于该图段类别。
[0073] 初始地,对于给定的图段类别的图段类别值被指派给所有的像素。所述指派是这样的,即使得被包括在对于该图段类别的(肯定的)图段指示中的任何像素被给予预定值(指明该像素属于该图段类别的高概率。典型地被指派以值1)。第二预定值被给予所有的其它像素,其中第二预定值表示该像素属于该图段类别的较低概率。例如,被指派以值0。
[0074] 分割处理器309然后根据相邻像素和在像素与相邻像素之间的可视的相似性,着手来为像素确定图段类别值。这个处理过程被迭代许多次(例如,50次或更多),并且受未被修改的、用于由图段指示所识别的像素的图段类别链接值(即,它们保持为值1)约束。
[0075] 因此,对于相邻的像素对于给定图段类别的图段指示,第一迭代导致初始值0增加到一个值,这个值取决于在像素之间的可视的差别。对于类似地着色的像素,该值可被改变到(接近于)1,由此指示极有可能这些像素属于与由分割指示所指示的像素相同的图段。在随后的迭代中,邻居像素的邻居具有增加的图段类别链接值,因此图段类别值在图片上从图段指示处扩张。而且,扩张依赖于可视相似性,这样,当检测到尖锐过渡(例如,尖锐的颜色过渡)时,扩张被阻挡或被显著地衰减,以反映该过渡是表示图段边缘的可能性很高。
[0076] 而且,除了对可视特性的依赖性以外,扩张还依赖于边界指示。具体地,每当边界指示表示在两个相邻像素之间存在边界时,图段类别链接值在这些像素之间的扩张就被显著地衰减,或完全被阻挡。因此,扩张是这样的,即使得跨越由边界指示所指示的边界的任何扩张被显著地衰减,或可以特定地被完全阻挡。
[0077] 边界与分割指示的组合的同时使用允许进行很多改进的分割,因为它允许通过低复杂性和方便的用户操作而使自动分割被控制并朝想要的结果偏移。
[0078] 在一些实施例中,分割处理器309可以将所描述的算法应用到仅仅单个图段类别。例如,可以仅仅对于前景图段类别执行扩张。基于所述扩张,每个像素随后可以根据对于像素的最终得到的图段类别链接值而被指派到一个图段类别。例如,具有大于0.5的图段类别值的所有像素可被指派以对应于前景图段类别的标签,而所有的其它像素可被指派以对应于背景图段类别的标签。
[0079] 在图3的特定的例子中,分割处理器309着手来将扩张算法独立地应用到每个图段类别(即,将它独立地应用到前景和背景图段类别)。于是每个单独的像素随后被指派以具有最高的图段类别值的图段类别。
[0080] 在下面,将参照图5描述图3系统的分割操作的特定例子,图5图示按照本发明的一些实施例的、交互式图像分割的方法的例子。
[0081] 在该系统中,图像一开始被划分成多个像素区域,每个像素区域可包括一个或多个像素。因此,应意识到,在以前描述的例子中,对像素的提及同样适用于潜在地包括一个以上像素的像素区域。具有多个像素的像素区域的使用可以特定地减小对于所描述的分割的复杂性和计算负担。
[0082] 因此,图5的方法从步骤501开始,由分割处理器309接收初始图像,并执行过度分割(over segmentation)以生成适当数目的像素区域(即,所述分割是分成这样的像素区域,即:其可以各自包括一个或多个像素,但它们多半比从交互式图像分割所得到的图段小得多)。在所述例子中,系统还在显示器303上显示所接收的图像。
[0083] 具体地,图像首先被过度分割成许多小的区域。应意识到,可以产生过度分割的许多不同的方法是已知的,以及任何适合的这样的方法都可以由分割处理器309使用。
[0084] 初始的过度分割可以是基于任何图像或视频属性,诸如图像颜色、图像纹理或图像运动。
[0085] 因此,分成像素区域的初始分割被执行而无需任何用户输入,且特别地,无需对任何图段指示或边界指示的任何考虑。
[0086] 可选地,图3的系统可以在生成像素区域的过度分割后着手对图像进行分割,以提供初始分割建议而无需任何用户输入。这种分割的结果可被标绘在图像之上作为叠加,由此允许用户例如跳过任何进一步的交互式分割(如果结果已经是可接受的),或者可以突显对于自动分割而言特别困难的区域。
[0087] 在步骤501后,基于用户输入的迭代的交互式分割被初始化。分割使用扩张方法,其中每个像素区域被提供以对于每个可能的图段类别的图段类别链接值。分割的目的是将图段标签(对应于图段类别)指派给每个像素区域。在本特定的例子中,每个像素区域因此被指派成前景或背景。对于像素区域和图段类别的图段类别链接值表示该像素区域应当被指派给那个图段类别的概率。
[0088] 跟随在步骤501后面的是步骤503,其中从用户接收一个或多个图段指示或者不接收图段指示,让每个图段指示与图段类别相链接。如前所述,图段指示可以是由用户直接画在触敏显示器301、303上而生成的涂鸦。
[0089] 跟随在步骤503后面的是步骤505,其中从用户接收一个或多个边界指示或者不接收边界指示。如前所述,图段指示可以是由用户直接画在触敏显示器301、303上而生成的轮廓。
[0090] 应意识到,在分割的每次迭代中,可以接收一个或多个图段指示或者不接收图段指示,以及可以接收一个或多个边界指示或者不接收边界指示,但典型地在每次迭代时接收至少一个图段或边界指示。
[0091] 在步骤505后,分割处理器309发起基于扩张的分割,其中根据图段指示被指派的图段类别链接值被扩张到未由对应的图段指示识别的像素区域。而且,扩张依赖于边界指示,以及在所述例子中,还依赖于在像素区域之间的可视特性的相似性。扩张是对于每个单独的图段类别而分开地执行的。
[0092] 因此,跟随在步骤505后面的是步骤507,其中对于一个图段类别,执行图段类别链接值的扩张。跟随在步骤507后面的是步骤509,其中确定是否所有的图段类别已被扩张。如果是的话,则该方法在步骤511继续进行,否则它返回到步骤507以对于下一个图段类别执行扩张过程。应意识到,在一些例子中,仅仅将单个图段类别用于图段选择,因此,在某些情形下,可以仅仅执行单次迭代。
[0093] 将参照图6描述扩张方法的例子。
[0094] 在步骤601发起对于给定的图段类别(例如,对于背景图段类别或前景图段类别)的扩张,其中对于图段类别的图段类别链接值被指派给由用户所提供的一个或多个图段指示来识别为属于该图段类别的像素区域。
[0095] 具体地,针对由对于图段类别的图段指示所识别的每个像素区域的图段类别链接值被指派以表示在该像素区域与该图段类别之间的强链接的预定值,即,它指示该像素区域可能属于这个图段类别。
[0096] 具体地,涂鸦具有这样的效果:与涂鸦相交的所有的像素区域被给予图段类别链接值,其指示该像素区域属于对应的图段类别的高置信度。例如,如果m表示对于图段指示的图段类别,则由图段指示所识别的所有区域j∈i(其中i是所有像素区域的集合)被给予一个值,该值明确地把像素区域指派到那个图段类别。例如,指示像素区域属于该图段类别的概率的图段类别链接值被设置成指示像素区域属于该图段类别的确定性:。
[0097] 类似地,对于否定的图段指示(即,指示不属于特定图段类别的像素区域的图段指示),表示弱的(或没有)链接的预定义值被指派给图段类别链接值。例如,对于指示像素区域k属于该图段类别的概率的图段类别链接值,该图段类别链接值被设置成指示该像素区域不属于该图段类别的确定性:。
[0098] 应意识到,图段指示可以同时是否定的和肯定的图段指示。例如,在分割成前景和背景的例子中,背景涂鸦既提供对于背景图段类别的肯定图段指示也提供对于前景图段类别的否定图段指示。
[0099] 因此,在步骤601后,多个图段类别链接值已被指派给一些像素区域。这些像素区域被称为已指派的组。而且,许多像素区域没有被指派以任何(固定的)图段类别链接值(因为它们不是图段指示的组成部分)。这些像素区域被称为未指派的组。
[0100] 在一些实施例中,初始的图段类别链接值也可以被指派给该未指派的组的像素区域。例如,可以指派表示到图段类别的比用于肯定图段指示的值弱得多的链接的初始值。具体地,对于所有的未指派的像素区域,初始的图段类别链接值可被设置为零(或可以被设置为0.5,表示预先有些相信:在该像素区域存在特定的图段类别)。
[0101] 所述方法然后着手确定对于特定地对应于未指派的组的一群像素区域的图段类别链接值。
[0102] 扩张迭代在步骤603开始,其中在未指派的组中选择下一个像素区域。应意识到,在不同的实施例中,可以使用不同的用以更新像素区域的次序。例如,在一些情景中,像素区域可以从上到下和从左到右地被处理,在其它情景中,顺序可以是从下到上和从右到左,在其它情景中,它可以是按到图段指示的增长的距离的顺序,以及在其它情景中,它可以是例如按随机的次序。
[0103] 所述方法然后在步骤605继续进行,其中为当前的像素区域确定相邻的一组像素区域。在一些实施例中,相邻组可以仅仅包括与当前的像素毗连的所有像素区域,但应意识到,在其它实施例中,可以使用其它组。例如,在一些实施例中,相邻组可以是非对称的,它在一个方向上包括的像素区域的数目比在另一个方向上大。例如,可以仅仅包括在该方向上已被处理的像素区域。而且,在一些实施例中,可以选择在当前像素区域的邻域中选择的像素区域的特定图案,诸如,举例而言,在多到比如说3个像素区域的距离上每隔一个像素区域。
[0104] 因此,可以响应于相对位置准则——其定义在相对于当前像素区域的位置处的多个像素区域——而选择相邻组。位置准则例如可以为要被包括到相邻组中的像素区域规定相对于当前像素的距离和方向特性。
[0105] 跟随在步骤605后面的是步骤607,其中对相邻组进行评估,以确定其中的任何像素区域是否通过边界指示而与当前像素区域分隔开。例如,如果垂直轮廓由用户放置到当前像素区域的紧接着的右面,则相邻组的所有像素区域通过轮廓/边界指示而与当前像素区域分隔开,因此,这些像素区域将被称为分隔开的像素区域。
[0106] 跟随在步骤607后面的是步骤609,其中对于当前像素区域的图段类别链接值被计算为相邻像素区域组的图段类别链接值的组合。而且,所述组合是这样的,即:使得该组合依赖于相邻组是否包括任何分隔开的区域。具体地,来自任何分隔开的像素区域的贡献相对于那个像素区域未通过边界指示而被分隔开的情况下来自其的对应贡献而言被减小。
[0107] 具体地,该组合是这样的,即:使得来自相邻组中每个像素区域的图段类别链接值的贡献相对于该相邻组中其他像素区域被加权。加权是基于两个像素区域的可视的相似性,具体地是基于颜色相似性。因此,允许把高的加权给予在颜色上非常类似的且因而多半属于相同图段的相邻像素区域,而把低的加权给予具有非常不同的颜色的相邻像素区域,由此反映这些像素区域属于相同图段的减小的或然率。
[0108] 而且,对于相邻像素区域的加权是依赖于这是否通过边界指示而被分隔开,具体地,任何分隔开的像素区域的加权相对于其中像素区域未通过边界指示而被分隔开的情形而言被减小。所述减小可以特定地对应于零加权,其中来自分隔开的像素区域的任何贡献被完全忽略。
[0109] 在特定的例子中,对于图段类别k像素区域i的图段类别链接值根据相邻像素区域j的图段类别链接值进行计算。对于区域i,图段类别链接值使用下式被更新:,
其中
,
其中r、g和b表示对于RGB彩色表示法的红、绿和蓝色值。值α可被选择以提供想要的扩张特性(在许多情形下,约为α=0.1的典型值可能是适当的)。因此,如果区域i和j具有相似的平均颜色值且它们未通过边界指示而被分隔开,则对于相邻像素区域j的权重是高的。然而,图段类别信息不跨越边界区域扩张,因为这样的贡献的权重被设置为零。
[0110] 因此,指示当前像素区域属于当前图段类别的或然率的图段类别链接值根据相邻像素区域的加权的贡献进行确定。
[0111] 应意识到,在一些实施例中,对于当前像素的图段类别链接值还可以包括来自对于当前像素的图段类别链接值的以前值的贡献。
[0112] 跟随在步骤609后面的是步骤611,其中确定在当前的迭代中是否考虑了未指派的组中的所有像素区域。如果没有的话,则本方法返回到步骤603以处理下一个像素区域。
[0113] 如果所有的像素区域已被处理,则在一些实施例中,扩张可以终结。然而,在所述例子中,扩张是通过对步骤603-611进行迭代而达到的,因此,在这种情形下,本方法在步骤613继续进行,在其中作出评估:是否已进行足够的迭代。如果不是的话,本方法在步骤615初始化下一次迭代,此后本方法返回到步骤603以执行下一次迭代。
[0114] 下一次迭代的初始化可以特定地包括选择像素区域被处理的次序。例如,通过在不同的迭代中对像素区域的处理使用不同的顺序,常常可以达到改进的扩张。
[0115] 扩张步骤的迭代提供了改进的扩张,典型地,扩张将朝向图段类别链接值到接近反映适当分割的像素区域的稳定指派而收敛。例如,10-100次迭代常常可能是合适的。应意识到,在其它实施例中,可以使用其它停止条件。
[0116] 当扩张迭代终结时,本方法在步骤509继续进行,其中确定对于其它图段类别,扩张是否应当被迭代。否则,本方法在步骤511继续进行,其中为每个像素区域选择图段类别。
[0117] 作为具体的例子,对于分成两个可能的图段类别(例如,背景和前景图段类别)的分割,如果仅仅对于一个图段类别执行扩张,那么若扩张的图段类别链接值高于阈值(例如,0.5)的话,则对于一个像素区域的图段类别可被选择为该扩张的图段类别,否则,该图段类别可被选择为互补的图段类别。
[0118] 在其中为多个不同的图段类别确定图段类别图段链接(例如,通过为不同的图段类别迭代所描述的扩张)的实施例中,对于像素区域的图段类别的选择可以通过互相比较对于不同图段类别值的图段类别链接值而被执行。具体地,可以选择其图段类别链接值指示最强链接(例如,最高的值)的图段类别。
[0119] 因此,在选择图段类别后,所有的像素区域都被指派以图段类别(即,它们被加上它们被认为所属于的图段类别的标签)。因此,图像的分割已完成,且在步骤513,最终得到的分割可以在显示器303上被显示。
[0120] 然后,本方法在步骤515继续进行,其中用户指示:分割是否是可接受的或者是否应当执行进一步的更新。如果是的话,本方法返回到步骤503来接收进一步的图段和/或边界指示,响应于该图段和/或边界指示,扩张和图段类别选择可被更新以便提供进一步改进的分割。否则,本方法在步骤517结束。
[0121] 在先前描述的例子中,分割是基于由边界指示约束的、来自图段指示的图段类别信息的扩张。然而,应意识到,在其它实施例中,可以使用基于由分割指示提供的信息,而同时对此进行约束以提供由边界指示所指示的边界的其他分割手段。例如,代替所描述的扩张方法,分割可以使用基于分割指示并受边界指示约束的图形切割算法。作为另一个例子,该过程可以是基于模拟退火(simulated annealing)。
[0122] 在先前的描述中,边界指示被认为是处在像素之间,即,它不识别像素,而是分隔开属于不同的像素单元的像素。然而,应意识到,在一些实施例中,边界指示可被认为具有宽度,以及它可以特定地识别被认为是图段的边界或边缘的组成部分的一个或多个像素(或甚至像素区域)。
[0123] 例如,用户可以通过选择图像上的某些点而输入边界指示,这些点然后通过自动曲线生成算法而被连接。处在这条曲线(它例如可以具有一个像素或更多像素的宽度)上的像素然后被指定为边界像素。
[0124] 而且,边界指示可被使用来修改过度分割,且可以特别地被使用来修改像素区域。例如,边界指示可以穿过像素区域,由此将该像素区域划分成两个(或更多的)不同的区域。在这种情形下,像素区域可被分裂成三个(或更多的)不同的(更小的)像素区域,其对应于两个(或更多的)分隔开的区域加上包括边界像素的像素区域。
[0125] 在扩张中可以考虑边界像素区域,具体地,对于所有的边界像素区域的图段类别链接值在扩张期间可被设置为零。而且,满足要被包括到相邻组中的要求的所有边界像素区域在组合时可以简单地被忽略。在图段类别选择后,边界区域然后可被分配以适当的图段类别。例如,在一些实施例中,所有的边界区域可被指派以预定的图段类别(例如,它们都被指派以前景图段类别),或例如可被指派以不是边界区域的最接近像素区域的图段类别。
[0126] 应意识到,为了清晰起见,以上的说明参照不同的功能单元和处理器来描述本发明的实施例。然而,应意识到,可以在不背离本发明的情况下,使用在不同的功能单元或处理器之间的任何适当的功能性分布。例如,被图示为由分开的处理器或控制器执行的功能性可以由相同的处理器或控制器执行。因此,对于特定功能单元的提及仅仅被看作为对提供上述功能性的适当装置的提及,而不是表示严格的逻辑或物理结构或组织。
[0127] 本发明可以以任何适当的形式被实施,包括硬件、软件、固件或它们的任何组合。可选地,本发明可以至少部分地被实施为在一个或多个数据处理器和/或数字信号处理器上运行的计算机软件。本发明的实施例的单元和部件可以以任何适当的方式物理地、功能地和逻辑地被实施。事实上,所述功能性可以在单个单元中、在多个单元中、或作为其它功能单元的组成部分被实施。这样,本发明可以在单个单元中被实施,或者可以物理地和功能地分布在不同的单元和处理器之间。
[0128] 虽然本发明是结合一些实施例被描述的,但不打算将它限制于这里阐述的特定的形式。而是,本发明的范围仅仅由所附权利要求限制。另外,虽然特征可以看起来是结合特定的实施例描述的,但本领域技术人员将会认识到,所描述的实施例的各种特征可以按照本发明来组合。在权利要求中,术语“包括”并不排除其它单元或步骤的存在。
[0129] 此外,虽然被一个个地列出,但多个装置、单元或方法步骤可以由例如单个单元或处理器实施。另外,虽然一个个特征可被包括在不同的权利要求中,但这些特征有可能被有利地组合,以及被包括在不同的权利要求中并不意味着这些特征的组合是不可行的和/或是不利的。另外,特征被包括在一种类型的权利要求中并不意味着限制于这种类型的权利要求,而是表示如果适当的话所述特征同样可应用于其它类型的权利要求。此外,特征在权利要求中的次序并不意味着这些特征必须按其工作的任何特定的次序,具体地,在方法权利要求中的各个步骤的次序并不意味着这些步骤必须按这个次序被执行。而是,这些步骤可以以任何适当的次序被执行。另外,单数的提及并不排除复数。因此,对“一”、“一个”、“第一”、“第二”等等的提及并不排除复数。在权利要求中的参考符号仅仅作为阐明性的例子而被提供,无论如何不应当被解释为限制权利要求的范围。