是否有可能在3D矩阵中填充不使用Matlab完成孔的孔? 我试过imfill,但显然不完整的孔没有检测到孔。
提前致谢。
例如2D:
我有什么
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
答案 0 :(得分:2)
您可以尝试使用imclose。 Imclose实际上试图填补“空白”,但不是与imfill一样的全局方式 - 它只是一个非常局部的填充。
se = strel('disk',2);
imclose(M, se)
此代码就像您给出的示例中的魅力一样。因为矩阵很小,所以它实际上是填充它,但是一个更大的孔在imclose之后仍然需要填充。
我不知道它是否适用于您的矩阵中可能存在的任何类型的孔,特别是对于复杂的凹形。您可能必须使用结构元素strel,包括类型和大小。希望这会有所帮助。