用Matlab对三维矩阵的不完全孔进行填充



是否有可能用Matlab填充3D矩阵中不完整的孔?我试过填充,但显然不完整的孔没有被检测为孔。

提前感谢。

e。g in 2D:

what I have

 0 0 0 1 0 0 0
 0 0 0 0 1 0 0
 0 1 0 0 0 1 0
 0 0 1 0 1 0 0
 0 0 0 1 0 0 0

我想要的:

 0 0 0 1 0 0 0
 0 0 1 1 1 0 0
 0 1 1 1 1 1 0
 0 0 1 1 1 0 0
 0 0 0 1 0 0 0

您可以尝试使用imclose。Imclose实际上试图填补"空白",但与imfill的全局方式不同——它只是一个非常局部的填充。

se = strel('disk',2);
imclose(M, se)

这段代码在您给出的示例中非常有效。由于矩阵很小,它实际上填充了它,但一个更大的洞仍然需要在封闭后填充。

我不知道它是否适用于你的矩阵中可能存在的任何类型的孔,特别是复杂的凹形状。您可能需要使用结构元素strel,包括类型和大小。

最新更新