基本上我有二进制的3D图像蒙版,其中包含“1”,各种形状和大小的组遍布整个蒙版。在matlab中工作,我有工具允许我将其转换为矩阵,而我想要做的是通过矩阵和1的零点(即相邻的非零数字集合被包围0)如果该组的总大小小于给定数量的元素(比如30)。是否有预先存在的函数可以执行此操作,或者我是否需要参与内核等操作?
顺便说一下,我对Matlab还是比较陌生的,所以我真的很感谢任何以“for dummies”风格写的答案!非常感谢您提供任何帮助。
答案 0 :(得分:0)
幸运的是,Matlab具有以下功能:bwareaopen
maskWithOnlyBigObjects = bwareaopen(mask, 30);
这将消除小于30 1的1的所有连接组。请注意,默认情况下,bwareaopen
使用26个连接,即如果其中一个属于3D中的26个可能的邻居,即使只有角落正在触摸,它们也属于一个。如果两个1只能在体素的面部接触时属于一起,请使用
maskWithOnlyBigObjects = bwareaopen(mask, 30, conndef(6));