Diameter of Almost circular objects and degree of circularity

조회 수: 8 (최근 30일)
Jason 2023년 1월 17일
댓글: Jason 2023년 1월 17일
Hello, I am trying to measure the diameter of central white spot and the dark area.
I understand they perfect circles but I'd like to get a close estimation and also a measure of circularity (I believe by a ratio of perimeter^2/area).
I thought imfindcircles would work, I have tried with both a binarised image and just the raw image (12 bit Tiff)
The size of my image is 300x300 pixels.
This was my attempt, - but its failing to find any circles.
myImagesc(app,ax1,IM); %My version of ImageSc (i.e. force colormap gray)
%Binarize if required
% IM(IM<th)=0;
% IM(IM>=th)=1;
%Find Circles
[centers, radii, metric] = imfindcircles(IM,[15 400],'ObjectPolarity','dark') %I've also tried "bright"
viscircles(ax2,centers, radii,'EdgeColor','b');

채택된 답변

Image Analyst
Image Analyst 2023년 1월 17일
Just threshold, call imclearborder, and then regionprops, asking for EquivDiameter. Let me know if you can't figure it out.
  댓글 수: 5
Image Analyst
Image Analyst 2023년 1월 17일
So I take it that you want the white spot inside the black disc, but there may or may not be a white spot present, right?
Is there always just one bubble/drop inside the black disc? Is there a minimum size they/it will be? Like anything smaller than 100 pixels is noise? What I'd do is something like this
mask = grayImage > 128
mask = imclearborder(mask); % Get rid of surround.
mask = bwareafilt(mask, 1); % Take largest blob only.
mask = imfill(mask, 'holes'); % In case there are any black specks inside the white drop.
props = regionprops(mask, 'Centroid', 'EquivDiameter');
if ~isempty(props)
xCenter = props.Centroid(1);
yCenter = props.Centroid(2);
viscircles([xCenter, yCenter], props.EquivDiameter, 'Color', 'r');

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

추가 답변 (0개)




Community Treasure Hunt

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

Start Hunting!

Translated by