How to measure circularity??
古いコメントを表示
How to measure circularity ? What is wrong in this code?
CC=bwconncomp(BW); %BW binary image
labeled=labelmatrix(CC);
stats = regionprops(CC, 'all');
stats.circularity = ((stats.Perimeter) .^2 )./ (4*(pi*(stats.Area)))

採用された回答
その他の回答 (6 件)
Matt J
2014 年 12 月 21 日
0 投票
It might also be useful to check whether the Eccentricity and Solidity of a region are above a certain threshold.
6 件のコメント
Nisreen Sulayman
2014 年 12 月 21 日
Matt J
2014 年 12 月 21 日
Just display stats(i) to see the properties of the i-th component.
Nisreen Sulayman
2014 年 12 月 21 日
編集済み: Nisreen Sulayman
2014 年 12 月 21 日
Use your label matrix, e.g.,
imagesc(labelled==1)
Image Analyst
2014 年 12 月 22 日
You can look at my code in my answer where the blobs are labeled with their number in the first figure, and then each blob is cropped out to a separate image with the blob number in the title above the blob.
Nisreen Sulayman
2014 年 12 月 22 日
編集済み: Nisreen Sulayman
2014 年 12 月 23 日
Nisreen Sulayman
2015 年 1 月 19 日
0 投票
12 件のコメント
Image Analyst
2015 年 1 月 19 日
Looks okay. It will write to the command window, not a file. To write to Microsoft Word, you'll have to use ActiveX. Explain in more detail what "didn't work" means to you.
Nisreen Sulayman
2015 年 1 月 19 日
Image Analyst
2015 年 1 月 19 日
Make it easy for me to help you. Post the entire script and image. I'll wait for it.
Nisreen Sulayman
2015 年 1 月 19 日
編集済み: Nisreen Sulayman
2015 年 1 月 19 日
Image Analyst
2015 年 1 月 19 日
See fixed code, attached. It will find and report the widths of all blobs.

Nisreen Sulayman
2015 年 1 月 20 日
編集済み: Nisreen Sulayman
2015 年 1 月 20 日
Image Analyst
2015 年 1 月 20 日
1. Yes. 2 and 3. In fprintf() and sprintf(), you have format specifiers. When it sees a % symbol, it looks at the numbers and letter after it to decide how to display the variable. f means floating point, d means integer, and s means string. In %T.Lf, L is the number of numbers to the right of the decimal point. and T is the total width of the numbers to the left and right plus the decimal point itself, and any spaced needed to make the whole space for printing be T characters.
Nisreen Sulayman
2015 年 1 月 20 日
編集済み: Nisreen Sulayman
2015 年 1 月 20 日
Image Analyst
2015 年 1 月 20 日
You can calculate the circularities and then use ismember to extract them
labeledImage = bwlabel(binaryImage);
measurements = regionprops(labeledImage, 'Area', 'Perimeter');
allAreas = [measurements.Area];
allPerimeters = [measurements.Perimeter];
circularities = appPerimeters.^2 ./ (4*pi*allAreas);
roundIndexes = find(circularities < 3)
binaryImage = ismember(labeledImage, roundIndexes)>0;
roundMeasurements = regionprops(binaryImage, 'all');
Nisreen Sulayman
2015 年 1 月 21 日
編集済み: Nisreen Sulayman
2015 年 1 月 21 日
Image Analyst
2015 年 1 月 21 日
First segment the image to get a binary mask of that thing. Then mask it
red = grayImage;
red(mask) = 255;
green = grayImage;
green(mask) = 0;
blue = grayImage;
blue(mask) = 0;
rgbImage = cat(3, red, green, blue);
imshow(rgbImage);
Nisreen Sulayman
2015 年 1 月 22 日
Nisreen Sulayman
2015 年 1 月 29 日
編集済み: Nisreen Sulayman
2015 年 1 月 29 日
0 投票
7 件のコメント
Image Analyst
2015 年 1 月 29 日
I don't know what that means. Explain it.
Nisreen Sulayman
2015 年 1 月 30 日
編集済み: Nisreen Sulayman
2015 年 1 月 30 日
Image Analyst
2015 年 1 月 30 日
I don't use the Database Toolbox but you can look into it. Most people here I think just mean a folder of images when they talk about databases. You could analyze them and save the results of them into a mat file if you want. The database should be as big as you need it to be. Maybe 3 or 4 is big enough, but maybe you want more. I don't know what your plans are. Anyway, this sounds like it should be its own question since it's pretty different than your original question. Maybe you'll get more database programmers to answer. I am not a database programmer.
Nisreen Sulayman
2015 年 1 月 31 日
Image Analyst
2015 年 1 月 31 日
Yes, there is. You need to create a Receiver Operating Characteristic, or "ROC Curve". Read more about it in Wikipedia: http://en.wikipedia.org/wiki/Receiver_operating_characteristic
murk hassan memon
2018 年 4 月 4 日
stats.circularity = ((stats.Perimeter) .^2 )./ (4*(pi*(stats.Area))) i am getting an error of this sign ^ as such the error is too many input argument.. is there any other method to find the circularity ? if yes? then kindly help me out
Matt J
2018 年 4 月 4 日
@murk,
You have multiple objects in "stats" so you need to do something like,
result = ([stats.Perimeter] .^2 )./ (4*(pi*[stats.Area]))
Souhardya Roy
2018 年 7 月 6 日
0 投票
The formula is inverse of what is given.
2 件のコメント
yousra zafar
2019 年 11 月 19 日
can you share the code for finding circular objects . i am also working on aneurysm detection. any guidance from your side will he highly appreciated
Image Analyst
2019 年 11 月 19 日
yousra, check out Image Processing Articles on Aneurysms
yousra zafar
2019 年 11 月 21 日
0 投票
i,m unable to run the code text.m attcahed above, getting error : file not found , can you share with me the image C:\Users\Rose\Documents\Temporary\im.jpg
カテゴリ
ヘルプ センター および File Exchange で Display and Exploration についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





