2016-02-12 81 views
-1

本質上,我有二進制3D圖像蒙版,其中的「1」在其中以各種形狀和尺寸分佈在整個蒙版中。在matlab中工作,我有一些工具可以讓我把它轉換成矩陣,我想要做的是通過矩陣和1的零點(也就是相鄰的非零數字集合,它們被0),如果該組的總大小小於給定數量的元素(比如30)。有沒有預先存在的函數可以做到這一點,或者我需要參與內核等?另外,我對於Matlab還是比較新的,所以如果給出的答案是「傻瓜式」的風格,那麼真的很感謝!非常感謝任何幫助。Matlab:基於組大小的矩陣中的非零元素的零組

回答

0

幸運的是,Matlab具有該功能:bwareaopen

maskWithOnlyBigObjects = bwareaopen(mask, 30); 

這將消除1的所有連接的組是小於30 1的。請注意,默認情況下,bwareaopen使用26連通性,即,即使只有角落觸摸,如果其中一個屬於3D中26個可能的鄰居,則兩個1屬於一起。如果兩個1只能屬於一起,如果體素的面觸摸,請使用

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

這已完美運行。非常感謝回覆! – Heg