我正在尝试从已标记有特定颜色的图像中提取区域。在下图中
我想只提取属于人行道的像素,即属于连接到图像中下部的黑色斑点的所有像素。我不感兴趣的那个blob外面有黑点。所以如果我可以大致得到下面显示的区域
这将是完美的。有谁知道一些常见的算法可以做到这一点?形态学?区域增长使用一种泛洪算法?
谢谢,
答案 0 :(得分:1)
你可以通过洪水填充很容易地做到这一点。如果我使用 ImageMagick 在命令行演示,因为它安装在大多数Linux发行版上,可用于macOS和Windows。
因此,请记住,在您提供的包含轴的图像中,您识别为种子的像素大约为440,520,我们可以使用以下颜色填充与该颜色匹配的所有像素并使用青色触摸种子:
convert scene.png -fill cyan -draw 'color 440,520 floodfill' result.png
或者,我们可以通过将非青色像素更改为白色并将青色像素更改为黑色来制作蒙版:
convert scene.png -fill cyan -draw 'color 440,520 floodfill' -fill white +opaque cyan -fill black -opaque cyan z.png
您还可以通过命令行轻松完成其他一千个操作,以便更进一步......在面具中填充小孔,从面具中制作透明层 - 如果需要手,只需提出更多问题。< / p>
如果要关闭图像中的孔,可能需要使用形态函数。我离开任何使用ImageMagick的计算机一个星期,所以我只能概括地告诉你。从上面的纯黑白(无灰)图片开始,尝试:
convert image.png -morphology open disk:3 result.jpg
尝试使用open
,close
或erode
替换上面的dilate
字样。试用disk
,disk:3
disk:7
等等。