背景用户输入的替代品

时间:2015-09-18 07:37:51

标签: image-processing background-substraction

我正在寻找一种算法,或者更好的是,一些库涵盖了来自单个静态图像的背景减法(没有可用的背景模型)。尽管如此可能是某种用户输入,例如https://clippingmagic.com。 可悲的是,我的google fu在这里很糟糕,因为我无法通过有限的关键字找到关于该主题的任何论文。

1 个答案:

答案 0 :(得分:0)

那个网页确实令人印象深刻。如果我尝试实现类似的东西,我可能会使用 k-means集群使用 CIELAB色彩空间。改变颜色空间的原因是颜色可以用两个点表示,而不是3个常规RGB图像。这应该加快集群。此外,CIELAB色彩空间是为此目的而构建的,可以找到距离" (颜色之间的相似性)和人类感知颜色的方式。不只是查看计算机的原始二进制数据。

但是对kmeans的快速概述。对于这个例子,我们会说k = 2(意味着只有两个簇)

  1. 使用均值初始化每个群集。
  2. 浏览图像中的每个像素并确定它接近哪个均值,群集1或2?
  3. 在处理完所有像素后计算群集的新均值
  4. 使用新计算的方法重复步骤2-4直到收敛(意味着手段不会发生太大变化)
  5. 现在,当前景图像明显不同于背景时,这将很有效。在蓝色背景中说一个红球,但如果颜色相似,那就更有问题了。我仍然坚持kmeans但有更多的集群。因此,在该网页上,您可以进行多个红色或绿色选择。我会将这些笔划中的每一个都作为一个集群,并将我的集群初始化为平均值。所以说我画了3个红色笔画,2个画了绿笔画。这意味着我有5组。但不知何故,我在内部添加了一个额外的属性作为前景/背景。这样每个集群的方差都会很小,但最后我只会显示该属性,前景或背景。我希望这是有道理的。

    现在您可能已经开始使用搜索字词了。可能还有很多其他方法,但这是我想到的第一个,祝你好运。

    修改

    在使用网站后,我发现它使用空间接近群集。所以说我在图像的两侧有两个相同的红色斑点。如果我只注释图像的左侧,则可能无法检测到右侧的斑点。 Kmeans不会复制这种行为,因为我描述的方法只使用颜色来聚类像素,而这些像素完全无视它们在图像中的位置。

    我不知道您可以使用哪些工具,但这是一个很好的matlab示例/教程color based kmeans