次のような画像があります。

円の半径(または直径)を見つけようとしています。(matlab'sを介して)円形のハフ変換を使用imfindcircles(bw,[rmin rmax],'ObjectPolarity','bright')して、円または楕円(ノイズの少ないデータで非常にうまく機能する自家製の関数、以下を参照)に適合させてみました。
また、より明確な円を得るためにいくつかの画像処理を試しました。たとえば、以下を参照してください。
se = strel('disk', 2);
bw = imdilate(bw, se);
bw = bwareaopen(bw,100000); 
bw =  edge(bw); 

ただし、処理された画像をいずれかの手法(ハフと円\楕円のフィッティング)にフィードすると、どちらも適切な方法で円を検出できません。
これが、私が書いたサークルファインダーのコードスニペットです(matlab)[row col] = find(bw); contour = bwtraceboundary(bw、row(1)、col(1)]、 'N'、接続性、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);
代替アプローチが高く評価されます...
 
 
 
 


