Mam obraz, który wygląda jak ten poniżej:
Próbuję znaleźć promień (lub średnicę) koła. Próbowałem użyć okrągłej transformacji Hougha (przez matlaba imfindcircles(bw,[rmin rmax],'ObjectPolarity','bright')
) i dopasowując się do koła lub elipsy (funkcja stworzona przez dom, która działa całkiem dobrze dla mniej hałaśliwych danych, patrz poniżej).
Próbowałem także przetwarzania obrazu, aby uzyskać wyraźniejszy okrąg, na przykład patrz poniżej:
se = strel('disk', 2);
bw = imdilate(bw, se);
bw = bwareaopen(bw,100000);
bw = edge(bw);
Jednak gdy przesyłam przetworzony obraz do dowolnej techniki (dopasowanie Hougha i elipsy koła) żadna z nich nie zdoła wykryć koła w przyzwoity sposób.
Oto fragment kodu wyszukiwarki okręgu, którą napisałem (matlab) [row col] = find (bw); kontur = bwtraceboundary (mc, wiersz (1), col (1)], 'N', connectivity, 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);
Docenione zostaną alternatywne podejścia ...