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