J'ai une image qui ressemble à celle ci-dessous:
J'essaie de trouver le rayon (ou le diamètre) du cercle. J'ai essayé d'utiliser la transformation circulaire de Hough (via matlab imfindcircles(bw,[rmin rmax],'ObjectPolarity','bright')
), et en s'adaptant à un cercle ou une ellipse (fonction maison qui fonctionne plutôt bien pour des données moins bruyantes, voir ci-dessous).
J'ai également essayé un traitement d'image pour obtenir un cercle plus clair, par exemple, voir ci-dessous:
se = strel('disk', 2);
bw = imdilate(bw, se);
bw = bwareaopen(bw,100000);
bw = edge(bw);
Cependant, lorsque j'alimente l'image traitée à l'une ou l'autre des techniques (ajustement de Hough et cercle \ ellipse), aucune d'entre elles ne parvient à détecter le cercle de manière décente.
Voici un extrait de code du chercheur de cercle que j'ai écrit (matlab) [row col] = find (bw); contour = bwtraceboundary (bw, ligne (1), col (1)], 'N', connectivité, num_points);
x = contour(:,2);
y = contour(:,1);
% solve for parameters a, b, and c in the least-squares sense by
% using the backslash operator
abc = [x y ones(length(x),1)] \ -(x.^2+y.^2);
a = abc(1); b = abc(2); c = abc(3);
% calculate the location of the center and the radius
xc = -a/2;
yc = -b/2;
radius = sqrt((xc^2+yc^2)-c);
Des approches alternatives seront appréciées ...