1

次のようなイメージがあります。

バイナリ画像

imshow(I)それは経由でプロットされI、論理行列です。これはここから入手できます: http://pastebin.com/qsxA0GXy

これらのオブジェクトは、ほとんどが大まかな円のようなものですが、約 3 倍の大きさのある種の楕円形になることもあります。

それらのオブジェクトの中心の座標を見つけたいのですが、推定だけです。推定値のみが必要で、高速なアルゴリズムが必要なため、循環ハフ変換を使用したくありません。

私の考えは次のとおりでした:各ピクセルをループし、それがtrue値の場合は、すべての隣接ピクセルを検索しtrue、計算してオブジェクトの中心を取得します

x = x_max - xmin;

y = y_max - ymin;

しかし、2つのネストされたforループを使用すると非常に遅いように見えるため、このアプローチは好きではありません。あなたが考えることができるより良いものはありますか?ありがとう!

4

2 に答える 2

2

これはかなり速いようです。ただし、どのようにスケーリングするかはわかりません。

L = bwlabel(I);
stats = regionprops(L,I,'Centroid');
于 2012-12-05T09:28:38.740 に答える
0

この回答で使用されている概念を試してください: https://stackoverflow.com/a/2242565/845528

私はそれを試しました(あなたが上で提供した画像を保存することによって。私はあなたが提供したリンクに行きませんでした)。それはうまくいくようです:

    Image = imread('im.jpg');
    dImage = im2double(Image);
    logicalImage = im2bw(dImage, 0.5);

    dilatedImage = bwmorph(logicalImage, 'shrink',Inf);
    [x,y] = find(dilatedImage);
于 2012-12-05T09:23:25.980 に答える