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

时间:2015-08-13 15:01:12

标签: matlab fill

是否有可能在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

1 个答案:

答案 0 :(得分:2)

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

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

此代码就像您给出的示例中的魅力一样。因为矩阵很小,所以它实际上是填充它,但是一个更大的孔在imclose之后仍然需要填充。

我不知道它是否适用于您的矩阵中可能存在的任何类型的孔,特别是对于复杂的凹形。您可能必须使用结构元素strel,包括类型和大小。希望这会有所帮助。