Matlab:基于组大小的矩阵中的零组非零元素

时间:2016-02-12 11:26:10

标签: matlab matrix

基本上我有二进制的3D图像蒙版,其中包含“1”,各种形状和大小的组遍布整个蒙版。在matlab中工作,我有工具允许我将其转换为矩阵,而我想要做的是通过矩阵和1的零点(即相邻的非零数字集合被包围0)如果该组的总大小小于给定数量的元素(比如30)。是否有预先存在的函数可以执行此操作,或者我是否需要参与内核等操作?

顺便说一下,我对Matlab还是比较陌生的,所以我真的很感谢任何以“for dummies”风格写的答案!非常感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:0)

幸运的是,Matlab具有以下功能:bwareaopen

maskWithOnlyBigObjects = bwareaopen(mask, 30);

这将消除小于30 1的1的所有连接组。请注意,默认情况下,bwareaopen使用26个连接,即如果其中一个属于3D中的26个可能的邻居,即使只有角落正在触摸,它们也属于一个。如果两个1只能在体素的面部接触时属于一起,请使用

maskWithOnlyBigObjects = bwareaopen(mask, 30, conndef(6));