필터 지우기
필터 지우기

Circularity of an image

조회 수: 5 (최근 30일)
purti choudhary
purti choudhary 2014년 12월 2일
댓글: Image Analyst 2014년 12월 6일
I am trying to find circularity for my shape feature requirement in MRI image classification. I have used the matlab function REGIONPROPS to find area and perimeter and the circularity formula: 4*pi*area/(perimeter)^2.
My problem is i am getting perimeter as 0 value for many regions in an image. Then circularity will become infinite. I have attached a screenshot of perimeter values i am getting for a single image. Someone please suggest me how to calculate circularity in such case???

채택된 답변

Mohammad Abouali
Mohammad Abouali 2014년 12월 2일
편집: Mohammad Abouali 2014년 12월 2일
does it have to be circularity?
Can you replace circularity with the ratio between major/minor axis length?
  댓글 수: 5
Mohammad Abouali
Mohammad Abouali 2014년 12월 3일
The sizes are in pixels. So if your images don;t have the same spatial pixel size then 1pixel in first image could refer to 1meter, in the second image one pixel refers to 10meter (well the numbers are just examples).
So the sizes never come out exactly the same.
But why it is giving too many zeros. I don't know. I have to check the image and then perhaps I may find out.
purti choudhary
purti choudhary 2014년 12월 3일
This is one of the image for which i am calculating perimeter.
And permiter(97x1) matrix is likewise

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Image Analyst
Image Analyst 2014년 12월 3일
What is the area of the blobs that have zero perimeter? Is it 1? Like 1 pixel? If so, maybe you just don't want to consider those. You can use bwareaopen() to filter out tiny things. By the way, I use the inverse of your equation.
allAreas = [measurements.Area];
allPerimeters = [measurements.Perimeter];
circularities = allPerimeters .^ 2 ./ (4 * pi * allAreas);
Of course zero perimeter is not a problem there.
  댓글 수: 11
purti choudhary
purti choudhary 2014년 12월 6일
Thank you very much... This labelled image is a grayscale image??
Image Analyst
Image Analyst 2014년 12월 6일
It's an integer valued image. You can display it as a grayscale image if you want
imshow(labeledImage, []);
Or you can pseudocolor the blobs and show that:
% Assign labeled blobs rainbow colors.
coloredLabels = label2rgb (labeledImage, 'hsv', 'k', 'shuffle');
imshow(coloredLabels);

댓글을 달려면 로그인하십시오.

Community Treasure Hunt

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

Start Hunting!

Translated by