Ich habe ein Bild, das wie das folgende aussieht:
Ich versuche den Radius (oder Durchmesser) des Kreises zu finden. Ich habe versucht, eine kreisförmige Hough-Transformation (über Matlabs imfindcircles(bw,[rmin rmax],'ObjectPolarity','bright')
) und durch Anpassen an einen Kreis oder eine Ellipse (hausgemachte Funktion, die für weniger verrauschte Daten ziemlich gut funktioniert, siehe unten) zu verwenden.
Ich habe auch einige Bildbearbeitungen versucht, um einen klareren Kreis zu erhalten, siehe unten:
se = strel('disk', 2);
bw = imdilate(bw, se);
bw = bwareaopen(bw,100000);
bw = edge(bw);
Wenn ich das verarbeitete Bild jedoch einer der beiden Techniken (Hough- und Kreis-Ellipsen-Anpassung) zuführe, gelingt es keinem von beiden, den Kreis auf angemessene Weise zu erkennen.
Hier ist ein Codeausschnitt des Kreisfinders, den ich geschrieben habe (matlab) [row col] = find (bw); Kontur = bwtraceboundary (bw, Zeile (1), Spalte (1)], 'N', Konnektivität, 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);
Alternative Ansätze werden geschätzt ...