How to calculate solidity of different shapes

I have an image which contains different shapes:
I want to calculate the solidity of each shape individually and pick the one which has greatest solidity;
Can any one help me regarding this?

 Accepted Answer

Did you use regionprops() to get all of them? If so, then just sort
% Label the binary image.
labeledImage = bwlabel(binaryImage);
% Measure the solidity of all the blobs.
measurements = regionprops(labeledImage, 'Solidity');
% Sort in oder of decreasing solidity.
[sortedS, sortIndexes] = sort([measurements.Solidity], 'descend');
% Get the solidity of the most solid blob
highestSolidity = sortedS(1);
% Get the label of the most solid blob
labelWithHighestSolidity = sortIndexes(1);

12 Comments

Thank you so much for your time Sir!
naila
naila on 19 Sep 2013
Moved: DGM on 29 Dec 2023
Plz Sir I want to get the solidity of squared region at the image. But your code generates Fig having just one white pixel at the centre;
help plz
Image Analyst
Image Analyst on 19 Sep 2013
Moved: DGM on 29 Dec 2023
Do you have some way of getting the binary image of the blobs in the red rectangle? If so, post it, otherwise post the binary image itself.
naila
naila on 20 Sep 2013
Moved: DGM on 29 Dec 2023
This is the full Image Sir; I want to calculate solidity of all the blobs in the image and then pick up just that one which has higher solidity; and show just that blob, not the full image;
Thank you so much for your time;
naila
naila on 20 Sep 2013
Moved: DGM on 29 Dec 2023
This is the full Image Sir; I want to calculate solidity of all the blobs in the image and then pick up just that one which has higher solidity; and show just that blob, not the full image;
Thank you so much for your time;
naila
naila on 20 Sep 2013
Moved: DGM on 29 Dec 2023
naila
naila on 20 Sep 2013
Moved: DGM on 29 Dec 2023
Please Urgent;
Image Analyst
Image Analyst on 20 Sep 2013
Moved: DGM on 29 Dec 2023
Didn't my answer already do that? I presume you know how to call imread() - what else do you need?
naila
naila on 20 Sep 2013
Moved: DGM on 29 Dec 2023
Sir when I run the code, and show the image by imshow() it give me a fig just having one white pixel at the mid of the fig; I need the full largest blob
Image Analyst
Image Analyst on 20 Sep 2013
Moved: DGM on 29 Dec 2023
A single pixel will have maximum solidity - think about it. The largest blob will not necessarily have the highest solidity. What if the largest blob is a huge C shape? So do you want largest area? Highest Solidity? Or highest solidity for blobs bigger than a certain area? You need to define your criteria before you or I can write a program for it.
Image Analyst
Image Analyst on 20 Sep 2013
Moved: DGM on 29 Dec 2023
naila: See attached file and see if it does what you want.
naila
naila on 22 Sep 2013
Moved: DGM on 29 Dec 2023
Thank You very much Sir... This is all what I need...; Thanks for your time;

Sign in to comment.

More Answers (0)

Asked:

on 19 Sep 2013

Moved:

DGM
on 29 Dec 2023

Community Treasure Hunt

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

Start Hunting!