是否有可能用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,包括类型和大小。