所以我们有一张图片,其中人眼可以清晰看到石头(还有一些噪音,这里是草):
正如您所看到的,石头的纹理相当相似(黑色的除外),边缘也相当相似。我想知道是否有任何流行的算法可以检测像这样的图像中的石头数量和其边界。
我尝试了什么 - K均值算法:
首先,我们可以做一些像双边模糊(也称表面模糊)的操作,以获得更少噪点的图像(这里有一些Pixel Bender代码链接):
我们可以进行一些K-means聚类(Octave/Matlab代码和逻辑示例在这里,收敛需要很长时间),就像我这里展示的一样:
正如您所看到的,K-Means并不能解决手头的问题——它们倾向于将对象合并而不是保持分离。
如果我们至少能够一般地找到所有的石头(不是边界,而是每个石头至少有几个像 这张图片上有两块石头:A有点x1,x2,x3,B有点x4,x5
),那么我们就可以执行类似于Allan D. Jepson的“自适应分组的强壮边界检测”的操作,这对我来说就是一个解决方案... 但是如何检测不同的石头呢?