Ho un'immagine che assomiglia a quella qui sotto:
Sto cercando di trovare il raggio (o diametro) del cerchio. Ho provato a utilizzare la trasformazione circolare di Hough (tramite matlab imfindcircles(bw,[rmin rmax],'ObjectPolarity','bright')
) e adattandomi a un cerchio o un'ellisse (funzione fatta in casa che funziona abbastanza bene per i dati meno rumorosi, vedi sotto).
Ho anche provato un po 'di elaborazione delle immagini per ottenere un cerchio più chiaro, ad esempio, vedi sotto:
se = strel('disk', 2);
bw = imdilate(bw, se);
bw = bwareaopen(bw,100000);
bw = edge(bw);
Tuttavia, quando fornisco l'immagine elaborata a entrambe le tecniche (adattamento di Hough e circle \ ellisse) nessuna delle due riesce a rilevare il cerchio in modo decente.
Ecco uno snippet di codice del cercatore di cerchi che ho scritto (matlab) [riga col] = trova (bw); contour = bwtraceboundary (bw, row (1), col (1)], 'N', connettività, 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);
Saranno apprezzati approcci alternativi ...