I tried to find inner and outer diameter of an circle using this code but it didn't give me outputs images like below I've attached

4 views (last 30 days)
Here is the code % Read your image and binarize it I = imread('C:\Users\Rangika Mark\Desktop\WP_20171207_11_47_46_Selfie.jpg'); Igray = rgb2gray(I); BW = imbinarize(Igray); % Measure the outer radius BWout = ~BW; BWout = imfill(BWout,'holes'); statOuter = regionprops(BWout,{'EquivDiameter','Centroid'}); outerRadius = statOuter.EquivDiameter/2; % Measure the inner radius BWin = imclearborder(BW); BWin = imopen(BWin, strel('disk',5)); % Remove noise statInner = regionprops(BWin,{'EquivDiameter','Centroid'}) innerRadius = statInner.EquivDiameter/2; % Show the result figure imshow(I) hold on viscircles(statOuter.Centroid, outerRadius,'Color','r') viscircles(statInner.Centroid, innerRadius,'Color','r')

Accepted Answer

Akira Agata
Akira Agata on 7 Dec 2017
In this case, you should pick up the region, that has maximum diameter, from the output of regionprops function. Based on your original code, I have slightly modified to do that.
I = imread('8122bCXHqPL._SY463_.jpg');
Igray = rgb2gray(I);
BW = imbinarize(Igray);
% Measure the outer radius
BWout = ~BW;
BWout = imfill(BWout,'holes');
statOuter = struct2table(regionprops(BWout,{'MajorAxisLength','Centroid'}));
[~,idxOuter] = max(statOuter.MajorAxisLength);
outerRadius = statOuter.MajorAxisLength(idxOuter)/2;
% Measure the inner radius
BWin = imclearborder(BW);
BWin = imopen(BWin, strel('disk',5));
statInner = struct2table(regionprops(BWin,{'MajorAxisLength','Centroid'}));
[~,idxInner] = max(statInner.MajorAxisLength);
innerRadius = statInner.MajorAxisLength(idxInner)/2;
% Show the result
figure
imshow(I)
hold on
viscircles(statOuter.Centroid(idxOuter,:), outerRadius,'Color','r')
viscircles(statInner.Centroid(idxInner,:), innerRadius,'Color','r')

More Answers (0)

Categories

Find more on Image Processing Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!