【问题标题】:Background Substraction with user input用户输入的背景减法
【发布时间】:2015-09-18 07:37:51
【问题描述】:

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

【问题讨论】:

    标签: image-processing background-subtraction


    【解决方案1】:

    那个网页真的令人印象深刻。如果我尝试实现类似的东西,我可能会使用 CIELAB 颜色空间 使用 k-means clustering。更改颜色空间的原因是颜色可以用两个点表示,而不是像常规 RGB 图像那样用 3 个点表示。这应该会加速集群。此外,CIELAB 色彩空间是为此目的而构建的,它发现了颜色之间的“距离”(相似性),并解释了人类感知颜色的方式。不仅仅是查看计算机拥有的原始二进制数据。

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

    1. 用平均值初始化每个集群。
    2. 遍历图像中的每个像素,并确定它更接近簇 1 还是簇 2?
    3. 在处理完所有像素后计算集群的新平均值
    4. 使用新计算的均值重复步骤 2-4 直到收敛(意味着均值变化不大)

    现在,当前景图像与背景明显不同时,它会很好地工作。比如说蓝色背景中的一个红球,但如果颜色相似,那就更成问题了。我仍然会坚持使用 kmeans,但有更多的集群。因此,在该网页上,您可以选择多个红色或绿色。我会将这些笔画中的每一个都设为一个集群,并将我的集群初始化为平均值。假设我画了 3 个红色笔画和 2 个绿色笔画。这意味着我将有 5 个组。但不知何故,我在内部添加了一个额外的属性作为前景/背景。这样每个集群都会有一个小的差异,但最后,我只会显示那个属性,前景或背景。我希望这是有道理的。

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

    编辑

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-19
      • 1970-01-01
      相关资源
      最近更新 更多