1

私はこの画像を持っています: ここに画像の説明を入力してください

この画像では、11個の形状があります(楕円のように見えます)。各形状の各ピクセルのRGBを見つけたい(形状の一部であるため、白いエッジ/境界を含む)。

それが助けになるなら、私はそれぞれの形の中心座標を持っています。

どうもありがとう!

4

2 に答える 2

2

ここにあなたの仕事を簡単にするコマンドがあります...

  1. 「スーパーベスト」が言ったように、コマンドで画像を塗りつぶします

    %% Example%%
    img = imread('coins.png');
    BW4 = im2bw(img );
    BW5 = imfill(BW4,'holes');
    imshow(BW4), figure, imshow(BW5);
    
  2. コマンド bwlabeln() を使用して、クラスターまたは形状の数を調べます。

    %% Example%%
     L = bwlabel(BW5);
     figure,imshow(L,[]);
    

L は、同じ形状に属するすべてのピクセルに対して同じ数の形状の数を示します。BW の連結要素のラベルを含む L。BW は任意のディメンションを持つことができます。LはBWと同じサイズです。L の要素は 0 以上の整数値です。0 のラベルが付いたピクセルは背景です。1 というラベルの付いたピクセルは 1 つのオブジェクトを構成し、2 というラベルの付いたピクセルは 2 番目のオブジェクトを構成します。

  1. 2 つの形状または領域があり、元の色またはグレー スケール値を次のように求めるとします。

    %% Example%%
    cods = find(L==1);
    Shape1(1:size(img,1),1:size(img,2))=0;
    Shape1(cods) = img(cods);
    %% Now shape1 is same size as img, but will have gray scale values at region1   locations only,you will get RGB valuse in shape1 image.. repeate it for as many shapes as you have in your image.
    

楽しいコーディングを...

于 2012-04-09T12:01:13.310 に答える
2

これは、質問を確認しているときに思いついたハッキーな解決策です。

  1. 他の質問で説明されているように、各形状を白で塗りつぶします。Matlabは形状を白で塗りつぶします。
  2. 図形の中心がまだあるので、ピンクなど、画像にない色で各図形をもう一度塗りつぶします。
  3. これで、関心のあるすべてのピクセル (形状に属するもの: エッジと内側) がピンク色になり、他のピクセルにはこの色はありません。
  4. これで、ピンク色のピクセルのリストを簡単に取得できます。

    foundPixels = find(img == pink); % pink holds the value for the pink color I used.

  5. これで、元の画像 ( ) でこれらのインデックスを使用してpixels = original(foundPixels);、必要なピクセルを取得できます。

于 2012-04-07T14:49:54.300 に答える