What do the pixelIdxlist mean?
Show older comments
Hi, i used the bwconncomp in the matlab for an image. The resultant is a struct with 4 fields and the pixelIdxList field in that has size of 1x801 with some numbers in each column. What are those numbers actually? What do they signify? For e.g. what 98475, 98586 in CC{5,2} means?

Answers (2)
Hyeokjin Jho
on 18 Feb 2020
Let's say your image input for bwconncomp is BW. i.e.
CC = bwconncomp(BW);
Then CC.pixelIdxList{i} is linear indices of i-th identified component in BW.
You can index that component in the image BW using this value. For example
BW(CC.pixelIdxList{10}) = false;
will make 10th component in BW become false.
9 Comments
Sk
on 18 Feb 2020
Hyeokjin Jho
on 18 Feb 2020
Connected component can be multiple pixels (in fact, most of the time). Those indices are positions of all of those connected pixels.
Hyeokjin Jho
on 21 Feb 2020
Based on your code, Your purpose seems like you want to make every connected component larger than 1px become false. Is it true? or you want to collect all of the indices in each connected components into one array? What do you mean by "access the indices"?
I cannot catch your purpose clearly. Can you elaborate more?
Sk
on 24 Feb 2020
Walter Roberson
on 24 Feb 2020
Using length as a variable name is very likely to cause problems.
Sk
on 24 Feb 2020
Image Analyst
on 24 Feb 2020
Sk, yes you did when you did this:
length(x,i) = length(x(i));
You're using the length() function to take the length of x(i) (which is probably just 1 if x(i) is a scalar), and then putting that length value (1) into a 2-D matrix called "length", because, of course, you can't assign a function to a value. So what that did was to essentially overwrite the length() function with a new variable called length. So the next time the loop iterates, it won't call the length function but will instead try to get the element of the length matrix at the x(i)'th location.
Sk
on 24 Feb 2020
Image Analyst
on 21 Feb 2020
0 votes
Sk, are you trying to filter based on blob size? If so, check out bwareaopen() or bwareafilt().
3 Comments
Sk
on 24 Feb 2020
Image Analyst
on 24 Feb 2020
All areas are continuously connected to something, except for the sole case of isolated single pixels.
Post your image and indicate (like with arrows or outlines or something) which blobs are the ones you want to keep (the "connected contiously" ones), and which you want to exclude (the "not continously connected" ones).
Sk
on 24 Feb 2020
Categories
Find more on Region and Image Properties in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
