image - ismember fails to find a number generated by bwlabel -


following post steve: http://blogs.mathworks.com/steve/2009/02/27/using-ismember-with-the-output-of-regionprops/

i wanted apply on simple case. here logical image have, has 3 objects:

enter image description here

this code used :

[l_t,n_t] = bwlabel(logical_image); iii = find(l_t == 2); bbb = ismember(l_t,iii); imshow(bbb); 

but getting in bbb empty matrix. i.e. logical image same size of original consisting entirely of 0.

n_t shows 3 objects found. max value of l_t 3. how come ismember fails find 2?

it doesn't work because iii list of indices (positions in l_t l_t == 2), , l_t number 1 3. not same doing in original example:

idx = find((100 <= area_values) & (area_values <= 1000)) 

here, area_values list taken regionprops of area of different regions in labelled image. has same length, n, number of regions (different values) in l. e.g. if there 10 areas in image , areas 1, 3, , 7 have areas in specified range output of idx [1 3 7].

this selects parts of l l 1, 3, or 7:

bw2 = ismember(l, idx); 

in case, iii list of pixel indices, not values. none of values 1, 2 or 3 (even looked ones equal 2), indices of first 3 pixels of image. therefore none of values in l_t match of values in iii.

if wanted image showing second object, enough:

bbb = l_t==2; imshow(bbb) 

Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -