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

digital image processingfilterImage Processing Toolboximage segmentation

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?

Best Answer

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' ) );