2011-06-11 38 views
2

我已經標記了一個圖像(使用bwlabel),之後,我用regionprops來獲得標記對象的偏心率。我現在想要做的是過濾每個標記的對象,其偏心率低於0.5。Matlab - 根據regionprops過濾標記的矩陣

到目前爲止,我已經能夠使用find來獲得符合條件的區域的數量,但我不知道如何使用它們來過濾原始標記的圖像。

例如:

labeledImage = bwlabel(originalImage); 
properties = regionprops(labeledImage, 'eccentricity'); 
eccentricities = cat(1, properties.Eccentricity); 

regions = find(eccentricities > 0.5); 
% now what? 

我試着用for循環來做到這一點,但它是緩慢的地獄,我敢肯定,必須有一個隱藏的MATLAB函數來做到這一點。

回答

4

如果你還在試圖解決這個問題,請看下面的例子:

BW = imread('text.png'); 

CC = bwconncomp(BW); 
L = labelmatrix(CC); 

props = regionprops(CC, 'eccentricity'); 
idx = ([props.Eccentricity] > 0.6); 

BW2 = ismember(L,find(idx)); %# filter components with Eccentricity>0.6 
BW3 = ismember(L,find(~idx)); %# filter components with Eccentricity<0.6 

subplot(131), imshow(BW) 
subplot(132), imshow(BW2) 
subplot(133), imshow(BW3) 

enter image description here

0

好吧,看起來功能ismember做了伎倆,但我相信你們知道更好的方法。