I have a binary image, how can I count the balck pixels as a group??

2 vues (au cours des 30 derniers jours)
REZA
REZA le 30 Oct 2016
I process a rgb image to gray to binary and use filters to remove noise and get some specific black areas. Now I want to count the areas. How many are there? How can I do that? can anyone help me?

Réponse acceptée

Walter Roberson
Walter Roberson le 30 Oct 2016
Add a white border around the entire image. Now use regionprops() and ask for EulerNumber
"Returns a scalar that specifies the number of objects in the region minus the number of holes in those objects. "
The number of objects in the region would be 1 (all of the white part together as you have no isolated white areas), so the number you get out would be negative; take 1 minus the number to get the number of black regions.
Or you could invert the binary matrix. After that there would be a number of different approaches, including, for example, asking regionprops for any simple statistic such as Area, and then just counting the number of outputs you get
NumberOfBlackAreas = length( regionprops( ~YourBinaryMatrix, 'Area' ) );
  2 commentaires
REZA
REZA le 30 Oct 2016
Hi, thank you for your reply. Can you please explain a little with some code example...As I am new with matlab..
Walter Roberson
Walter Roberson le 30 Oct 2016
cman = imread('cameraman.tif');
YourBinaryImage = cman > 30;
NumberOfBlackAreas = length( regionprops( ~YourBinaryImage, 'Area' ) )

Connectez-vous pour commenter.

Plus de réponses (1)

Image Analyst
Image Analyst le 30 Oct 2016
You can get it by inverting your image and calling bwlabel:
[labeledImage, numRegions] = bwlabel(~binaryImage);
No need to call regionprops() just to get the count, though you might want to if you want to measure other things like areas.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by