52 views (last 30 days)

Show older comments

KSSV
on 2 Mar 2021

I = imread('image.png') ;

I = rgb2gray(I) ;

[y,x] = find(~I) ;

% Get center

idx = boundary(x,y) ;

x = x(idx) ;

y = y(idx) ;

imshow(I)

hold on

plot(x,y,'r')

KSSV
on 4 Mar 2021

I would suggest you this:

I = imread('image.png') ;

I = rgb2gray(I) ;

[y,x] = find(~I) ;

% Get center

idx = boundary(x,y) ;

x = x(idx) ;

y = y(idx) ;

%% Get circle radius and centre ;

% select three points randomly on circle

idx = [10 100 150] ;

pt1 = [x(idx(1)) y(idx(1))] ;

pt2 = [x(idx(2)) y(idx(2))] ;

pt3 = [x(idx(3)) y(idx(3))] ;

[C, R] = calcCircle(pt1, pt2, pt3) ;

%% Draw circle

th = linspace(0,2*pi) ;

xc = C(1)+R*cos(th) ;

yc = C(2)+R*sin(th) ;

imshow(I)

hold on

plot(xc,yc,'r')

Refer the link https://in.mathworks.com/matlabcentral/fileexchange/19083-calccircle for the function calcircle.

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

Start Hunting!