我需要有效地实现Matlab的imfill(bw,holes)函数来填充二进制图像(0,1)中的“holes”。
二值图像表示为0和1s的2D矩阵,其中1表示白色(亮)区域,0表示黑色(暗)区域。
洞基本上是一个由“亮”区域包围的“暗”区域换句话说,0被1包围是一个“洞”洞的另一个定义是:一个黑暗区域(0),除非我们穿过某个明亮区域(1),否则无法通过四条边中的任何一条到达。边总是黑色(0)。
现在我需要找到洞(0被1包围)并填充那些洞(把0变成1)。
有没有可能的有效算法?
请帮忙。
提前谢谢。
例子:
您可以按照下面的链接进行示例:go to the bottom of the page and expand example: Fill Holes in a Binary Image
最佳答案
似乎简单的方法是:
从某个边缘点用背景值做“AA>”(在非填充背景边缘像素存在时重复)
使用泛光像素创建遮罩
除蒙上前景色外,其余均涂上