【发布时间】:2015-09-18 07:37:51
【问题描述】:
我正在寻找一种算法,或者更好的是,一些涵盖从单个静态图像(没有可用的背景模型)中减去背景的库。不过,可能的是某种用户输入,例如https://clippingmagic.com。 遗憾的是,我的 google fu 在这里很糟糕,因为我用有限的关键字找不到任何关于该主题的论文。
【问题讨论】:
标签: image-processing background-subtraction
我正在寻找一种算法,或者更好的是,一些涵盖从单个静态图像(没有可用的背景模型)中减去背景的库。不过,可能的是某种用户输入,例如https://clippingmagic.com。 遗憾的是,我的 google fu 在这里很糟糕,因为我用有限的关键字找不到任何关于该主题的论文。
【问题讨论】:
标签: image-processing background-subtraction
那个网页真的令人印象深刻。如果我尝试实现类似的东西,我可能会使用 CIELAB 颜色空间 使用 k-means clustering。更改颜色空间的原因是颜色可以用两个点表示,而不是像常规 RGB 图像那样用 3 个点表示。这应该会加速集群。此外,CIELAB 色彩空间是为此目的而构建的,它发现了颜色之间的“距离”(相似性),并解释了人类感知颜色的方式。不仅仅是查看计算机拥有的原始二进制数据。
不过是对 kmeans 的快速概述。对于这个例子,我们会说 k=2(意味着只有两个集群)
现在,当前景图像与背景明显不同时,它会很好地工作。比如说蓝色背景中的一个红球,但如果颜色相似,那就更成问题了。我仍然会坚持使用 kmeans,但有更多的集群。因此,在该网页上,您可以选择多个红色或绿色。我会将这些笔画中的每一个都设为一个集群,并将我的集群初始化为平均值。假设我画了 3 个红色笔画和 2 个绿色笔画。这意味着我将有 5 个组。但不知何故,我在内部添加了一个额外的属性作为前景/背景。这样每个集群都会有一个小的差异,但最后,我只会显示那个属性,前景或背景。我希望这是有道理的。
也许现在您可以开始使用一些搜索字词。可能还有很多其他的方法,但这是我第一个想到的,祝你好运。
编辑
在使用该网站多一点之后,我发现它使用空间邻近性来集群。所以说我在图像的两侧有 2 个相同的红色斑点。如果我只注释图像的左侧,则可能无法检测到右侧的斑点。 Kmeans 不会复制这种行为,因为我描述的方法只使用颜色来聚类像素,完全不知道它们在图像中的位置。
我不知道您可以使用哪些工具,但这是color based kmeans 上的一个不错的 matlab 示例/教程
【讨论】: