限定图像边界的制作方法_4

文档序号:9350706阅读:来源:国知局
这些实施例也会删除至少一个分段。如果用户将光标放在先前限定的边界上 且与边界末端相距一个以上的分段,那么一些实施例将会删除超出光标位置的所有边界分 段。在2145之后,所述处理返回到2125,以便确定是否仍旧接收到边界限定输入。如果确 定光标没有反向移动到先前限定的边界上,那么所述处理同样会从2140返回到2125。举例 来说,如果用户按下鼠标按键却没有移动光标,那么在一些实施例中既不会绘制新的边界 分段,也不会删除分段,但是仍旧会接收到边界限定输入。
[0116] 在以上描述的处理中,一些实施例在限定边界的同时将边界限定成有序坐标集。 例如,所限定的边界上的每个像素都被指定了一个(x,y)配对。当光标移动到具有已经处 于坐标集中的特定(x,y)配对的像素上时,所述处理将会删除该有序集中处于特定坐标配 对之后的所有坐标。当光标在特定坐标配对的阈值距离以内移动时,一些实施例将会删除 所有坐标。
[0117] 在图23中,一些新的分段2335会被锁定到婴儿的围兜。但是,更有可能出现的 情况是用户尝试限定一个围绕整个婴儿的边界,并且更愿意所述边界延伸到婴儿臂部的下 方。图24和25示出的是使用处理2110来删除边界的分段以及随后限定新的分段。图24 示出的是在用户在先前限定的边界上将光标移动到点2435并且由此删除未被正确绘制的 多个分段2335之后得到的边界2215。图25示出的是在用户继续在婴儿臂部下方选择边界 2215之后得到的边界。图25示出了新的分段2535。根据光标2210在图25中的位置,用 户可以结束选择边界或是继续选择婴儿臂部下方的边界。
[0118] -些实施例允许用户在限定了边界之后修改所述边界。在一些实施例中,当修改 边界时,所述边界会尝试自动锁定到边缘。如果用户确定沿着边缘限定的边界优选在至少 一个点上是不沿着边缘延伸的,那么用户可以将边界从边缘上移开。一些实施例使用了此 类边界来限定没有过渡的选取部分,并且由此不会从所限定的边界中产生隧道或是前景到 背景的过渡。
[0119] 在一些实施例中,边界被视为是具有若干个可修改点的可参数化曲线。可参数化 曲线是通过特定的方程或方程组围绕某些限定点限定的曲线。这与光栅曲线形成了对比, 其中光栅曲线是由构成该曲线的所有像素的集合限定的。在一些实施例中,通过移动限定 点,可以对所述可参数化曲线进行修改。在一些实施例中(例如使用了贝塞尔样条的实施 例),用于修改曲线的限定点位于该曲线之上。在其他实施例中(例如使用B样条的实施 例),用于修改曲线的限定点是离开该曲线的。除了限定点之外,一些实施例(例如使用贝 塞尔样条的实施例)是基于该曲线在特定点上的切线来限定可参数化曲线的。在一些实施 例中,用户可以在曲线上添加限定点,然后基于新的限定点来修改曲线。
[0120] 图26A示出的是用以限定边界2610的图像2605。除了若干个其他限定点之外, 所限定的边界2610还包括限定点2615。在一些实施例中,限定点可以用光标拖曳,以便修 改所限定的边界。在图示的实施例中,边界2610是贝塞尔样条,但是为了简化附图中的例 示,在这里并未显示切线。图26B示出的是作为B样条的边界2650,其中限定点2655并没 有位于该边界上。除了若干个其他边缘之外,图像2605还包括边缘2620。图26还示出了 位于限定点2615的光标2625。图27示出的是用户通过使用光标2625向下和向右拖曳限 定点2615来修改边界2610的结果。图27示出的是边界被修改使得修改后的边界不再沿 着图像的边缘延伸的示例。图27还示出了边缘2720,在初始限定边界时,所述边界沿着所 述边缘2720延伸。图28示出的是用户通过使用光标2625向上和向左拖曳限定点2615来 修改边界2610的结果。图28示出的是边界被修改使得修改后的边界锁定到与初始限定的 边缘不同的边缘的示例。在图28中,边界锁定到边缘2620,而所述边界一开始被锁定到边 缘 2720。
[0121] 第五节.从所限定的边界中生成隧道
[0122] 本发明的一些实施例基于光标在图像某一部分的移动而在该部分图像的周围生 成二维隧道。在一些实施例中,所述隧道在图像内部限定一个边界。与硬边缘不同,所述隧 道是一个数倍像素宽度的过渡边缘或区域。一些实施例的隧道是作为一对可变形曲线生成 的。一些实施例则允许同时或单独修改这两条曲线。
[0123] 图29给出了用于从所限定的边界中产生隧道的一些实施例的处理2900。处理 2900是以显示图像(在2905)为开始的。在2910,所述处理接收限定图像边界的输入。在 一些实施例中,如在第四节中描述的那样限定所述边界。其他实施例可以采用不同的方式 来限定边界。一些实施例将所限定的边界视为样条曲线。在一些实施例中,在从边界生成隧 道之前平滑化所述边界。图30示出的是所限定的边界。图30示出了图像3005、边界3010 以及滑动器3015。在一些实施例中,用户通过将光标放在点3020以及在移动到点3025的 同时按下光标来限定边界。在一些实施例中,所述处理会在释放了光标之后生成隧道,而不 需要更进一步的用户输入。
[0124] 在接收到限定边界的输入之后,处理2900确定将要生成的隧道的初始宽度(在 2915)。一些实施例基于用户可以修改的UI工具来确定初始宽度。例如在一些实施例中, 初始宽度基于线性滑动器工具的设置。参考图30,在一些实施例中,滑动器3015是用于确 定隧道初始宽度的线性滑动器工具。一些实施例使用了其他方式来限定隧道的初始宽度, 例如用户的数字输入。
[0125] 在确定了隧道的初始宽度之后,如果隧道的两个侧边具有相同的形状(所限定的 边界的形状),那么所述处理确定隧道是否会与自身相交(在2920)。如果将边界限定成是 在一个方向上对其进行追踪,并且随后继续在先前限定的部分的附近对其进行反向追踪, 那么根据初始宽度,在这里是不可能产生两个侧边具有相同形状的隧道的。如果产生具有 相同形状的两个侧边的隧道的处理不会导致该隧道自相交,那么所述处理以在2915确定 的宽度来产生隧道(在2925)。通过生成所述隧道,可以使隧道的侧边平行于所限定的边界 延伸,并且与所限定的边界具有相等的距离。图31示出的是图像3005,其中所述图像具有 在与边界3010相距恒定距离的点上生成的隧道。滑动器3015被设置成与左边相距第一距 离,所述距离是到滑动器右边距离的四分之一。由于所限定的边界3015通常是直的,因此 生成具有相同形状的两个侧边的隧道3015 (并且由此生成具有恒定宽度的隧道)的处理不 会导致所述隧道自相交。
[0126] 在生成两个侧边具有相同形状的隧道的时候,如果处理2900在2920确定隧道将 会自相交,那么所述处理将会生成所述隧道(在2930),并且在需要避免自相交的位置改变 其中一个或是所有这两个侧边的形状。所述处理尝试尽可能以恒定的宽度来绘制隧道,并 且将会修改隧道的一个或是所有两个侧边的形状,以便保持宽度尽可能接近恒定,而不使 隧道自相交。在一些实施例,所述修改尽可能被保持在最低的限度。图32示出了在图像 3205上显示的所限定的边界320以及滑动器3215。滑动器3215被设置成接近于中间点, 以便确定将要从边界3210产生的隧道的宽度。图33示出的是具有从所限定的边界3210 产生的非恒定宽度的隧道3310。主隧道宽度是由滑动器3215设置的。隧道3310具有侧边 3320和3325。由于边界3210的形状,所生成的隧道3310具有形状不同的两个侧边3320 和3325。特别地,在区域3330内部,与侧边3320相比,侧边3325将会变窄。隧道的宽度被 保持在尽可能接近于恒定,但是在接近于测边3325达到一个点的位置,所述宽度会略微减 小。
[0127] 一旦生成了隧道,则所述处理确定是否接收到针对所述隧道的任何修改(在 2935)。一些实施例允许对隧道的宽度进行修改。此外,一些实施例中的修改也可以是对隧 道一个侧边或是所有两个侧边的形状的修改。
[0128] 图34示出的是使用滑动器工具3015修改图31的隧道3310的宽度而得到的结果。 在一些实施例中,滑动器工具3015被用于确定隧道的初始宽度,以及在生成隧道之后修改 隧道的宽度。在图34中,隧道3110实际要比其在图31中更宽,这是因为用户已经将滑动 器3015从四分之一标记移动到刚好经过四分之三标记。由于边界3010被限定成基本上是 直的,因此如果在初始生成隧道的时候将滑动器3015设置在刚好越过四分之三点的位置, 那么在修改了宽度之后,图34所示的隧道3110看上去会是相同的。
[0129] 图35示出的是使用滑动器工具3215修改图33的隧道3310的宽度而得到的结果, 其中所述滑动器工具在图35中接近于四分之三点。不但隧道3310的侧边愈发疏远,而且 侧边3325在区域3530中也会变得更窄。这是因为所述处理会在移动滑动器3215的同时 尝试尽可能保持宽度恒定。因此,在一些实施例中,修改隧道的宽度的处理不但会修改所述 宽度,而且还会修改隧道的一个或所有两个侧边的形状。
[0130] 一些实施例允许直接修改隧道侧边的形状。在一些实施例中,隧道侧边被限定成 可参数化的曲线。在一些实施例中,所述可参数化曲线是由一组可修改的点构成的贝塞尔 样条。图36示出了图像3605、隧道3610、光标3615以及UI项3620(在所显示的实施例中 是被标记为"Move"(移动)的按钮)。隧道3610包围了婴儿的手。图36示出的是用户使 用光标3615来选择UI项3620。图37示出的是在用户点击了UI项3620之后的隧道3610 的特写(close-up),其中所述特写将隧道的两个侧边3705和3710显示成贝塞尔样条曲 线。所述样条曲线包括控制点和切线,包含相应的内部和外部控制点3715和3720以及切 线3725和3730。外部切线3725要比内部切线3730长,这是因为切线3725处于曲线的外 部,而相应的切线3730则处于曲线的内部。在一些实施例中,用户可以通过操纵样条曲线 来修改隧道。在一些实施例中,针对一个样条的修改不会影响到其他样条。对于控制点、例 如点3715和3720来说,这些控制点可以在图像中的任何方向上移动样条上的点。在一些 实施例中,移动一个样条上的控制点将会使两个样条根据控制点的移动而移动。在一些实 施例中,当移动控制点时,根据本领域普通技术人员公知的贝塞尔样条曲线的数学运算,同 样也会移动附近的点。
[0131] 图37还示出了处于外部样条3705的点上的光标3735。在一些实施例中,用户可 以将控制点添加到一个或两个样条曲线上。在一些实施例中,用户可以通过点击曲线的一 个部分而在该点添加控制点。在一些实施例中,添加控制点的处理还会在控制点添加相应 的切线。图38示出了在外部样条3705上添加的控制点3815和切线3820。控制点3815已 被向内移动。出于第四节描述的原因,在一些实施例中,较为有利的是不让任何的婴儿耳部 处于隧道内部,这种向内移动点3815的处理会在实现过程中提供帮助。应该指出的是,在 内部样条3710上是没有位于3825的相应控制点的。图38还示出了外部切线3825和相应 的内部切线3830。外部切线3825原本长于内部切线3830,但是由于将贝塞尔样条数学运 算应用于点3815的移动,因此现在外部切线3825相对较短。在一些实施例中,通过点击切 线的端点,可以允许用户修改切线的取向。一些实施例允许用户通过直接使用切线的端点 来修改切线的长度,这与移动控制点来进行修改是相反的。在图38中,外部切线3825不再 平行于相应的内部切线3830。这是因为切线3825的左端点被向下拖曳,由此修改外部样条 的相邻部分。图39示出的是在向内移动控制点3915之后的样条3705和3710,其中所述控 制点是与切线3825相关联的控制点。针对隧道的这些修改产生了将婴儿耳部完全置于隧 道外部的有利结果。
[0132] 回到处理2900,如果所述处理接收到针对隧道的修改(在2935),那么所述处理根 据接收到的修改方式来修改所述隧道(在2940)。在一些实施例中,所述修改包括如上描述 的修改,例如修改隧道的宽度或是修改一个或所有两个贝塞尔样条。如果在2935未接收到 修改,或者在依照任何接收到的修改方式修改了隧道(在2940)之后,所述处理在2945确 定是否继续允许修改所述隧道。在一些实施例中,如果用户已为隧道内部的像素生成了a 值,那么所述隧道将不再能够被修改。如果用户开始限定新的边界来产生新的隧道,那么在 一些实施例中,先前的隧道不再能够接收任何其他修改。如果所述处理确定继续接收修改, 那么处理将会返回到2935。如果不是的话,则处理2900结束。
[0133] 第六节.生成前景到背景的过渡
[0134] 图40概念性地示出了由一些实施例执行的用于选择图像内部的关注部分
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1