2D图像上检测多个相似石头的算法?

3

所以我们有一张图片,其中人眼可以清晰看到石头(还有一些噪音,这里是草):

stones on dirt

正如您所看到的,石头的纹理相当相似(黑色的除外),边缘也相当相似。我想知道是否有任何流行的算法可以检测像这样的图像中的石头数量和其边界。


我尝试了什么 - K均值算法:

首先,我们可以做一些像双边模糊(也称表面模糊)的操作,以获得更少噪点的图像(这里有一些Pixel Bender代码链接):

enter image description here

我们可以进行一些K-means聚类(Octave/Matlab代码和逻辑示例在这里,收敛需要很长时间),就像我这里展示的一样:

enter image description here

正如您所看到的,K-Means并不能解决手头的问题——它们倾向于将对象合并而不是保持分离。


如果我们至少能够一般地找到所有的石头(不是边界,而是每个石头至少有几个像 这张图片上有两块石头:A有点x1,x2,x3,B有点x4,x5),那么我们就可以执行类似于Allan D. Jepson的“自适应分组的强壮边界检测”的操作,这对我来说就是一个解决方案... 但是如何检测不同的石头呢?

1个回答

5
在这种情况下,在应用任何算法之前,您必须预处理图像,以消除不需要的噪声并将所需主题聚焦。由于噪声(草)很细,石头分离得很好,如果您的所有图像都是这样的,则有一些步骤可以始终产生良好的结果。您可以从将其转换为灰度开始,然后删除高频噪声-即删除细节,然后将其阈值化为黑白色-或应用低通滤波器-草大部分将消失。然后,您可以应用形态学开放过滤器来使石头之间的连接变薄,以便大多数石头被分离,然后只需计算连接的组件即可。如果您正在使用C或Python进行工作,像“leptonica”(http://www.leptonica.com/)这样的库可以帮助您使用大多数过滤器。我附上了一个示例,说明您的图像可能是什么样子-尽管我通过GNU图像处理程序(GIMP)手动调整了图像 pre-processed stones image file

并且它的副本,与您原始图像的叠加在此输入图像描述


如果A Real Time Morphological Snakes Algorithm能够从形态学开放的边界向后扩展,那将是非常有趣的事情...而且它可能比k-means快得多... - myWallJSON
因为手动给定的4个点,它运行得相当不错 - myWallJSON

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接