Tengo una imagen que se parece a la siguiente:
Estoy tratando de encontrar el radio (o diámetro) del círculo. Intenté usar la transformación circular de Hough (a través de Matlab imfindcircles(bw,[rmin rmax],'ObjectPolarity','bright')
), y al ajustarla a un círculo o una elipse (función hecha en casa que funciona bastante bien para datos menos ruidosos, ver más abajo).
También probé un procesamiento de imágenes para obtener un círculo más claro, por ejemplo, vea a continuación:
se = strel('disk', 2);
bw = imdilate(bw, se);
bw = bwareaopen(bw,100000);
bw = edge(bw);
Sin embargo, cuando introduzco la imagen procesada en cualquiera de las técnicas (ajuste de Hough y circle \ ellipse), ninguna de ellas logra detectar el círculo de manera decente.
Aquí hay un fragmento de código del buscador de círculos que escribí (matlab) [row col] = find (bw); contour = bwtraceboundary (bw, fila (1), col (1)], 'N', conectividad, 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);
Se apreciarán enfoques alternativos ...