您可能更喜欢使用bsxfun的更快速和矢量化方法以及从bwlabel本身获得的信息.
注意:bsxfun是内存密集型的,但这正是使它更快的原因.因此,请注意以下代码中B1的大小.一旦达到系统设置的内存约束,此方法将变慢,但在此之前它提供了优于regionprops方法的加速.
码
[L,num] = bwlabel( Img );
counts = sum(bsxfun(@eq,L(:),1:num));
B1 = bsxfun(@eq,L,permute(find(counts>threshold),[1 3 2]));
NewImg = sum(B1,3)>0;
编辑1:接下来讨论bsxfun和regionprops方法之间比较的几个基准.
情况1
基准代码
Img = imread('coins.png');%%// This one is chosen as it is available in MATLAB image library
Img = im2bw(Img,0.4); %%// 0.4 seemed good to make enough blobs for this image
lb = bwlabel( Img );
threshold = 2000;
disp('--- With regionprops method:');
tic,out1 = regionprops_method1(Img,lb,threshold);toc
clear out1
disp('---- With bsxfun method:');
tic,out2 = bsxfun_method1(Im