附加的二进制文件是我现在面临的问题。我想填补黑色区域内的小白洞。我试图转换黑色和白色,然后使用imfill功能,问题是它只是填充所有白色区域,包括中间的大白色区域。任何人都可以帮我吗?谢谢! binary
我尝试了形态侵蚀,然后用se = strel('diamond',10)扩张dilated;它确实可以填补空洞,但也会分别改变白色和黑色的区域,这会影响结果。由于我将使用分水岭来分离星团(黑色),然后计算它们的数量和面积。我很困惑如何正确使用开启和关闭。
答案 0 :(得分:0)
您没有提及任何特定工具,因此我只是从命令行尝试使用 ImageMagick 。它安装在大多数Linux发行版上,可以免费下载到OSX和Windows上 - 它还有Python,Perl,.Net,PHP,节点,Ruby,Java绑定,我做的任何事情都可以在Matlab或OpenCV中完成。
基本上,我认为您需要先缩小图像以获得不错的效果。我试过这个:
convert holey.png -resize 10% -threshold 75% -median 3 \
-morphology erode:2 disk:1.5 \
-morphology dilate:2 disk:1.5 -resize 3872x2592! result.jpg
将尺寸减小到原始尺寸的10%,并将灰度像素阈值化,然后应用小的中值滤波器去除噪声。然后进行侵蚀,然后进行扩张并将图像重新缩放,将其保存为result.jpg
。
然后我制作了一个小GIF动画,通过运行来可视化效果并查看其实际效果:
convert -delay 100 holey.png result.jpg animated.gif
现在有一个更小,更易管理的白色blob,然后你可以运行“Blob Analysis”或“Connected Components”并删除下面的任何blob您选择的尺寸/面积阈值。
答案 1 :(得分:0)
问题是你只想填补黑暗区域内的洞。所以首先你必须找到黑色区域或删除白色区域(暂时)。
答案 2 :(得分:0)
谢谢你们的建议!我已经解决了,现在正在研究聚合的细分。但在此步骤之前,我需要将修改后的二进制图像屏蔽到初始RGB图像,并在几次操作后显示差异。